Как выполнить резервное копирование нескольких основных ключей базы данных DEK на SQL с помощью TDE Enable

У меня есть экземпляр 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

Будет создана резервная копия конкретного, но команда не запустится. Вы должны быть на главном сервере, чтобы выполнить команду.

Спасибо


person roncansan    schedule 24.06.2019    source источник
comment
Что значит команда не запускается? Он никогда не завершается, происходит ли ошибка, появляется ли всплывающее окно, в котором говорится, что я отказываюсь работать! как в Сайнфельде?   -  person dfundako    schedule 24.06.2019


Ответы (1)


Способ настройки TDE в SQL Server выглядит следующим образом:

  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 - это резервная копия закрытого ключа для базы данных.
person M.Ali    schedule 24.06.2019