• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    透明数据加密(TDE)库的备份和还原
    想到TDE(Transparent Data Encryption)。

    TDE MSDN 说明:

    “透明数据加密”(TDE) 可对数据和日志文件执行实时 I/O 加密和解密。这种加密使用数据库加密密钥 (DEK),该密钥存储在数据库引导记录中以供恢复时使用。DEK 是使用存储在服务器的 master 数据库中的证书保护的对称密钥,或者是由 EKM 模块保护的非对称密钥。TDE 保护“处于休眠状态”的数据,即数据和日志文件。它提供了遵从许多法律、法规和各个行业建立的准则的能力。软件开发人员籍此可以使用 AES 和 3DES 加密算法来加密数据,且无需更改现有的应用程序。
    其实吸引我的是“无需更改现有的应用程序”,因为我需要加密的库服务于一个非常稳定的系统,而且这样做所有事情DBA可控。

    TDE加密体系结构:

    untitled
    测试过程:
    复制代码 代码如下:

    --创建主密钥(Master Key)
    USE master
    GO
    --DROP MASTER KEY
    CREATE MASTER KEY ENCRYPTION BY PASSWORD=N'1qaz@WSX';
    GO
    --备份主密钥
    BACKUP MASTER KEY TO FILE=N'C:\master_key.cer'
    ENCRYPTION BY PASSWORD=N'!QAZ2wsx'
    GO
    --创建基于主密钥的证书。用于保护数据库加密密钥(Database Encryption Key)
    --DROP CERTIFICATE SDB_Cert
    CREATE CERTIFICATE SDB_Cert
    WITH SUBJECT=N'Certificate for SecretDB'
    go
    --使用私钥加密的方式备份主密钥的证书
    BACKUP CERTIFICATE SDB_Cert
    TO FILE=N'C:\SDB_Cert.cer'
    WITH PRIVATE KEY
    (
    FILE =N'C:\SDB_Cert.pvk',
    ENCRYPTION BY PASSWORD='!QAZ2wsx'
    )
    GO
    --创建测试库SecretDB
    USE master
    GO
    CREATE DATABASE SecretDB
    GO
    USE SecretDB
    GO
    CREATE TABLE SDB_TB
    (ID INT,VAL NVARCHAR(20));
    INSERT INTO SDB_TB
    VALUES (1,N'A'),(2,N'B'),(3,N'C');
    GO
    USE SecretDB
    go
    --创建数据库加密密钥
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM=AES_128
    ENCRYPTION BY SERVER CERTIFICATE SDB_Cert;
    GO
    --启用数据库加密
    USE SecretDB
    go
    ALTER DATABASE SecretDB SET ENCRYPTION ON
    go
    --备份SecretDB,用于后续的异机还原测试
    USE master
    go
    BACKUP DATABASE SecretDB TO DISK=N'D:\SecretDB.bak'
    go
    在完成这些后,SecretDB库已经加密,并且得到其加密后的备份文件,接下来需要在另台还原这个备份。
    我把SecretDB.bak,SDB_Cert.cer,SDB_Cert.pvk拷到别一台机。直接还原的话,会报错。需要创建原来用于加密的证书来还原数据库备份。我的目的达到了!
    --在异机上恢复SecretDB的备份
    USE master
    GO
    CREATE DATABASE SecretDB
    GO
    RESTORE DATABASE SecretDB
    FROM DISK=N'D:\SecretDB.bak'
    WITH REPLACE
    GO
    --消息 33111,级别 16,状态 3,第 1 行
    --找不到指纹为 '0x0106000000000009010000009C529FFD5C7FD72FD0AAE9EDF46C5F69946FFED0' 的服务器 证书。
    --消息 3013,级别 16,状态 1,第 1 行
    --RESTORE DATABASE 正在异常终止。
    创建证书并还原。
    USE master
    GO
    CREATE CERTIFICATE SDB_Cert
    FROM FILE=N'C:\SDB_Cert.cer'
    WITH PRIVATE KEY
    (
    FILE=N'C:\SDB_Cert.pvk',
    DECRYPTION BY PASSWORD=N'!QAZ2wsx'
    )
    GO
    RESTORE DATABASE SecretDB
    FROM DISK=N'D:\SecretDB.bak'
    WITH REPLACE
    GO

    总结:
    其实在做TDE前应该仔细阅读BOL的说明:ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-CHS/s10de_4deptrbl/html/c75d0d4b-4008-4e71-9a9d-cee2a566bd3b.htm
    其中说到:
    如果使用 TDE 对数据库进行加密,备份压缩将无法显著压缩备份存储。
    复制不会以加密形式从启用了 TDE 的数据库中自动复制数据。如果您想保护分发和订阅服务器数据库,则必须单独启用 TDE。
    某些限制和注意事项,会影响TDE的部署和使用。
    上一篇:sqlserver 巧妙的自关联运用
    下一篇:使用cmd命令行窗口操作SqlServer的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    透明数据加密(TDE)库的备份和还原 透明,数据,加密,TDE,库,的,