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

Применимо к:SQL Server

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

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

Перед началом

Ограничения

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

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

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

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

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

Разрешения

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

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

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

  • Необходимо разрешение ALTER ANY LOGIN.

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

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

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

Включение TDE с расширенным управлением ключами

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

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

    Заметка

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

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

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

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

    -- Enable advanced options.  
    sp_configure 'show advanced options', 1 ;  
    GO  
    RECONFIGURE ;  
    GO  
    -- Enable EKM provider  
    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 = 'q*gtev$0u#D1v'   
    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_512,  
    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 = 'jeksi84&sLksi01@s'   
    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  
    

Дополнительные сведения см. в следующих разделах:

См. также

Прозрачное шифрование данных в Базе данных SQL Azure