Назад | Перейти на главную страницу

Что нужно сделать, чтобы TDE зашифровать базу данных SQL Server 2008?

Мы пробовали следующие шаги: http://msdn.microsoft.com/en-us/library/cc278098.aspx но продолжайте получать эту ошибку: Msg 15151, Level 16, State 1, Line 1 Не удается найти сертификат tdeCert, потому что он не существует или у вас нет разрешения.

Вам нужно позаботиться об использовании правильных баз данных:

use master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD= 'password';
go
CREATE CERTIFICATE tdeCert WITH SUBJECT = 'TDE Certificate';
go
BACKUP CERTIFICATE tdeCert TO FILE = 'C:\location'
WITH PRIVATE KEY ( FILE = 'C:\location2', ENCRYPTION BY PASSWORD = 'password');
go

use your_db
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE tdeCert

Обратите внимание use master и use your_db.

Это означает, что вы неправильно выполнили шаги. Убедитесь, что tdeCert существует в select * from master.sys.certificates, поскольку сертификат создается на шаге 2: CREATE CERTIFICATE tdeCert WITH SUBJECT = ‘TDE Certificate’ и должен существовать. Вы либо пропустили шаг, либо создали сертификат не в той базе данных, либо допустили опечатку в имени сертификата (включая регистр на серверах с учетом регистра).

Прозрачное шифрование данных (TDE) шифрует базу данных с помощью ключа шифрования базы данных (DEK), который хранится в загрузочной записи базы данных. DEK, в свою очередь, защищен главным ключом базы данных, который, в свою очередь, защищен главным ключом службы.

  1. Первый шаг включает создание главного ключа шифрования:

    USE master;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Password';
    GO
    
  2. После создания главного ключа шифрования создайте сертификат, который будет использоваться для шифрования базы данных:

    CREATE CERTIFICATE servercertificate WITH SUBJECT = 'DataCertificate';
    
  3. После создания главного ключа и сертификата вы можете создать DEK для конкретной базы данных с помощью оператора CREATE DATABASE ENCRYPTION KEY:

    USE DecryptTesting;
    GO
    CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER      CERTIFICATE        servercertificate;
    GO
    

Вы получите предупреждение в окне результатов:

Предупреждение. Сертификат, используемый для шифрования ключа шифрования базы данных, не был зарезервирован. Вы должны немедленно создать резервную копию сертификата и закрытого ключа, связанного с сертификатом. Если сертификат когда-либо станет недоступен или вы должны восстановить или присоединить базу данных на другом сервере, у вас должны быть резервные копии как сертификата, так и закрытого ключа, иначе вы не сможете открыть базу данных.

При использовании TDE создайте резервную копию сертификата сервера в базе данных master. Вы можете использовать инструкцию BACKUP CERTIFICATE для создания резервной копии сертификата и закрытого ключа, которые необходимы для восстановления сертификата. Пароль секретного ключа не обязательно должен совпадать с паролем главного ключа базы данных:

    BACKUP CERTIFICATE ServerCertificate TO FILE = 'ServerCertExport' WITH PRIVATE KEY (     FILE = 'PrivateKeyFile',     ENCRYPTION BY PASSWORD = '<PrivateKeyPasswordHere>' );

Теперь вы можете зашифровать базу данных:

    ALTER DATABASE DecryptTesting SET ENCRYPTION ON;