Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Соединитель SQL Server для Microsoft Azure Key Vault позволяет шифрованию SQL Server использовать службу Azure Key Vault в качестве поставщика расширенного управления ключами (EKM) для защиты ключей шифрования.
Включено в этот раздел:
Использования EKM
Шаг 1: Настройка Хранилища ключей для использования SQL Server
Шаг 3: Настройка SQL Server для использования поставщика EKM для Key Vault
Пример А: Прозрачное шифрование данных с помощью асимметричного ключа из "Хранилища ключей"
пример B. Шифрование резервных копий с помощью асимметричного ключа из хранилища ключей
пример C. Шифрование на уровне столбцов с помощью асимметричного ключа из хранилища ключей
Использование EKM
Организация может использовать шифрование SQL Server для защиты конфиденциальных данных. Шифрование SQL Server включает прозрачное шифрование данных (TDE), шифрование уровня столбцов (CLE) и шифрование резервных копий. Во всех этих случаях данные шифруются с помощью симметричного ключа шифрования данных. Ключ шифрования симметричного данных дополнительно защищен путем шифрования его с помощью иерархии ключей, хранящихся в SQL Server. Кроме того, архитектура поставщика EKM позволяет SQL Server защищать ключи шифрования данных с помощью асимметричного ключа, хранящегося за пределами SQL Server во внешнем поставщике шифрования. Использование архитектуры поставщика EKM добавляет дополнительный уровень безопасности и позволяет организациям отделять управление ключами и данными.
Соединитель SQL Server для Azure Key Vault позволяет SQL Server использовать масштабируемую, высокую производительность и высокодоступную службу хранилища ключей в качестве поставщика EKM для защиты ключей шифрования. Службу хранилища ключей можно использовать с установками SQL Server на виртуальных машинах Microsoft Azure и локальных серверах. Служба хранилища ключей также предоставляет возможность использовать строго контролируемые и отслеживаемые аппаратные модули безопасности (HSM) для более высокого уровня защиты асимметричных ключей шифрования. Дополнительные сведения о хранилище ключей см. в Azure Key Vault.
На следующем рисунке схематически изображён поток процессов EKM с использованием хранилища ключей. Номера шагов процесса на изображении не предназначены для сопоставления номеров шагов установки, которые следуют изображению.
Шаг 1. Настройка Key Vault для использования SQL Server
Выполните следующие действия, чтобы настроить хранилище ключей для использования с ядром СУБД SQL Server для защиты ключей шифрования. Возможно, хранилище уже используется для организации. Если хранилище не существует, администратор Azure в организации, предназначенный для управления ключами шифрования, может создать хранилище, создать асимметричный ключ в хранилище, а затем авторизовать SQL Server для использования ключа. Чтобы ознакомиться с обзором службы Azure Key Vault, воспользуйтесь разделом «Начало работы с Azure Key Vault»и справочником командлетов PowerShell Azure Key Vault.
Важный
Если у вас несколько подписок Azure, необходимо использовать подписку, содержащую SQL Server.
Создание хранилища: Создайте хранилище, следуя инструкциям в разделе «Создание хранилища ключей» из «Начало работы с Azure Key Vault». Запишите имя хранилища. В этом разделе в качестве имени хранилища ключей используется ContosoKeyVault.
Создать асимметричный ключ в хранилище: асимметричный ключ в хранилище ключей используется для защиты ключей шифрования SQL Server. Только общедоступная часть асимметричного ключа когда-либо покидает хранилище, частная часть никогда не экспортируется хранилищем. Все криптографические операции с использованием асимметричного ключа делегированы в Azure Key Vault и защищены безопасностью хранилища ключей.
Существует несколько способов создания асимметричного ключа и хранения его в хранилище. Вы можете создать ключ извне и импортировать его в хранилище в виде PFX-файла. Или создайте ключ непосредственно в хранилище с помощью API хранилища ключей.
Соединитель SQL Server требует, чтобы асимметричные ключи были 2048-разрядной RSA, а имя ключа может использовать только символы "a-z", "A-Z", "0-9" и "-". В этом документе имя асимметричного ключа называется ContosoMasterKey. Замените его уникальным именем, используемым для ключа.
Важный
Импорт асимметричного ключа настоятельно рекомендуется для рабочих сценариев, так как он позволяет администратору депонировать ключ в системе депонирования ключей. Если асимметричный ключ создается в хранилище, его нельзя депонировать, так как закрытый ключ никогда не может оставить хранилище. Ключи, используемые для защиты критически важных данных, должны быть депонированы. Потеря асимметричного ключа приведет к постоянно неустранимым данным.
Важный
Хранилище ключей поддерживает несколько версий одного и того же именованного ключа. Ключи, используемые соединителем SQL Server, не должны иметь версии или подвергаться ротации. Если администратор хочет заменить ключ, используемый для шифрования в SQL Server, новый ключ с другим именем должен быть создан в хранилище и использован для шифрования ключа данных (DEK).
Дополнительные сведения о том, как импортировать ключ в хранилище ключей или создать ключ в хранилище ключей (не рекомендуется для рабочей среды), см. в разделе Добавление ключа или секрета в хранилище ключей раздела начало работы с Azure Key Vault.
Получить учетные записи службы Azure Active Directory для использования с SQL Server: Когда организация регистрируется в облачном сервисе Microsoft, она получает Azure Active Directory. Создайте учетные записи служб в Azure Active Directory для SQL Server, чтобы использовать их для аутентификации в Azure Active Directory при доступе к хранилищу ключей.
Один учетная запись службы будет необходима администратору SQL Server для доступа к хранилищу при настройке SQL Server для использования шифрования.
Другим субъектом-службой потребуется ядро СУБД SQL Server для доступа к хранилищу для распакованных ключей, используемых в шифровании SQL Server.
Дополнительные сведения о том, как зарегистрировать приложение и создать служебный принципал, см. в разделе Регистрация приложения в Azure Active Directory в Начало работы с Azure Key Vault. Процесс регистрации возвращает идентификатор приложения (также известный как CLIENT ID ) и ключ проверки подлинности (также называемый секретным ключом ) для каждого субъекта-службы Azure Active Directory . При использовании в инструкции
CREATE CREDENTIAL
дефис должен быть удален из идентификатора клиента . Запишите их для использования в следующих сценариях:Учетная запись службы для входа sysadmin: CLIENTID_sysadmin_login и SECRET_sysadmin_login
субъект-служба для ядра СУБД SQL Server: CLIENTID_DBEngine и SECRET_DBEngine.
предоставить разрешения для субъектов-служб для доступа к Хранилищу ключей:CLIENTID_sysadmin_login и CLIENTID_DBEngineService субъекты требуют получения, списка, оболочки keyKeyи разрешения unwrapKey в хранилище ключей. Если вы планируете создавать ключи с помощью SQL Server, необходимо также предоставить разрешение на создание в хранилище ключей.
Важный
Пользователи должны иметь по крайней мере операции wrapKey и unwrapKey для хранилища ключей.
Дополнительные сведения о предоставлении разрешений в хранилище см. в разделе Авторизовать приложение для использования ключа или секрета раздела Начало работы с Azure Key Vault.
Ссылки на документацию по Azure Key Vault
Справочник по командлетам Azure Key Vault в PowerShell
Шаг 2. Установка соединителя SQL Server
Соединитель SQL Server загружается и устанавливается администратором компьютера SQL Server. Соединитель SQL Server доступен для скачивания из Центра загрузки Майкрософт . Выполните поиск соединителя SQL Server для Microsoft Azure Key Vault, просмотрите сведения, требования к системе и инструкции по установке, а затем выберите для скачивания и установки соединитель, запустив установку с помощью запуска. Просмотрите лицензию и примите лицензию и продолжайте работу.
По умолчанию соединитель устанавливается в C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault. Это расположение можно изменить во время установки. (Если изменено, измените приведенные ниже скрипты.)
После завершения установки на компьютере устанавливаются следующие компоненты:
Microsoft.AzureKeyVaultService.EKM.dll. Это DLL криптографического поставщика EKM, которую необходимо зарегистрировать в SQL Server с помощью инструкции CREATE CRYPTOGRAPHIC PROVIDER.
Коннектор SQL Server Azure Key Vault. Это служба Windows, которая обеспечивает возможность взаимодействия криптографического поставщика EKM с хранилищем ключей.
Установка соединителя SQL Server также позволяет при необходимости скачать примеры скриптов для шифрования SQL Server.
Шаг 3. Настройка SQL Server для использования поставщика EKM для Key Vault
Разрешения
Для выполнения всего этого процесса требуется разрешение CONTROL SERVER или членство в предопределенных ролях сервера sysadmin. Для конкретных действий требуются следующие разрешения:
Чтобы создать поставщика шифрования, требуется разрешение CONTROL SERVER или членство в фиксированной роли сервера sysadmin.
Чтобы изменить параметр конфигурации и запустить инструкцию RECONFIGURE, необходимо предоставить разрешение ALTER SETTINGS на уровне сервера. Разрешение ALTER SETTINGS неявно предоставляется фиксированной серверной роли sysadmin и роли serveradmin .
Чтобы создать учетные данные, требуется разрешение ALTER ANY CREDENTIAL.
Чтобы добавить учетные данные в учетную запись, требуется разрешение ALTER ANY LOGIN.
Чтобы создать асимметричный ключ, требуется разрешение CREATE ASYMMETRIC KEY.
Настройка SQL Server для использования поставщика шифрования
Настройте механизм баз данных для использования EKM и зарегистрируйте (создайте) криптографического поставщика в SQL Server.
-- Enable advanced options. USE master; GO 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, using the SQL Server Connector -- which is an EKM provider for the Azure Key Vault. This example uses -- the name AzureKeyVault_EKM_Prov. CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll'; GO
Настройте учетные данные SQL Server для входа администратора SQL Server, чтобы использовать хранилище ключей для настройки сценариев шифрования SQL Server и управления ими.
Важный
Аргумент IDENTITY
CREATE CREDENTIAL
требует имени хранилища ключей. Аргумент СЕКРЕТCREATE CREDENTIAL
требует, чтобы идентификатор клиента <> (без дефисов) и секрет <> передавались вместе, без пробела между ними.В следующем примере идентификатор клиента (
00001111-aaaa-2222-bbbb-3333cccc4444
) очищается от дефисов и вводится в виде строки00001111AAAA2222BBBB3333CCCC4444
, а секрет представлен строкой SECRET_sysadmin_login.USE master; CREATE CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'ContosoKeyVault', SECRET = '00001111AAAA2222BBBB3333CCCC4444SECRET_sysadmin_login' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ; -- Add the credential to the SQL Server administrators domain login ALTER LOGIN [<domain>/<login>] ADD CREDENTIAL sysadmin_ekm_cred;
Для примера использования переменных в аргументах
CREATE CREDENTIAL
и программного удаления дефисов из идентификатора клиента см. CREATE CREDENTIAL (Transact-SQL) в .Если вы импортировали асимметричный ключ, как описано ранее на шаге 1, разделе 3, откройте ключ, указав имя ключа в следующем примере.
CREATE ASYMMETRIC KEY CONTOSO_KEY FROM PROVIDER [AzureKeyVault_EKM_Prov] WITH PROVIDER_KEY_NAME = 'ContosoMasterKey', CREATION_DISPOSITION = OPEN_EXISTING;
Хотя не рекомендуется для рабочей среды (так как ключ нельзя экспортировать), можно создать асимметричный ключ непосредственно в хранилище из SQL Server. Если ключ не импортирован ранее, создайте асимметричный ключ в хранилище ключей для тестирования с помощью следующего скрипта. Выполните скрипт, используя имя входа, подготовленное с помощью учетных данных sysadmin_ekm_cred.
CREATE ASYMMETRIC KEY CONTOSO_KEY FROM PROVIDER [AzureKeyVault_EKM_Prov] WITH ALGORITHM = RSA_2048, PROVIDER_KEY_NAME = 'ContosoMasterKey';
Совет
Пользователи, получающие ошибку : Не удается экспортировать открытый ключ от поставщика. Код ошибки поставщика: 2053. должны проверить свои разрешения на получение, перечень, ключевую оберткуи развертку ключа в хранилище ключей.
Дополнительные сведения см. в следующих статьях:
Примеры
Пример A. Прозрачное шифрование данных с помощью асимметричного ключа из Хранилища ключей
Выполнив описанные выше действия, создайте учетные данные и имя входа, создайте ключ шифрования базы данных, защищенный асимметричным ключом в хранилище ключей. Используйте ключ шифрования базы данных для шифрования базы данных с помощью TDE.
Для шифрования базы данных требуется разрешение CONTROL для базы данных.
Включение TDE с помощью EKM и Key Vault
Создайте учетные данные SQL Server для использования СУБД при доступе к хранилищу ключей EKM в процессе загрузки базы данных.
Важный
Аргумент IDENTITY
CREATE CREDENTIAL
требует имени хранилища ключей. Аргумент дляCREATE CREDENTIAL
требует указать идентификатор клиента <> (без дефисов) и секрет <> вместе, без пробела между ними.В следующем примере идентификатор клиента (
00001111-aaaa-2222-bbbb-3333cccc4444
) исключает дефисы и вводится как строка00001111AAAA2222BBBB3333CCCC4444
, а секрет представлен строкой SECRET_DBEngine.USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoKeyVault', SECRET = '00001111AAAA2222BBBB3333CCCC4444SECRET_DBEngine' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;
Создайте имя входа SQL Server для использования ядром СУБД для TDE и добавьте в него учетные данные. В этом примере используется CONTOSO_KEY асимметричный ключ, хранящийся в хранилище ключей, который был импортирован или создан ранее для базы данных master, как описано в шаге 3, разделе 3 выше.
USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it loads a database -- encrypted by TDE. CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the TDE Login to add the credential for use by the -- Database Engine to access the key vault ALTER LOGIN TDE_Login ADD CREDENTIAL Azure_EKM_TDE_cred ; GO
Создайте ключ шифрования базы данных (DEK), который будет использоваться для TDE. DEK можно создать с помощью любого поддерживаемого алгоритма ИЛИ длины ключа SQL Server. DeK будет защищен асимметричным ключом в хранилище ключей.
В этом примере используется асимметричный ключ CONTOSO_KEY, хранящийся в хранилище ключей, который был импортирован или создан ранее, как описано в шаге 3, разделе 3 выше.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON ; GO
Дополнительные сведения см. в следующих статьях:
Пример B. Шифрование резервных копий с помощью асимметричного ключа из Key Vault
Зашифрованные резервные копии поддерживаются начиная с SQL Server 2014. В следующем примере создается и восстанавливается резервная копия, зашифрованная ключом шифрования данных, защищенным асимметричным ключом в хранилище ключей.
USE master;
BACKUP DATABASE [DATABASE_TO_BACKUP]
TO DISK = N'[PATH TO BACKUP FILE]'
WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD,
ENCRYPTION(ALGORITHM = AES_256, SERVER ASYMMETRIC KEY = [CONTOSO_KEY]);
GO
Пример кода восстановления.
RESTORE DATABASE [DATABASE_TO_BACKUP]
FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE;
GO
Дополнительные сведения о параметрах резервного копирования см. в разделе BACKUP (Transact-SQL).
Пример C. Шифрование на уровне столбца с помощью асимметричного ключа из Хранилища ключей
В следующем примере создается симметричный ключ, защищенный асимметричным ключом в хранилище ключей. Затем симметричный ключ используется для шифрования данных в базе данных.
В этом примере используется асимметричный ключ CONTOSO_KEY, хранящийся в хранилище ключей, который был импортирован или создан ранее, как описано в шаге 3, разделе 3 выше. Чтобы использовать этот асимметричный ключ в базе данных ContosoDatabase
, необходимо снова выполнить инструкцию CREATE ASYMMETRIC KEY, чтобы предоставить базу данных ContosoDatabase
ссылкой на ключ.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoMasterKey',
CREATION_DISPOSITION = OPEN_EXISTING;
-- Create the data encryption key.
-- The data encryption key can be created using any SQL Server
-- supported algorithm or key length.
-- The DEK will be protected by the asymmetric key in the key vault
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;
DECLARE @DATA VARBINARY(MAX);
--Open the symmetric key for use in this session
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;
--Encrypt syntax
SELECT @DATA = ENCRYPTBYKEY(KEY_GUID('DATA_ENCRYPTION_KEY'), CONVERT(VARBINARY,'Plain text data to encrypt'));
-- Decrypt syntax
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));
--Close the symmetric key
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;
См. также
CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)CREATE CREDENTIAL (Transact-SQL)CREATE ASYMMETRIC KEY (Transact-SQL)CREATE SYMMETRIC KEY (Transact-SQL)Extensible Key Management (EKM)Включение TDE с использованием EKMBackup EncryptionСоздать Зашифрованный Резервный Копии