探讨SQL Server 2005的安全策略

您当前的位置:   首页 > 首页 > 解决方案
探讨SQL Server 2005的安全策略
发布时间:2026-07-13 11:49:52

一、简介

认证是你成功存取SQL Server的第一步。下图1展示了这种安全概念背后的相应模型。

在一个用户被SQL Server成功地认证后,接下来进行的是授权过程以决定该用户在数据库上有哪些权限。在这一方面,SQL Server 2005又增加了两个新特性:

探讨SQL Server 2005的安全策略

当你在某一应用程序中使用密码学技术时,你必须设法对密钥(或是一非对称算法的私人密钥或是一对称算法的共享密钥)进行管理。SQL Server 2005提供了两个选项来管理用户密钥:
用户自己管理密钥
由SQL Server为你管理密钥
当你自己管理密钥时,SQL Server用存在于数据库中的一给定口令字来存储对称密钥,这时你必须把该口令字保存在一个秘密的地方。而当由SQL Server来替你管理密钥时,它使用服务主键和数据库主键技术。图4展示了这一概念背后的思想。

图4.SQL Server 2005中的服务和数据库主键

正如你所见,这个服务主键处于服务器级别上。该键在SQL Server安装过程中被创建并且通过数据保护API(DPAPI)保护起来。用几个T-SQL语句,你就能把服务主键复制到一个文件中并能够从文件中恢复回去。
数据库主键处于数据库级上并且必须通过administrator来显式地创建。可以通过口令或服务主键来对该主键进行加密。列表3说明了如何创建数据库主键:
列表3

CREATE MASTER KEY ENCRYPTION BY PASSWORD='p@ssw0rd1'
一旦你创建了数据库主键,你就拥有了下列选项:
用对称密钥加密
用非对称密钥加密
用证书加密
你可以用T-SQL语句“CREATE SYMMETRIC KEY”来创建一对称密钥。这样的加密是通过一存储在表sys.symmetric_keys中的口令字或数据库主键进行的。为了使用一对称密钥,你必须先用语句OPEN KEY(见图5)打开它(这包括密钥的解密),之后,你就可以把该密钥用于你自己的加密目的。
 
图5.用对称密钥进行加密

探讨SQL Server 2005的安全策略

对称密钥的优点在于它的高性能—它大约比同样的非对称密钥快1,000到10,000倍。缺点是加密和解密都使用一把密钥,而且双方都必须知道该密钥。你可以用语句“CREATE ASYMMETRIC KEY”来创建一非对称密钥。这样的密钥还可以通过一口令字或数据库主键来加密。列表4告诉你如何创建一非对称密钥:

列表4

--用口令加密
CREATE ASYMMETRIC KEY MyKeyName AUTHORIZATION User1
WITH ALGORITHM = RSA_512
ENCRYPTED BY PASSWORD = 'p@ssw0rd1'
--用数据库主键加密
CREATE ASYMMETRIC KEY MyKeyName AUTHORIZATION User1
WITH ALGORITHM = RSA_512

探讨SQL Server 2005的安全策略

一非对称密钥总是被存储在表sys.asymmetric_keys中。在你创建该密钥后,你能使用函数EncryptByAsmKey来加密数据而用DecryptByAsmKey来解密被加密的数据。列表5展示了这两个函数的使用:
列表5

DECLARE @EncryptedStuff varchar(1000)
SELECT @EncryptedStuff = EncryptByAsmKey(AsymKey_ID('MyKeyName'),
'My secret message')
SELECT @EncrytedStuff
SELECT CAST(DecryptByAsmKey(AsymKey_ID('MyKeyName'), EncryptedStuff)
AS VARCHAR)

最后,你还可以使用证书来加密数据,或者是一个现有证书—把它导入进数据库服务器中即可或是一个通过T-SQL语句“CREATE CERTIFICATE”创建的新证书。一个证书本身也能通过一口令字或通过数据库主键被加密。列表6显示出这两种可能性:

探讨SQL Server 2005的安全策略

-- 用口令加密
CREATE CERTIFICATE MyCertificateName AUTHORIZATION User1
WITH Subject 'My Subject',
EXPIRY_DATE = '12/31/2006',
ENCRYPTION_PASSWORD = 'p@ssw0rd1'
-- 用数据库主键加密
CREATE CERTIFICATE MyCertificateName AUTHORIZATION User1
WITH Subject 'My Subject'
五、 小结
本文通过一些片断示例,分析了SQL Server 2005在安全方面提供的新功能。尤其应注意到,它在密码功能上作了很大改进。SQL Server 2005将更加成熟起来并在大型企业开发领域发挥重要作用。