Sql server 2008 sql server中的数据库列加密?

Sql server 2008 sql server中的数据库列加密?,sql-server-2008,encryption,encryption-symmetric,Sql Server 2008,Encryption,Encryption Symmetric,在我的数据库中,我使用了使用对称密钥的数据库列加密。我遵循了这个教程。它使用对称密钥,其他人看不到它。但是数据库管理员可以通过执行调用对称密钥的查询来查看加密列 USE EncryptTest GO OPEN SYMMETRIC KEY TestTableKey DECRYPTION BY CERTIFICATE EncryptTestCert SELECT CONVERT(VARCHAR(50),DECRYPTBYKEY(EncryptSecondCol)) AS DecryptSecondC

在我的数据库中,我使用了使用对称密钥的数据库列加密。我遵循了这个教程。它使用对称密钥,其他人看不到它。但是数据库管理员可以通过执行调用对称密钥的查询来查看加密列

USE EncryptTest
GO
OPEN SYMMETRIC KEY TestTableKey DECRYPTION
BY CERTIFICATE EncryptTestCert
SELECT CONVERT(VARCHAR(50),DECRYPTBYKEY(EncryptSecondCol)) AS DecryptSecondCol
FROM TestTable
GO

我需要在数据库级别和数据库管理员加密也不能解密列。数据库级加密是否可行?

如果您不希望该实例上的sysadmin角色成员DBA有权访问密钥,则不能允许数据库进行加密

即使您尝试使用的密码选项,DBA也可以使用探查器查看SQL语句中的密码。DBA当然可以访问主密钥(并且可能已经有了主密钥的备份)

如果要对DBA隐藏数据,则需要让应用程序进行加密


或者,您可以将DBA所保护的数据托付给他们。

自提出此问题以来,SQL Server 2016已经发布,Enterprise Edition包含一个名为Always Encrypted的功能,该功能在客户端驱动程序中使用证书加密执行加密的服务器上的列加密密钥。我建议将“客户机”放在像IIS这样的中间件服务器上,以便更好地保护证书

DBA无法实现的第二种加密解决方案是引入可扩展密钥管理系统。对这一点的支持也是一项仅限企业使用的功能。可扩展密钥管理系统是一个单独的扩展板或与SQL Server接口的系统,用于卸载可由DBA以外的团队管理的所有密钥管理和加密处理


第三,您可以设计一个解决方案,其中包括删除证书的私钥,并将其放在DBA无法访问的位置。如果从加密层次结构中的证书中删除私钥,则只能对数据进行加密

但只要密钥和证书都在同一个数据库服务器中,任何访问服务器的人都可以解密数据。那么保安在哪里?