Как включить прозрачное шифрование данных с использованием расширенного управления ключами

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

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

Ниже приводятся основные шаги включения прозрачного шифрования данных с помощью расширенного управления ключами.

  1. Установите поставщик расширенного управления ключами. Процедуры этого шага зависят от требований поставщика расширенного управления ключами, но могут включать установку сертификата от поставщика расширенного управления ключами в локальном хранилище сертификатов и копирование DLL-файлов расширенного управления ключами на компьютер SQL Server.

  2. Настройте SQL Server для использования поставщика расширенного управления ключами.

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

  4. Создайте асимметричный ключ, защищенный поставщиком расширенного управления ключами.

  5. Если модуль расширенного управления ключами использует обычную проверку подлинности, создайте учетные данные, защищенные асимметричным ключом для использования компонентом Database Engine.

  6. Создайте симметричный ключ шифрования базы данных.

  7. Включите прозрачное шифрование данных с помощью ключа шифрования базы данных.

Чтобы завершить все шаги этого раздела, подключитесь к SQL Server в окне редактора запросов среды Среда SQL Server Management Studio.

Установка и настройка поставщика служб шифрования

  1. Скопируйте файлы поставщика расширенного управления ключами в соответствующее расположение на компьютере SQL Server. В этом примере используется папка C:\EKM.

  2. Установите на компьютер сертификаты в соответствии с требованиями поставщика расширенного управления ключами.

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

    SQL Server не поддерживает поставщик расширенного управления ключами. Каждый поставщик расширенного управления ключами может иметь разные процедуры установки, настройки и авторизации пользователей. Проконсультируйтесь с документацией поставщика расширенного управления ключами, чтобы завершить этот шаг.

Настройка SQL Server для использования поставщика расширенного управления ключами и создание поставщика в SQL Server

  1. Включение поставщика расширенного управления ключами является дополнительным параметром. Вначале выполните следующие инструкции, чтобы отобразить дополнительные параметры.

    sp_configure 'show advanced options', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  2. Выполните следующую инструкцию для включения поставщиков расширенного управления ключами.

    sp_configure 'EKM provider enabled', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  3. Выполните следующую инструкцию для создания поставщика служб шифрования (в нашем случае EKM_Prov), основанного на поставщике расширенного управления ключами:

    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov 
    FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ;
    GO
    
    ПримечаниеПримечание

    DLL-библиотека поставщика расширенного управления ключами должна иметь цифровую подпись.

Создание учетных данных, использующихся в шифровании в базе данных

Для создания ключа шифрования базы данных и шифрования в базе данных необходимо быть привилегированным пользователем (например, системным администратором). Этот пользователь должен также проходить проверку подлинности в модуле расширенного управления ключами. Следующая процедура создает учетные данные, использующие идентификацию расширенного управления ключами, и добавляет их привилегированному пользователю. Следующая процедура предполагает, что модуль расширенного управления ключами проверяет подлинность пользователя с именем «Identity1». Вместо показанных здесь звездочек следует использовать пароль. Представленные ниже шаги требуются, если поставщик расширенного управления ключами применяет обычную проверку подлинности, но шаги в этом разделе можно пропустить, если используется другая проверка подлинности.

Создание учетных данных и их добавление к имени входа привилегированного пользователя

  1. Чтобы создать учетные данные для системных администраторов, выполните следующие инструкции:

    CREATE CREDENTIAL sa_ekm_tde_cred 
    WITH IDENTITY = 'Identity1', 
    SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    GO
    
  2. Выполните следующую инструкцию, чтобы добавить учетные данные системного администратора привилегированному пользователю, например собственному доменному имени входа в формате [DOMAIN\login]:

    ALTER LOGIN [DOMAIN\login]
    ADD CREDENTIAL sa_ekm_tde_cred ;
    GO
    

Создание асимметричного ключа

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

Создание ключа шифрования базы данных

  • Чтобы создать асимметричный ключ, хранящийся в поставщике расширенного управления ключами, выполните следующую инструкцию. В этом примере SQL Server определяет ключ по имени ekm_login_key. В устройстве расширенного управления ключами ключ имеет имя SQL_Server_Key.

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

    Параметры, требуемые поставщиком расширенного управления ключами, могут отличаться от приведенных в этой инструкции. Дополнительные сведения см. в документации поставщика расширенного управления ключами.

    USE master ;
    GO
    CREATE ASYMMETRIC KEY ekm_login_key 
    FROM PROVIDER [EKM_Prov]
    WITH ALGORITHM = RSA_512,
    PROVIDER_KEY_NAME = 'SQL_Server_Key' ;
    GO
    
    ПримечаниеПримечание

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

Создание учетных данных для компонента Database Engine

При запуске компонента Database Engine он должен открыть базу данных. Следующая процедура создает учетные данные для проверки подлинности модулем расширенного управления ключами и добавляет их к имени входа, основанному на асимметричном ключе. Пользователи не могут войти в систему с помощью этого имени входа, но компонент Database Engine сможет пройти проверку подлинности в устройстве расширенного управления ключами. Следующая процедура предполагает, что модуль расширенного управления ключами проверяет подлинность пользователя с именем «Identity2». Вместо показанных ниже звездочек следует использовать пароль. Представленные ниже шаги требуются, если поставщик расширенного управления ключами применяет обычную проверку подлинности, но шаги в этом разделе можно пропустить, если используется другая проверка подлинности.

Создание учетных данных и их добавление к именам входа

  1. Чтобы создать учетные данные для компонента Database Engine, выполните следующие инструкции:

    CREATE CREDENTIAL ekm_tde_cred 
    WITH IDENTITY = 'Identity2' 
    , SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    
  2. Выполните следующую инструкцию, чтобы присвоить имя входа TDE и добавить новые учетные данные к нему:

    CREATE LOGIN EKM_Login 
    FROM ASYMMETRIC KEY ekm_login_key ;
    GO
    
    ALTER LOGIN EKM_Login 
    ADD CREDENTIAL ekm_tde_cred ;
    GO
    

Создание ключа шифрования базы данных

Ключ шифрования базы данных является симметричным ключом. Ключ шифрования базы данных создается в базе данных master.

Создание ключа шифрования базы данных

  1. Перейдите к базе данных, которая должна шифроваться:

    USE AdventureWorks2008R2 ;
    GO
    
  2. Выполните следующий код для создания ключа шифрования базы данных, который будет использоваться для прозрачного шифрования данных:

    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM  = AES_128
    ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ;
    GO
    
  3. Выполните следующий код для изменения базы данных, чтобы включить в ней прозрачное шифрование данных:

    ALTER DATABASE AdventureWorks2008R2 
    SET ENCRYPTION ON ;
    GO
    

    База данных будет храниться в зашифрованном формате.

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

В этом разделе используются следующие разрешения.

  • Для изменения параметра конфигурации и выполнения инструкции RECONFIGURE должно быть предоставлено разрешение ALTER SETTINGS на уровне сервера. Разрешение ALTER SETTINGS неявно содержится в предопределенных ролях сервера sysadmin и serveradmin.

  • Требуется разрешение ALTER ANY CREDENTIAL.

  • Требуется разрешение ALTER ANY LOGIN.

  • Требуется разрешение CREATE ASYMMETRIC KEY.

  • Требуется разрешение CONTROL в базе данных для ее шифрования.