数据库管理:SQL Server 2008安全性探讨
Ruby 发表于:12年09月06日 11:18 [转载] DOIT.com.cn
可扩展的密钥管理
SQL Server 2008中一项最重要的新功能是可扩展的密钥管理EKM,Extensible Key Management,它使用Microsoft Cryptographic API,MSCAPI在SQL Server 2008环境的外部生成和存储用于数据和密钥加密的加密密钥。这通常通过使用HSM,Harware Security Model,硬件安全模块实现,HSM供应商可创建一个与MSCAPI连接的提供程序,提供一部分HSM功能给SQL Server 2008和其他利用MSCAPI的应用程序,遗憾的是,由于MSCAPI用作HSM与SQL Server之间的中间层,它无法将HSM的所有功能提供给SQL Server。
为了使用EKM,必须首先在服务器上启用它。它默认是关闭的,但可通过sp_configure命令打开。由于启用EKM是高级功能,因此必须制定shwo advanced配置,下面的实例展示了如何为服务器打开EKM:
- sp_configure 'show advanced',1; GO
- RECONFIGURE
- GO sp_configure 'EKM provider enabled',1; GO
- RECONFIGURE
- GO
在启用了EKM后,现在可以在HSM模块、智能卡或USB设备上存储加密密钥。不管何时使用存储在这些设备上的密钥加密数据,要解密数据,必须连接上这些设备。这颗防止未授权的用户将数据库文件复制并放至欺骗性服务器,从而访问所有秘密数据。
对称密钥
如前所述,对称密钥提供了一个用于加密大量数据的有效模型。使用同样的密钥来加密和解密可以把资源开销降低到最低,生成对称密钥的语法:
- CREATE SYMMETRIC KEY name [AUTHORIZATION owner] [FROM PROVIDER] providername WITH options ENCRYPTION BY mechanism
下面的例子创建了一个名为SalesKey1的新的对称密钥,该密钥使用的是192为的3DES(3KEY)算法:
- USE AdventureWorks2008 GO
- --Create Symmetric Key
- CREATE SYMMETRIC KEY SalesKey1
- WITH ALGORITHM=TRIPLE_DES_3KEY,
- KEY_SOURCE='The quick brown fox jumped over the lazy dog',
- IDENTITY_VALUE='FoxAndHound'
- ENCRYPTION BY PASSWORD='9348hsxasnA@B'; GO
可以使用ALTER SYMMETRIC KEY语句添加或删除用于加密密钥的方法,也可以使用DROP SYMMETRIC KEY语句删除对称密钥。在这个例子里,使用之前在数据库用户中创建的SalesCert证书来加密对称密钥,然后删除前例中的密码加密
- --Open the symmetric key
- OPEN SYMMETRIC KEY SalesKey1 DECRYPTION BY PASSWORD='9348hsxasnA@B'
- --Add encryption using the certificate created earlier
- ALTER SYMMETRIC KEY SalesKey1 ADD ENCRYPTION BY CERTIFICATE SalesCert --Remove the password encryption
- LATER SYMMETRIC KEY SalesKey1 DROP ENCRYPTION BY PASSWORD='9348hsxasnA@B'
- --Close the symmetric key
- CLOSE SYMMETRIC KEY SalesKey1