下面咱们就看一下具体的实例:
咱们就以dufei数据库为例,先看一下服务主密钥。咱们前面已经介绍了,它不是咱们手动创建出来的,在安装SQL SERVER时就已经存在了。我们做的只能是备份和还原。
备份:
backup service master key to file='c:\bak\smk.bak' encryption by password='DUfei2008'
还原:
restore service master key from file='c:\bak\smk.bak' decryption by password='DUfei2008'
生成新的服务主密钥, 适应于更改服务帐户的情况,一般推荐使用配置管理器更改服务帐户:
alter service master key regenerate
---------数据库主密钥---
1)为当前dufei数据库创建数据库主密钥
use dufei create master key encryption by password='DUfei2008'
2)查看数据库加密状态
select * from sys.databases where name='dufei'
3) 查看数据库主密钥的信息
select * from sys.symmetric_keys
4)备份数据库主密钥
backup master key to file='c:\bak\dmk.bak' encryption by password='DUfei2008'
默认情况下,创建数据库主密钥会被服务主密钥所保护的,但有的时候我们不希望数据库主密钥使用服务主密钥保护,那么就可以删除服务主密钥对数据库主密钥的保护。我们先不删除,我们来利用数据库主密钥创建非对称密钥,可以直接创建。
Create asymmetric key asy_key1 with algorithm=RSA_1024 --成功
语法:
Alter master key drop encryption by service master key
再次查看数据库的加密状态:
Select * from sys.databases where name=’dufei’
--主要是看is_master_key_encrypted_by_server 已经是0了。说明不被服务主密钥保护了。
此时我们再创建一个非对称密钥,则不成功,
Create asymmetric key asy_key2 with algorithm=RSA_1024 --失败了,
因为这个时候数据库主密钥不会自动打开了,必须打开数据库主密钥再创建。
Open master key decryption by password=’DUfei2008’ Select * from sys.openkeys
显示打开的数据库主密钥,然后再创建非对称密钥则可以成功,如下:
Create asymmetric key asy_key2 with algorithm=RSA_1024 ---则显示成功。
用户也可以通过图形界面查看一下,非对称密钥中已经出现了我们所创建的密钥。这个实验是告诉大家,如果你删除了服务主密钥对数据库主密钥的保护,那么每次必须手动打开数据库主密钥,挺麻烦的,所以我们还可以恢复服务主密钥对数据库主密钥的保护。
1) 恢复服务主密钥对数据库主密钥的保护
Alter master key add encryption by service master key
2) 关闭数据库主密钥
Close master key