技术开发 频道

如何通过加密保护SQL Server敏感数据

  下面咱们就看一下具体的实例:

  咱们就以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
1
相关文章