Как создать резервный ключ базы данных DEK для SQL с включенным TDE - PullRequest
0 голосов
/ 24 июня 2019

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

1 голос
/ 24 июня 2019

Способ настройки 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 является резервной копией для закрытого ключа для базы данных
...