Перемещение базы данных, защищаемой прозрачным шифрованием, в другой экземпляр SQL Server

В этом разделе описаны действия по защите базы данных SQL Server с применением прозрачного шифрования данных и перемещению базы данных в другой экземпляр SQL Server.

В этом разделе

  • Перед началом работы выполните следующие действия.

    Пояснения

    Безопасность

  • Пример:

    Создание базы данных, защищаемой с применением прозрачного шифрования данных

    Перемещение базы данных, защищаемой прозрачным шифрованием, в другой экземпляр SQL Server

  • Дополнительная работа. Действия, выполняемые после перемещения базы данных, защищаемой прозрачным шифрованием, в новый экземпляр SQL Server

Пояснения

Функция прозрачного шифрования данных выполняет шифрование и дешифрование ввода-вывода в реальном времени для файлов данных и журналов. При шифровании используется ключ шифрования базы данных (DEK), который хранится в загрузочной записи базы данных для доступности при восстановлении. Ключ шифрования базы данных является симметричным ключом, защищенным сертификатом, который хранится в базе данных master на сервере, или асимметричным ключом, защищенным модулем расширенного управления ключами. В случае перемещения базы данных, защищаемой прозрачным шифрованием, также необходимо переместить сертификат или асимметричный ключ, который служит для открытия ключа шифрования базы данных. Сертификат или асимметричный ключ должен быть установлен в базе данных master целевого сервера, чтобы SQL Server имел доступ к файлам базы данных. Дополнительные сведения см. в разделе Основные сведения о прозрачном шифровании данных (TDE).

Безопасность

Разрешения

Требуется разрешение CONTROL DATABASE в базе данных master для создания главного ключа базы данных.

Требуется разрешение CREATE CERTIFICATE в базе данных master для создания сертификата, защищающего ключ шифрования базы данных.

Требуется разрешение CONTROL DATABASE в зашифрованной базе данных и разрешение VIEW DEFINITION на сертификат или асимметричный ключ, используемый для шифрования ключа шифрования базы данных.

[В начало]

Создание базы данных, защищаемой прозрачным шифрованием

Чтобы создать базу данных, защищаемую прозрачным шифрованием, используется ключ шифрования базы данных, который защищается сертификатом в базе данных master.

Создание базы данных, защищаемой с применением прозрачного шифрования данных

  1. В редакторе запросов введите следующие команды Transact-SQL, чтобы создать главный ключ базы данных и сертификат в базе данных master.

    Примечание по безопасностиПримечание по безопасности

    Звездочки замените паролем. Не используйте пустые пароли. Выбирайте надежные пароли.

    USE master ;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    CREATE CERTIFICATE TestSQLServerCert 
    WITH SUBJECT = 'Certificate to protect TDE key'
    GO
    
  2. Создайте резервную копию сертификата сервера в базе данных master. Если сертификат, который используется для защиты ключа шифрования базы данных, будет утерян, то доступ к данным, хранящимся в базе данных, защищаемой прозрачным шифрованием, будет невозможен. В следующем примере резервная копия сертификата и файла закрытого ключа сохраняется в расположении данных по умолчанию для этого экземпляра SQL Server (C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA).

    Примечание по безопасностиПримечание по безопасности

    Для восстановления сертификата необходимо хранить копии файла сертификата и файла закрытого ключа. Пароль для закрытого ключа не обязательно должен совпадать с паролем главного ключа базы данных.

    BACKUP CERTIFICATE TestSQLServerCert 
    TO FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        ENCRYPTION BY PASSWORD = '**************'
    );
    GO
    
  3. Создайте базу данных, защищаемую прозрачным шифрованием.

    CREATE DATABASE CustRecords ;
    GO
    
  4. Выполните переключение на новую базу данных. Создайте ключ шифрования базы данных, который защищается сертификатом сервера в базе данных master. Затем измените новую базу данных для шифрования с применением прозрачного шифрования данных.

    USE CustRecords;
    GO
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_128
    ENCRYPTION BY SERVER CERTIFICATE TestSQLServerCert;
    GO
    ALTER DATABASE CustRecords
    SET ENCRYPTION ON;
    GO
    
    ПримечаниеПримечание

    Чтобы выполнить это действие в среде Среда SQL Server Management Studio, щелкните базу данных правой кнопкой мыши в обозревателе объектов, укажите пункт «Задачи» и выберите пункт Управление шифрованием базы данных. В диалоговом окне Управление шифрованием базы данных выберите ключ шифрования базы данных и включите шифрование.

  5. Создайте простую таблицу. Введите данные в таблицу, а затем выполните выборку из таблицы, чтобы проверить базу данных.

    CREATE TABLE CustomerRecord
        (CustomerID int PRIMARY KEY,
        SecretData nvarchar(100) NOT NULL) ;
    GO
    INSERT CustomerRecord (CustomerID,SecretData)
    VALUES (23997, 'Plain text data') ;
    GO
    SELECT CustomerID, SecretData FROM CustomerRecord ;
    GO
    

[В начало]

Перемещение базы данных, защищаемой прозрачным шифрованием

Перемещение базы данных, защищаемой прозрачным шифрованием, в другой экземпляр SQL Server

  1. Отсоедините базу данных, защищаемую прозрачным шифрованием, от исходного сервера.

    USE master ;
    GO
    EXEC master.dbo.sp_detach_db @dbname = N'CustRecords';
    GO
    
    ПримечаниеПримечание

    Чтобы выполнить это действие в среде Management Studio, щелкните базу данных правой кнопкой мыши в обозревателе объектов, укажите пункт «Задачи» и выберите пункт Отсоединить. Нажмите кнопку ОК.

  2. В проводнике Windows переместите или скопируйте файлы базы данных с исходного сервера в то же расположение на целевом сервере.

    ПримечаниеПримечание

    Два файла базы данных (CustomerRecords.mdf и CustomerRecords_log.LDF) обычно располагаются в каталоге по умолчанию C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA. В других системах имена и расположения файлов могут быть иными.

  3. В проводнике Windows переместите или скопируйте резервную копию сертификата сервера и файла закрытого ключа с исходного сервера в то же расположение на целевом сервере. В данном примере эти файлы хранятся в каталоге данных по умолчанию: C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA.

  4. Создайте главный ключ базы данных в целевом экземпляре SQL Server. Пароль необязательно должен совпадать с паролем на исходном сервере.

    USE master;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    
  5. Повторно создайте сертификат сервера с помощью файла резервной копии исходного сертификата сервера. Пароль должен совпадать с паролем, использованным при создании резервной копии.

    CREATE CERTIFICATE TestSQLServerCert 
    FROM FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        DECRYPTION BY PASSWORD = '**************'
    );
    GO
    
  6. Присоедините перемещаемую базу данных. Путем к файлам базы данных должно быть расположение, где сохранены файлы базы данных.

    CREATE DATABASE [CustRecords] ON 
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ),
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' )
    FOR ATTACH ;
    GO
    
    ПримечаниеПримечание

    Чтобы выполнить это действие в среде Management Studio, щелкните узел Базы данных правой кнопкой мыши в обозревателе объектов и выберите команду Присоединить. Нажмите кнопку Добавить, чтобы найти файл CustRecords.mdf, а затем нажмите кнопку ОК.

  7. Проверьте доступ к базе данных, выполнив выборку данных из таблицы.

    USE CustRecords ;
    GO
    SELECT CustomerID, SecretData FROM CustomerRecord ;
    GO
    

    [В начало]

Дополнительная работа. Действия, выполняемые после перемещения базы данных, защищаемой прозрачным шифрованием, в новый экземпляр SQL Server

Создание резервной копии базы данных master

  • В результате установки сертификата и присоединения базы данных изменились сведения в базе данных master. Следует создать новую резервную копию базы данных master.

[В начало]