首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql server中的数据库列加密?

sql server中的数据库列加密?
EN

Stack Overflow用户
提问于 2014-03-27 14:21:06
回答 2查看 545关注 0票数 1

在我的数据库中,我使用了使用对称密钥的数据库列加密。我遵循了这个教程http://blog.sqlauthority.com/2009/04/28/sql-server-introduction-to-sql-server-encryption-and-symmetric-key-encryption-tutorial-with-script/。它使用对称密钥,对其他人不可见。但是数据库管理员可以通过执行调用对称密钥的查询来查看加密列。

代码语言:javascript
复制
USE EncryptTest
GO
OPEN SYMMETRIC KEY TestTableKey DECRYPTION
BY CERTIFICATE EncryptTestCert
SELECT CONVERT(VARCHAR(50),DECRYPTBYKEY(EncryptSecondCol)) AS DecryptSecondCol
FROM TestTable
GO

我需要一个数据库级别的加密和数据库管理员也应该不能解密的列。在数据库级别加密是可能的吗?

EN

回答 2

Stack Overflow用户

发布于 2014-04-06 13:46:25

如果您不希望作为该实例上的sysadmin角色成员的DBA能够访问密钥,那么就不能允许数据库进行加密。

即使您尝试使用CREATE SYMMETRIC KEY的PASSWORD选项,数据库管理员也可以使用事件探查器查看SQL语句中的密码。DBA当然可以访问主密钥(并且可能已经有了它的备份)。

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

或者,您可以信任您的DBA来处理他们所保护的数据。

票数 0
EN

Stack Overflow用户

发布于 2016-09-03 00:46:24

自从提出这个问题以来,SQL Server 2016已经发布,企业版包含一个称为Always Encrypted的功能,该功能是通过客户端驱动程序中的证书设计的,该证书在执行加密的服务器上加密列加密密钥。我建议将“客户端”放在像IIS这样的中间件服务器上,用于网站和web服务,在那里证书可以得到更好的保护。

DBA无法处理的第二种加密解决方案是引入可扩展密钥管理系统。对此的支持也是仅限企业的特性。可扩展密钥管理系统是与SQL Server连接的独立扩展板或系统,用于卸载所有密钥管理和加密处理,这些密钥管理和加密处理可以由不同于DBA的团队进行管理。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22679781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档