一家公司需要存储敏感数据。请我们现在不要谈论证书。
DBA 执行以下操作:
CREATE SYMMETRIC KEY SecureSymmetricKey1
WITH ALGORITHM = DESX
ENCRYPTION BY PASSWORD = N'blabla';
程序员想要加密数据并执行以下操作:
-- open key
OPEN SYMMETRIC KEY SecureSymmetricKey1
DECRYPTION BY PASSWORD = N'blabla'
-- actual encrpyt
DECLARE @encrypted_str VARBINARY(MAX)
SET @encrypted_str = EncryptByKey(Key_GUID('SecureSymmetricKey1'),'my data');
另一位程序员想要读取数据,所以他这样做了:
DECLARE @decrypted_str VARBINARY(MAX)
SET @decrypted_str = DecryptByKey(...encrypted_str...)
一切都好。
问题:
当程序员打开对称 key 时,他必须知道密码。我认为程序员不应该知道密码。如何解决这个问题?
如果 GOD 黑客获得了整个
.bak
文件,并且他在自己的家用计算机上恢复了备份 - 他可以查看其中一位程序员编写的 SP,并看到密码。然后黑客可以做:打开对称 key SecureSymmetricKey1 通过密码解密 = N'blabla'
我错过了什么?
感谢您的帮助。
最佳答案
当有 encryption in SQL Server 时,您是否需要这样做?您可以在所有内容上打开或逐列打开。
如果您想走自己的路,您可以在创建/更改时使用加密来创建您的程序。这将阻止人们在恢复时或之前从数据库中提取逻辑。
Create Procedure enc.prMyProcedure With Encryption
as...
关于sql-server - 了解 SQL Server 加密(通过密码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13562632/