0

我有一个带有多个数据库的 SQL 实例。它们中的每一个都经过 TDE 加密。

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

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

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

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

我认为:

use [specific-db];
GO

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

谢谢

4

1 回答 1

1

SQL Server中TDE的配置方式如下:

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

您只需要/可以在此处备份两件事:

  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 是数据库私钥的备份
于 2019-06-24T15:50:13.867 回答