技术开发 频道

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

  【IT168 评论】从SQL Server2005开始有一个新特性——内置数据加密的功能。该功能实现了完整的加密基础结构,不需要再借此其他工具就可以实现完整的加密、解密操作。利用好此功能,即使存储设备失窃也不用担心数据泄露的问题。

  首先看一下数据库加密体系结构。整个加密体系看起来挺复杂,但其实很简单,这个加密体系分为多个加密级别,如下图所示:

  第一个级别:Windows级别。主要使用的是Windows的DPAPI(数据保护API)使用的用户的凭据,也就是使用用户的密码来对需要保护的对象进行加密的一种方法。在这里主要是使用Windows级别的用户凭据对第二个级别也就是SQL Server服务器级别进行加密。

  第二个级别:SQL Server的服务器实例级别。这一个层次有一个服务主密钥,但是这个服务主密钥必须使用DPAPI(也就是第一个级别的用户凭据)进行加密。而这个服务主密钥又用于对第三个级别——数据库主密钥进行加密,也就是说上层必须为下层服务。

  第三个级别:主数据库级别。存在一个数据库主密钥,它可以加密数据库中的其他对象,对称密钥不使用数据库主密钥加密,我们从图中可以看出来,对称密钥使用证书,非对称密钥或是指定的密码加密,同时又被第二级别服务主密钥所保护。

  第四个级别:用户数据库级别。当数据库中有了数据库主密钥后就可以使用数据库主密钥来保护数据库中的证书和非对称密钥,再使用对称密钥来保护其他对称密钥和数据,当然也可以直接使用证书和非对称密钥来保护数据。

  下面我们来逐个看一下各种密钥:

  服务主密钥:在安装SQL Server时自动生成的一个密钥,是128BIT的3DES密钥。它的作用是,直接或者间接地保护体系中的其他密钥。使用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’
1
相关文章