WEB开发网
开发学院数据库MSSQL Server 探讨SQL Server 2005的安全策略 阅读

探讨SQL Server 2005的安全策略

 2007-05-15 09:33:26 来源:WEB开发网   
核心提示: 列表3CREATE MASTER KEY ENCRYPTION BY PASSWORD='p@ssw0rd1'一旦你创建了数据库主键,你就拥有了下列选项:用对称密钥加密用非对称密钥加密用证书加密你可以用T-SQL语句“CREATE SYMMETRIC KEY&r

列表3

CREATE MASTER KEY ENCRYPTION BY PASSWORD='p@ssw0rd1'

一旦你创建了数据库主键,你就拥有了下列选项:

用对称密钥加密

用非对称密钥加密

用证书加密

你可以用T-SQL语句“CREATE SYMMETRIC KEY”来创建一对称密钥。这样的加密是通过一存储在表sys.symmetric_keys中的口令字或数据库主键进行的。为了使用一对称密钥,你必须先用语句OPEN KEY(见图5)打开它(这包括密钥的解密),之后,你就可以把该密钥用于你自己的加密目的。

图5.用对称密钥进行加密

对称密钥的优点在于它的高性能—它大约比同样的非对称密钥快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

一非对称密钥总是被存储在表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显示出这两种可能性:

-- 用口令加密
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将更加成熟起来并在大型企业开发领域发挥重要作用。

上一页  1 2 3 4 5 

Tags:探讨 SQL Server

编辑录入:coldstar [复制链接] [打 印]
赞助商链接