扩展的密钥管理
随着法规遵从性需求的不断增长以及对数据隐私的整体关注,越来越多的组织将加密用作提供深层防御解决方案的手段。随着组织越来越多地使用加密和密钥来保护数据,密钥管理也变得更加复杂。一些高安全性数据库要使用数千个密钥,并且必须部署一个系统来存储、注销和重新生成这些密钥。而且,应该将这些密钥与数据分开存储以增强安全性。
SQL Server 2008 为第三方供应商的使用公开了加密功能。这些解决方案可以与 SQL Server 2005 和 SQL Server 2008 数据库无缝地一起工作并提供了企业级专用密钥管理。这将密钥管理工作负载从 SQL Server 转移到了专用密钥管理系统。
SQL Server 2008 中扩展的密钥管理还支持使用 HSM 提供密钥与数据的物理分离。
代码模块签名
在 SQL Server 中提供加密的一个好处就是它提供了使用证书对代码模块(存储过程、函数、触发器和事件通知)进行数字签名的能力。这提供了对数据库表和其他对象访问的更细粒度的控制。像加密数据一样,您使用证书中的私钥签名代码。其结果是在该经过签名的代码模块中使用的表只能通过该代码访问并且不允许在代码模块之外。换句话说,只能使用已经用于签名该模块的证书获得对该表的访问。
对于存储过程而言,效果也是一样的。例如,如果有完整的所有权链,您可以谨慎控制哪些用户获得该过程的 EXECUTE 权限,并且可以拒绝他们对基础表的直接访问。但这在过程的所有权链被破坏或执行动态 SQL 时不起作用,此时要求执行该过程的用户拥有对基础表的权限。实现同样效果的另一种方式是使用 EXECUTE AS,但这改变了过程执行的安全上下文。这可能不是理想的情况,例如,需要在表中记录实际使该过程运行的用户时(没有要求将用户名作为过程的参数)。
签名代码模块的另一个好处就是防止对代码模块作出未经授权的更改。像其他经过数字签名的文档一样,在代码改变时,证书将失效。代码不在证书上下文中执行,因此任何被提供了证书访问权限的对象都将不可访问。
要继续访问它们,需要创建一个证书,将该证书与新用户关联并使用该证书签名过程。授予该用户执行该存储过程必要的任何权限。实质上,已经将该用户作为次级身份标识添加到了存储过程安全上下文中。然后,授予需要执行该过程的任何用户或角色执行权限。以下代码展示了这些步骤。假设您想要签名 mySchema.GetSecretStuff 过程,并且所有引用的对象已经存在于数据库中:
CREATE CERTIFICATE certCodeSigning ENCRYPTION BY PASSWORD = ‘cJI%V4!axnJXfLC’ WITH SUBJECT = ‘Code signing certificate’ GO — Sign the stored procedure ADD SIGNATURE TO mySchema.GetSecretStuff BY CERTIFICATE certCodeSigning WITH PASSWORD = ‘cJI%V4!axnJXfLC’ GO — Map a user to the certificate CREATE USER certUser FOR CERTIFICATE certCodeSigning GO –Assign SELECT permissions to new certUser GRANT SELECT ON SocialSecurity TO certUser GO — Grant execute permission to the user who will run the code GRANT EXECUTE ON mySchema.GetSecretStuff TO ProcedureUser GO |
现在只有明确授予对该存储过程具有 EXECUTE 权限的用户能够访问该表的数据。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。
-
如何在Azure部署时选择合适的SQL Server?
想要在Azure上运行SQL Server,企业一般会面临两种选择:在Azure虚拟机上安装SQL Server或使用Azure SQL Database。
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。