我是數據庫加密的新手。我們需要加密顯示敏感信息的各種表格中的一些列。我們遇到的問題是,訪問數據庫或其證書和對稱密鑰(甚至不是dbas)的任何人都不應該看到數據,只有查詢數據庫中數據的應用程序的某些用戶才能看到這些信息。SQL Server:如何限制訪問加密列,甚至從DBA?
所以我們想出了這一點:
- 與加密列
由證書保護的所有按鍵,以及訪問這些證書的存儲過程的每個表創建1個對稱密鑰現在已與定義:
OPEN SYMMETRIC KEY Key_SalaryTable DECRYPTION BY CERTIFICATE SystemCertificate WITH PASSWORD = 'password';
(這意味着針對其用於打開01的證書的密碼是硬編碼到存儲過程)
但是還有一個問題,任何數據庫管理員可以只查看存儲過程或調用存儲過程直接知道如何打開鍵查看工資表
即使如果我們限制每個用戶對存儲過程的訪問權限,dba就可以輕鬆地覆蓋並提取信息,然後再次設置限制,並且沒有人會知道信息已被泄露。
有沒有人有更好的解決方案?
您需要將密碼保存到你的'Key_SalaryTable'您的應用程序不上數據庫本身,並將其作爲參數傳遞給存儲過程。 – wdosanjos
但我認爲我們不能將密碼作爲參數傳遞到存儲過程,除非我們將其更改爲動態。請參閱 http://connect.microsoft.com/SQLServer/feedback/details/369270/open-symmetric-master-key-password-parameterization –
請參閱:無法將密鑰傳遞到存儲過程http:// social .msdn.microsoft.com /論壇/ zh-CN/439d57c6-4f0b-4590-991b-97d6881409b3 /問題開幕對稱密鑰與傳遞密碼?論壇= sqlsecurity –