Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
对数据库启用 透明数据加密(TDE)【此方法适用于 sql server 2008 及以后的版本(含2008)】
注:仅 sql server enterprise(企业版)支持此功能。
它是对整个数据库进行了加密,而且既然是“透明”,也就是说不会影响到任何对数据库的操作,正常的对数据库操作(增删改查什么的),还有备份恢复什么的,都不需要特别的考虑加密问题。只有离开了当前的数据库服务器,就会发现,什么都做不了。
对bak进行还原的时候,在UI上会提示介质找不到,用sql restore时会提示找不到指纹为 '0xBAA127AA4C8BE3F4BAD4E1369DB9F2D0910D40BA' 的服务器 证书。
需要在新的服务器中导入原来的加密证书即可正常使用。
引自:SQLServer Transparent Data Encryption
SELECT DB_NAME(database_id) AS DatabaseName, * FROM sys.dm_database_encryption_keys; --整个加密 --1、在 master 数据库中,添加 数据库主密钥: USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'helloworld'; --2、在 master 数据库中,添加 加密数据库用的证书: USE master; CREATE CERTIFICATE A9Safe WITH SUBJECT = 'A9Safe'; -- 3、在 要加密的数据库 中,设置 证书以及加密算法: USE Authorize go CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE A9Safe; --对 要加密的数据库 启用加密: ALTER DATABASE Authorize SET ENCRYPTION ON WITH ROLLBACK IMMEDIATE USE CedarLog go CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE A9Safe; ALTER DATABASE CedarLog SET ENCRYPTION ON WITH ROLLBACK IMMEDIATE USE S60623 go CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE A9Safe; ALTER DATABASE S60623 SET ENCRYPTION ON WITH ROLLBACK IMMEDIATE USE SMSDB go CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE A9Safe; ALTER DATABASE SMSDB SET ENCRYPTION ON WITH ROLLBACK IMMEDIATE --5、首先要从 master 数据库中,备份加密证书:paswword 此密码用于保护私钥,恢复时使用 USE master; BACKUP CERTIFICATE A9Safe TO FILE = 'D:A9Safe.cer' WITH PRIVATE KEY ( FILE = 'D:A9Safe.pkey', ENCRYPTION BY PASSWORD = '$$helloworld$$' ); --6、在其他数据库服务器中,仍然首先建立 数据库主密钥,同第1步操作; USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe'; --7、然后,开始从文件中恢复证书: USE master; CREATE CERTIFICATE A9Safe FROM FILE = 'D:A9Safe.cer' WITH PRIVATE KEY ( FILE = 'D:A9Safe.pkey', DECRYPTION BY PASSWORD = '$$helloworld$$'); --需要注意的是,数据库加密的关键是 那个证书,数据库主密钥 是用来保护数据库信息的,比如证书的存放什么的,并不直接关系到数据库的加密。 --所以,一定要备份好证书!!!不然别到时候哭着解密不了数据库。