--在Always on集群的主数据库(读写)
USE master;
GO
--主密钥是否已经创建
SELECT * FROM sys.symmetric_keys where name='##MS_DatabaseMasterKey##';
--查看master数据库是否被加密
SELECT name,is_master_key_encrypted_by_server FROM sys.databases;
go
--创建master数据库下的主数据库密钥
--DROP MASTER KEY;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Admin123';
GO
--备份一下数据库主密钥(master KEY)
BACKUP MASTER KEY TO FILE = 'C:\DBBackup\master.cer' ENCRYPTION BY PASSWORD = 'Admin123';
GO
--创建证书用来保护 数据库加密密钥 (DEK)
drop CERTIFICATE MyServerCert;
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'TDETest DEK Certificate';
GO
--备份证书,当前使用的操作系统对指定目录要有读写权限,否则会备份失败
USE master;
BACKUP CERTIFICATE MyServerCert TO FILE = 'C:\DBBackup\MyServerCert.cer' WITH PRIVATE KEY ( FILE = 'C:\DBBackup\MyServerCert.pvk' , ENCRYPTION BY PASSWORD = 'Admin123' );
GO
--将备份的MyServerCert.cer和MyServerCert.pvk 拷贝到每一个从数据库的C:\DBBackup\下,且该目录能被操作的数据库用户读取
--将备份的MyServerCert.cer和MyServerCert.pvk 拷贝到每一个从数据库的C:\DBBackup\下,且该目录能被操作的数据库用户读取
--将备份的MyServerCert.cer和MyServerCert.pvk 拷贝到每一个从数据库的C:\DBBackup\下,且该目录能被操作的数据库用户读取
--重要的事情说三遍--------------------------------------------
--切换到Always on集群的每一个从数据库(只读)
--切换到Always on集群的每一个从数据库(只读)
--切换到Always on集群的每一个从数据库(只读)
--重要的事情说三遍
--------------------------------------------
--创建从数据库下的主数据库密钥
--DROP MASTER KEY;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Admin123';
GO--创建证书用来保护 数据库加密密钥 (DEK),此处的证书以之前拷贝过来的备份文件创建
--DROP CERTIFICATE MyServerCert;
CREATE CERTIFICATE MyServerCert
FROM FILE = 'C:\DBBackup\MyServerCert.cer'
WITH PRIVATE KEY (FILE = 'C:\DBBackup\MyServerCert.pvk',
DECRYPTION BY PASSWORD = 'Admin123');
GO
--------------------------------------------
----------------------------------------------------------------------------------------
----回到Always on集群的主数据库(读写)
USE testag;
GO
--DROP DATABASE ENCRYPTION KEY;
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128 --支持算法{ AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO--加密数据库
ALTER DATABASE testag SET ENCRYPTION ON;
GO
参考连接:透明数据加密 (TDE)