我有一个三部分问题,解决了SQL Server 2008 R2中的SYMMETRIC KEY。
仅供参考,我们使用的是SQL Server 2008 R2 Standard并且没有TDE的优势。 :(
感谢您的回复! :)
答案 0 :(得分:1)
加密通常通过控制加密层次结构来控制,而不是(仅)通过访问控制来控制。换句话说,用户可以通过知道解密/加密密钥(保护密钥的密码,具体而言)来加密和解密数据。所有好的加密方案都使用key hierarchy。
是典型的简单层次结构您还可以对使用的证书添加显式授予/拒绝/撤销权限,请参阅GRANT Certificates Permissions,但这不能替代知道证书加密密码密码。现在回到你的问题:
如何使用SYMMETRIC KEY限制一个帐户才能访问ENCRYPT / DECRYPT的功能
该功能应该应用于加密对称密钥的证书,而不是对称密钥本身。通过此级别的间接,您可以为每个访问数据的用户创建证书,并让每个用户只知道自己的访问密码。撤销访问权限就像删除该特定用户的证书一样简单,不会影响任何其他用户的访问权限。添加新用户意味着添加新证书并将此新证书的加密添加到加密数据的对称密钥,从而实际上授予对数据的访问权限。由于社交原因,共享访问密码的用户的替代方案在实践中永远不会起作用。
我是否可以使用触发器来更新需要加密的列,因为它是使用上面的帐户和SYMMETRIC KEY插入的
理想情况下,应用程序层应调用存储过程来操作在插入之前显式加密数据的数据。您可以使用INSTEAD OF triggers来推送一个穷人“透明”的解决方案。计算列可以公开解密数据,它将向所有未正确打开解密证书的用户(会话)显示NULL。
键必须旋转并更改
您可以轮换加密对称密钥的证书,而不是对称密钥本身。对称密钥也应该定期更改但不要进行转换,只需添加一个新的对称密钥并开始使用它来获取新数据和更新旧数据,以便限制暴力范围并减少生日攻击概率。理由是重新加密静态数据通常非常昂贵。大多数加密方案在加密层次结构中旋转一个更高的密钥(即上面提到的证书)而不是用于加密数据的实际对称密钥。