历史简介
SQL Server2005,引入了列级加密。使得加密可以对特定列执行,这个过程涉及4对加密和解密的内置函数。
SQL Server 2008时代,则引入的了透明数据加密(TDE),所谓的透明数据加密,就是加密在数据库中进行,但从程序的角度来看就好像没有加密一样,和列级加密不同的是,TDE加密的级别是整个数据库。使用TDE加密的数据库文件或备份在另一个没有证书的实例上是不能附加或恢复的。
单节点TDE加密
贴一张官方文档的图
TDE加密数据库加入可用性组
前提:
1、主节点证书和密钥的备份
2、备节点证书和密钥的恢复
后续:
-
创建主数据库的日志备份。
-
创建主数据库的完整数据库备份。
-
在承载辅助副本的服务器实例上,还原数据库备份。
-
从主数据库创建新的日志备份。
-
在辅助数据库上还原此日志备份。
正文
如果数据库进行了加密或者数据库甚至包含数据库加密密钥 (DEK),则您无法使用 新建可用性组向导 或 将数据库添加到可用性组向导 将该数据库添加到某一可用性组。 即使已对加密的数据库进行了解密,其日志备份也可能包含加密的数据。 在此情况下,在该数据库上完整的初始数据同步可能会失败。 其原因在于,还原日志操作可能要求数据库加密密钥 (DEK) 使用的证书,但该证书可能不可用。
1、主节点创建主密钥
要在test数据库上配置TDE,我们应该首先在master数据库中创建一个主密钥。每个SQL Server实例只能创建一个主密钥。托管在同一SQL实例中并启用了TDE的所有用户数据库将共享对同一主键的依赖关系。下面的CREATE MASTER KEY T-SQL语句用于在master数据库下创建主密钥,并且此主密钥将通过复杂的密码进行加密。最好将该密码备份保存在安全的地方:
USE master GO CREATE MASTER KEY ENCRYPTION BY PASSWORD='Q123456.q@'; GO |