如何使用 TDE 启用在 SQL 上支持多个主数据库密钥 DEK

How to back multiple master database key DEK on SQL with TDE Enable

我有一个包含多个数据库的 SQL 实例。他们每个人都经过 TDE 加密。

我知道所有数据库都使用相同的服务主密钥 SMK 来加密 tempdb。我已经使用以下方法备份了 SMK:

BACKUP SERVICE MASTER KEY
TO FILE = 'tmp-path.key'
ENCRYPTION BY PASSWORD = 'temp-password';

现在,如何备份独特的数据库主密钥 DMK?每个数据库都使用不同的数据库,但是 SQL 语句不允许指定备份哪个。接下来是我运行ning.

的命令
BACKUP MASTER KEY
TO FILE = 'tmep-path.key'
ENCRYPTION BY PASSWORD = 'temp-passowrd'

我认为:

use [specific-db];
GO

它会备份一个特定的,但命令不会运行。您需要在 master 上,才能 运行 命令。

谢谢

TDE在SQL服务器的配置方式如下:

  1. 在 master 数据库中创建主密钥
  2. 使用主密钥创建证书
  3. 使用证书创建数据库加密密钥

您只需要 to/can 备份两件事:

  1. 主加密密钥 - 您在问题中显示的脚本可以做到这一点。

    BACKUP MASTER KEY
    TO FILE = 'tmep-path.key'
    ENCRYPTION BY PASSWORD = 'temp-passowrd'
    
  2. 证书 - 您可以为每个要加密的数据库创建一个单独的证书,也可以创建一个证书来加密所有数据库,您将按如下方式创建和备份证书:

    -- Create Certificate
    USE Master;
    GO
    CREATE CERTIFICATE TDE_MyDB_Cert 
    WITH SUBJECT = 'My TDE Certificate for MyDB user database'
    GO
    

此证书受服务主密钥保护。

    -- Encrypt Database using the Certificate
    USE [MyDB]  
    GO  
    CREATE DATABASE ENCRYPTION KEY  
    WITH ALGORITHM = AES_128  
    ENCRYPTION BY SERVER CERTIFICATE TDE_MyDB_Cert 
    GO 

现在您需要使用数据库的私钥备份证书,您将执行以下操作:

USE master;  
GO  
BACKUP CERTIFICATE TDE_MyDB_Cert   
TO FILE = 'C:\TDE_MyDB_Cert_File.cer'  
WITH PRIVATE KEY (FILE = 'C:\TDE_MyDB_Cert_PKey.pvk' ,  
ENCRYPTION BY PASSWORD = 'S0M34tR0nGP@$$w)rd' )  
GO
  1. TDE_MyDB_Cert_File.cer是证书备份
  2. TDE_MyDB_Cert_PKey.pvk 是数据库私钥的备份