内容摘要:SQL Server 2005一个令人激动的特性是内置了加密的功能。在这个新版的SQL Server中,开发团队直接在T-SQL中加入了加密工具、证书创建和密钥管理的功能。对于因为法律要求或商业需求而需要加密表中的数据的人来说,这是一个好礼物。对于犹豫是否用加密来保证数据安全的人来说,做决定也更容易了。这篇文章介绍新的加密功能是怎么工作,怎么使用。
象服务主密钥一样,你可以备份和恢复数据库主密钥。使用BACKUP MASTER KEY备份数据库主密钥。语法类似于备份服务主密钥:
BACKUP MASTER KEY TO FILE = 'path_to_file'
ENCRYPTION BY PASSWORD = 'password'
恢复数据库主密钥使用RESTORE MASTER KEY语句,它需要使用DECRYPTION BY PASSWORD子句提供备份时指定的加密密码,还要使用ENCRYPTION BY PASSWORD子句,SQL Server使用它提供的密码来加密数据库主密钥之后保存在数据库中。
RESTORE MASTER KEY FROM FILE = 'path_to_file'
DECRYPTION BY PASSWORD = 'password'
ENCRYPTION BY PASSWORD = 'password'
[ FORCE ]
同样,FORCE表示你将忽略在解密过程中的错误。
建议你在创建了数据库主密钥之后立即备份数据库主密钥,并把它保存到一个安全的地方。同样,使用FORCE语句可能导致已加密数据的丢失。
要删除数据库主密钥,使用DROP MASTER KEY语句,它删除当前数据库的主密钥。在执行之前,确定你在正确的数据库上下文中。
1.3 自动密钥管理
当创建数据库主密钥时,它被使用提供的密码加密然后被保存到当前数据库中。同时,它被使用服务主密钥加密并保存到master数据库中。这份保存的数据库主密钥允许服务器在需要的时候解密数据库主密钥,这就是自动密钥管理。没有自动密钥管理的话,你必须在每次使用证书或密钥加密或解密数据(它需要使用数据库主密钥)时使用OPEN MASTER KEY语句同时提供加密的密码。使用自动密钥管理,你不需要执行OPEN MASTER KEY语句,也不需要提供密码。
自动密钥管理的缺点就是每个sysadmin角色的成员都能够解密数据库主密钥。你可以通过ALTER MASTER KEY语句的DROP ENCRYPTION BY SERVICE MASTER KEY子句,从而不使用自动密钥管理。ALTER MASTER KEY的使用方法参见联机丛书。
作者:Michael Coles 责编:豆豆技术应用