探讨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将更加成熟起来并在大型企业开发领域发挥重要作用。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接