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

时间:2019-06-24 15:21:44

标签: sql-server tde

我有一个具有多个数据库的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

它将备份特定的一个,但是该命令将不会运行。您需要具有管理员权限才能运行命令。

谢谢

1 个答案:

答案 0 :(得分: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是数据库私钥的备份