Бөлісу құралы:


Включение прозрачного шифрования данных в SQL Server с помощью EKM

Область применения:SQL Server

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

При использовании TDE хранилище всей базы данных шифруется с помощью симметричного ключа, который называется ключом шифрования базы данных. Ключ шифрования базы данных также можно защитить с помощью сертификата, который защищен главным ключом базы данных (DMK) master базы данных. Дополнительные сведения о защите ключа шифрования базы данных с помощью dmK см. в разделе "Прозрачное шифрование данных" (TDE). Сведения о настройке TDE при запуске SQL Server на виртуальной машине Azure см. в статье "Расширяемое управление ключами" с помощью Azure Key Vault (SQL Server). Сведения о настройке TDE (Transparent Data Encryption) с помощью ключа в хранилище ключей Azure см. раздел Использование соединителя SQL Server с компонентами шифрования SQL.

Ограничения

Для создания ключа шифрования базы данных и шифрования в базе данных необходимо быть привилегированным пользователем (например, системным администратором). Модуль EKM должен иметь возможность аутентифицировать вас.

При запуске ядро СУБД должно открыть базу данных. Создайте учетные данные, которые EKM аутентифицирует, и добавьте их в логин на основе асимметричного ключа. Пользователи не могут войти с помощью этого имени входа, но ядро СУБД может пройти проверку подлинности с помощью устройства EKM.

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

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

Разрешения

Вам потребуются следующие разрешения:

  • Чтобы изменить параметр конфигурации и запустить инструкцию RECONFIGURE , требуется ALTER SETTINGS разрешение на уровне сервера. Предопределенные роли сервера sysadmin и serveradmin неявно обладают этим ALTER SETTINGS разрешением.

  • ALTER ANY CREDENTIAL разрешение.

  • ALTER ANY LOGIN разрешение.

  • CREATE ASYMMETRIC KEY разрешение.

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

Использование Transact-SQL

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

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

    Примечание.

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

  3. В обозревателе объектов подключитесь к экземпляру ядра СУБД.

  4. На стандартной панели выберите пункт Создать запрос.

  5. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить.

    -- Enable advanced options.
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXECUTE sp_configure 'EKM provider enabled', 1;
    GO
    
    RECONFIGURE;
    GO
    
    -- Create a cryptographic provider, which we have chosen to call "EKM_Prov," based on an EKM provider
    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov
        FROM FILE = 'C:\EKM_Files\KeyProvFile.dll';
    GO
    
    -- Create a credential that will be used by system administrators.
    CREATE CREDENTIAL sa_ekm_tde_cred
        WITH IDENTITY = 'Identity1',
        SECRET = '<password>' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov;
    GO
    
    -- Add the credential to a high privileged user such as your
    -- own domain login in the format [DOMAIN\login].
    ALTER LOGIN [Contoso\Mary] ADD CREDENTIAL sa_ekm_tde_cred;
    GO
    
    -- create an asymmetric key stored inside the EKM provider
    USE master;
    GO
    
    CREATE ASYMMETRIC KEY ekm_login_key
         FROM PROVIDER [EKM_Prov]
             WITH ALGORITHM = RSA_2048,
             PROVIDER_KEY_NAME = 'SQL_Server_Key';
    GO
    
    -- Create a credential that will be used by the Database Engine.
    CREATE CREDENTIAL ekm_tde_cred
        WITH IDENTITY = 'Identity2', SECRET = '<secret>'
        FOR CRYPTOGRAPHIC PROVIDER EKM_Prov;
    
    -- Add a login used by TDE, and add the new credential to the login.
    CREATE LOGIN EKM_Login
        FROM ASYMMETRIC KEY ekm_login_key;
    GO
    
    ALTER LOGIN EKM_Login
        ADD CREDENTIAL ekm_tde_cred;
    GO
    
    -- Create the database encryption key that will be used for TDE.
    USE AdventureWorks2022;
    GO
    
    CREATE DATABASE ENCRYPTION KEY
        WITH ALGORITHM = AES_128
        ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key;
    GO
    
    -- Alter the database to enable transparent data encryption.
    ALTER DATABASE AdventureWorks2022
        SET ENCRYPTION ON;
    GO