sql-server - 了解 SQL Server 加密(通过密码)?

标签 sql-server sql-server-2008 security encryption

一家公司需要存储敏感数据。请我们现在不要谈论证书。

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...) 

一切都好。

问题:

  1. 当程序员打开对称 key 时,他必须知道密码。我认为程序员不应该知道密码。如何解决这个问题?

  2. 如果 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/

相关文章:

php - session_start()、ob_start() 和安全问题

php - 是否可以将完整记录(整行)连接到 MySQL 中的一列中?如何?

asp.net-mvc - 如何从 .NET 应用程序创建全文搜索索引或目录?

sql-server-2008 - xp_cmdshell 在被调用的 exe 退出后挂起

sql-server-2008 - 快速将生产数据库复制到开发环境(SQL Server)

iphone - 将 iOS 应用程序请求签名到服务器以防止垃圾邮件

sql - in 子句的表值参数比 in 子句简单

mysql - 模拟 row_number() 的此 mysql 查询的 MSSQL 等效项

sql - 在保留原始主键且无需手动更新的情况下交换 MS SQLServer 中的两行

linux - 在 Linux (CentOS6) 中显示攻击我的服务器的 IP 列表