Настройка расширенного управления ключами SQL Server TDE с помощью Azure Key Vault
Область применения:SQL Server
В этой статье описана установка и настройка соединителя SQL Server для Azure Key Vault.
Примечание.
Microsoft Entra ID ранее был известен как Azure Active Directory (Azure AD).
Расширяемое управление ключами с помощью Azure Key Vault (AKV) доступно для SQL Server на Linux сред, начиная с накопительного обновления 12 SQL Server 2022 (16.x). Выполните те же инструкции, но пропустите шаги 3 и 4.
Предварительные условия
Прежде чем приступить к использованию Azure Key Vault с экземпляром SQL Server, убедитесь, что выполнены следующие предварительные требования.
У вас должна быть подписка Azure.
Установите Azure PowerShell версии 5.2.0 или более поздней.
Создайте клиент Microsoft Entra.
Ознакомьтесь с принципами расширяемого хранилища управления ключами (EKM) в Azure Key Vault, просмотрев расширяемое управление ключами с помощью Azure Key Vault (SQL Server).
Вы можете изменить реестр на компьютере SQL Server.
Установите версию распространяемого пакета Visual Studio C++, соответствующую используемой версии SQL Server:
Версия SQL Server Распространяемый пакет Visual C++ 2008, 2008 R2, 2012, 2014 Распространяемые пакеты Visual C++ для Visual Studio 2013 2016, 2017, 2019, 2022 Распространяемый пакет Visual C++ для Visual Studio 2015 Ознакомьтесь с доступом к Azure Key Vault за брандмауэром , если вы планируете использовать соединитель SQL Server для Azure Key Vault за брандмауэром или прокси-сервером.
Примечание.
В SQL Server 2022 (16.x) начиная с CU 14 и в более поздних версиях, SQL Server на Linux поддерживает управление расширяемыми ключами TDE с помощью Azure Key Vault. Шаги 3 и 4 в этом руководстве не требуются для SQL Server на Linux.
Шаг 1. Создайте учетную запись служебного приложения Microsoft Entra
Чтобы предоставить экземпляру SQL Server разрешения на доступ к хранилищу ключей Azure, вам нужна учетная запись службы в Microsoft Entra ID.
Войдите на портал Azure и выполните одно из следующих действий.
Нажмите кнопку Microsoft Entra ID.
Выберите "Дополнительные службы", а затем в области "Все службы" введите идентификатор Microsoft Entra.
Зарегистрируйте приложение с помощью идентификатора Microsoft Entra, выполнив указанные ниже действия. Подробные пошаговые инструкции смотрите в разделе Получение удостоверения для приложения записи блога Azure Key Vault Azure Key Vault — пошаговые инструкции.
В разделе "Управление" ресурса идентификатора Microsoft Entra выберите Регистрация приложений.
На странице Регистрация приложений выберите Новая регистрация.
На панели Зарегистрировать приложение введите имя приложения, доступное для пользователя, а затем выберите Зарегистрировать.
В левой области выберите Сертификаты и секреты > Секреты клиента > Новый секрет клиента.
В разделе Добавить секрет клиента введите описание и соответствующий срок действия, а затем выберите Добавить. Вы не можете выбрать срок действия, превышающий 24 месяца. Дополнительные сведения см. в разделе Добавление секрета клиента.
В области "Сертификаты и секреты" в разделе "Значение" нажмите кнопку "Копировать" рядом со значением секрета клиента, который будет использоваться для создания асимметричного ключа в SQL Server.
В левой области выберите Обзор, а затем, в поле Идентификатор приложения (клиента), скопируйте значение, которое будет использоваться для создания асимметричного ключа в SQL Server.
Шаг 2. Создание хранилища ключей
Выберите метод, который следует использовать для создания хранилища ключей.
Создание хранилища ключей с помощью портала Azure
Вы можете использовать портал Azure для создания хранилища ключей, а затем добавить в него принципала Microsoft Entra.
Создать группу ресурсов.
Все ресурсы Azure, созданные с помощью портала Azure, должны содержаться в группе ресурсов, которая создается для размещения хранилища ключей. Имя ресурса в этом примере — DocsSampleRG. Выберите собственные имена для группы ресурсов и хранилища ключей. Имена всех хранилищ ключей должны быть глобально уникальными.
На панели Создать группу ресурсов в разделе Сведения о проекте введите значения, а затем выберите Просмотр и создание.
На портале Azure выполните поиск или выберите Хранилища ключей, чтобы создать хранилище ключей. Нажмите кнопку создания.
На панели "Создание хранилища ключей" выберите вкладку "Основные сведения". Введите соответствующие значения для вкладки. Мы также рекомендуем включить защиту очистки.
На вкладке "Конфигурация доступа" вы можете выбрать управление доступом на основе ролей Azure или политику доступа Хранилища. Мы рассмотрим оба варианта, но рекомендуется использовать параметр управления доступом на основе ролей Azure. Дополнительные сведения см. в обзоре модели Access.
Вы можете оставить вкладку "Сеть " в качестве значения по умолчанию или настроить параметры сети для хранилища ключей. Если вы используете брандмауэр с хранилищем ключей, параметр Разрешить доверенным службы Майкрософт обойти брандмауэр должен быть включен, если вы не используете подключения к частной конечной точке. Дополнительные сведения см. в статье Настройка брандмауэров и виртуальных сетей Azure Key Vault.
Выберите Просмотр и создание и создайте хранилище ключей.
Управление доступом на основе ролей Azure
Рекомендуется использовать управление доступом на основе ролей Azure (RBAC) для назначения разрешений хранилищу ключей. Этот метод позволяет назначать разрешения пользователям, группам и приложениям на более детальном уровне. Вы можете назначить разрешения хранилищу ключей в плоскости управления (назначения ролей Azure) и на плоскости данных (политики доступа к хранилищу ключей). Если вы можете использовать только политику доступа, можно пропустить этот раздел и перейти к разделу Политика доступа к Хранилищу. Дополнительные сведения о разрешениях RBAC в Azure Key Vault см. в статье встроенные роли Azure для операций с плоскостью данных в Key Vault.
Перейдите к созданному ресурсу хранилища ключей и выберите параметр управления доступом (IAM ).
Выберите Добавить>Добавить назначение ролей.
Приложению EKM требуется роль пользователя шифрования Key Vault Crypto Service Encryption для выполнения операций обёртки и развёртки. Найдите Key Vault Crypto Service Encryption User и выберите роль. Выберите Далее.
На вкладке "Участники" выберите параметр "Выбрать участников", а затем найдите приложение Microsoft Entra, созданное на шаге 1. Выберите приложение и нажмите кнопку "Выбрать ".
Нажмите дважды кнопку "Проверить и назначить", чтобы завершить назначение роли.
Пользователю, который создает ключ, необходима роль Key Vault Administrator. Найдите администратора Key Vault и выберите роль. Выберите Далее.
Как и в предыдущих шагах, добавьте участника для создания ключа и назначьте роль.
Политика доступа к хранилищу
Примечание.
Если вы используете параметр управления доступом на основе ролей Azure, можно пропустить этот раздел. Если вы хотите изменить модель разрешений, вы можете сделать это, перейдя в меню «Конфигурация доступа» хранилища ключей. Убедитесь, что у вас есть правильные разрешения для управления хранилищем ключей. Дополнительные сведения см. в статье Включение разрешений Azure RBAC для Key Vault.
На вкладке "Конфигурация доступа" выберите политику доступа Vault. Если вы используете существующее хранилище ключей, в ресурсе хранилища ключей выберите меню "Политики доступа" и нажмите кнопку "Создать".
На панели "Создание политики доступа" выберите "Получить и перечислить разрешения" в параметрах "Операции управления ключами". Выберите разрешения "Расупаковка ключа" и "Упаковка ключа" из опций Криптографические операции. Выберите Далее
На вкладке "Основной" выберите приложение, созданное в шаге 1.
Выберите Далее, а затем Создать.
Создание ключа
В области Key Vault выберите "Ключи", а затем выберите параметр "Создать и импортировать". Откроется панель "Создание ключа ". Введите имя хранилища ключей. Выберите параметр "Создать" и введите имя ключа. Соединителю SQL Server требуется, чтобы имя ключа содержало только символы a–z, A–Z, 0–9 и "-" и имело длину не более 26 знаков.
Используйте тип ключа RSA и размер ключа RSA как 2048. В настоящее время EKM поддерживает только ключ RSA. Задайте даты активации и окончания срока действия соответствующим образом и установите Включено как Да.
Передовой опыт
Для обеспечения быстрого восстановления ключей и возможности доступа к данным за пределами Azure мы рекомендуем следующее.
Создайте ключ шифрования локально, на локальном аппаратном модуле безопасности (HSM). Это должен быть асимметричный ключ RSA 2048 или 3072, так как SQL Server поддерживает только такие ключи.
Импортируйте ключ шифрования в Azure Key Vault. Этот процесс описан в последующих разделах.
Прежде чем впервые использовать ключ в хранилище ключей Azure, выполните резервное копирование ключей хранилища ключей Azure с помощью командлета
Backup-AzureKeyVaultKey
PowerShell.При каждом внесении изменений в ключ (например, при добавлении списков управления доступом, тегов, ключевых атрибутов) создавайте новую резервную копию ключа из Azure Key Vault.
Примечание.
Резервное копирование ключа — это операция в Azure Key Vault, которая возвращает файл, который можно сохранить в любом месте.
Использование соединителя SQL Server для Azure Key Vault за брандмауэром или прокси-сервером может повлиять на производительность, если трафик задерживается или блокируется. Ознакомьтесь с Доступом к Azure Key Vault за брандмауэром , чтобы убедиться, что правильные правила установлены.
Необязательно — настройте управляемый аппаратный модуль безопасности (HSM) в Azure Key Vault
Управляемый модуль HSM в Azure Key Vault (аппаратный модуль безопасности) поддерживается для SQL Server и SQL Server на виртуальных машинах Azure при использовании последней версии соединителя SQL Server, а также Azure SQL. Управляемый HSM — это полностью управляемая, высокодоступная, однотенантная служба HSM. Управляемый модуль HSM обеспечивает безопасную основу для криптографических операций и хранилища ключей. Управляемый модуль HSM предназначен для удовлетворения самых строгих требований к безопасности и соответствию требованиям.
На шаге 2 мы узнали, как создать хранилище ключей и ключ в Azure Key Vault. При необходимости можно использовать управляемый HSM в Azure Key Vault для хранения или создания ключа, который будет использоваться с соединителем SQL Server. Ниже приведены шаги.
Создайте управляемый HSM в Azure Key Vault. Это можно сделать с помощью портал Azure, выполнив поиск службы управляемого HSM в Azure Key Vault и создав новый ресурс, или с помощью Azure CLI, PowerShell или шаблона ARM.
Активация управляемого модуля HSM. Только назначенные администраторы, указанные при создании управляемого HSM, могут активировать HSM. Это можно сделать, выбрав управляемый ресурс HSM в портале Azure, выбрав «Скачать домен безопасности» в меню «Обзор» ресурса. Затем следуйте одному из кратких руководств, чтобы активировать управляемый HSM.
Предоставьте разрешения учетной записи службы Microsoft Entra на доступ к управляемому HSM. Роль администратора управляемого HSM не предоставляет разрешения на создание ключа. Аналогично шагу 2, для приложения EKM требуется роль управляемого пользователя HSM для криптографирования или управляемого пользователя службы шифрования HSM для выполнения операций обёртывания и развертывания. Выберите тип приложения Enterprise при добавлении субъекта для назначения роли. Дополнительные сведения см. в статье о встроенных ролях локального RBAC для управляемого устройства HSM.
В меню службы управляемого HSM в Azure Key Vault в разделе "Параметры" выберите "Ключи". В окне "Ключи" выберите "Создать/импортировать и восстановить резервную копию", чтобы создать ключ или импортировать существующий ключ.
Примечание.
При создании учетных данных для доступа к управляемому HSM удостоверение
<name of Managed HSM>.managedhsm.azure.net
, которое можно найти в портале Azure в разделе Обзор в управляемом HSM Azure Key Vault, в качестве URI HSM.Автоматическая смена ключей поддерживается в управляемом HSM в Azure Key Vault. Дополнительные сведения см. в разделе "Настройка автоматического поворота ключей" в управляемом HSM Azure.
Соединитель SQL Server версии 15.0.2000.440 или более поздней требуется для поддержки управляемого HSM в Azure Key Vault.
Управляемый HSM поддерживает подключения к частной конечной точке. Дополнительные сведения см. в статье Интеграция управляемой службы HSM с помощью частного подключения Azure. В этой конфигурации параметр обхода доверенной службы Microsoft должен быть включен в сетевых настройках управляемого HSM в Azure Key Vault.
Шаг 3. Установка соединителя SQL Server
Скачайте Соединитель SQL Server из Центра загрузки Майкрософт. Скачивание должно выполняться администратором компьютера SQL Server.
Примечание.
- Соединители SQL Server версий 1.0.0.440 и более ранних были заменены и больше не поддерживаются в рабочих средах. Для их обновления следует обратиться к инструкциям на странице Обслуживание и устранение неполадок соединителя SQL Server в разделе Обновление соединителя SQL Server.
- Начиная с версии 1.0.3.0, соединитель SQL Server передает соответствующие сообщения об ошибках в журналы событий Windows для устранения неполадок.
- Начиная с версии 1.0.4.0, поддерживается частные облака Azure, включая Azure, управляемые 21Vianet, Azure в Германии и Azure для государственных организаций.
- В версии 1.0.5.0 внесено критическое изменение, касающееся алгоритма отпечатков. После обновления до версии 1.0.5.0.0 может возникнуть сбои восстановления базы данных. Дополнительные сведения см. в статье базы знаний 447099.
- Начиная с версии 1.0.5.0 (TimeStamp: сентябрь 2020 г.), соединитель SQL Server поддерживает фильтрацию сообщений и логику повторных попыток сетевого запроса.
- Начиная с обновленной версии 1.0.5.0 (TimeStamp: ноябрь 2020), соединитель SQL Server поддерживает ключи RSA 2048, RSA 3072, RSA-HSM 2048 и RSA-HSM 3072.
- Начиная с обновленной версии 1.0.5.0 (TimeStamp: ноябрь 2020 г.), можно обратиться к определенной версии ключа в 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 также позволяет при необходимости скачать примеры скриптов для шифрования SQL Server.
Просмотреть описания кодов ошибок, параметры конфигурации и задачи обслуживания для соединителя SQL Server можно в следующих разделах.
- А. Инструкции по обслуживанию для соединителя SQL Server
- В. Описания кодов ошибок для соединителя SQL Server
Шаг 4: Добавление ключа реестра для поддержки поставщика EKM
Предупреждение
Изменение реестра должно выполняться пользователями, которые точно знают, что они делают. Неправильное изменение реестра может привести к серьезным проблемам. Для дополнительной защиты создайте резервную копию реестра перед его изменением. Вы можете восстановить реестр, если возникла проблема.
Изменение реестра должно выполняться администратором компьютера SQL Server.
Убедитесь, что SQL Server установлен и запущен.
Запустите regedit , чтобы открыть редактор реестра.
Создайте раздел реестра
SQL Server Cryptographic Provider
наHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
. Полный путь выглядит так:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider
.Щелкните правой кнопкой
SQL Server Cryptographic Provider
мыши раздел реестра и выберите "Разрешения".Предоставьте разрешения на полный доступ для ключа реестра пользовательскому аккаунту, запустившему службу SQL Server.
Нажмите кнопку Apply (Применить), а затем — ОК.
Закройте редактор реестра и перезапустите службу SQL Server.
Примечание.
Если вы используете TDE с EKM или Azure Key Vault в отказоустойчивом кластере, необходимо выполнить дополнительный шаг, чтобы добавить
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider
в подпрограмму контрольной точки реестра кластера, чтобы реестр мог синхронизироваться с узлами. Синхронизация упрощает восстановление базы данных после перехода на резервный сервер и ротации ключей.Чтобы добавить ключ реестра в процедуру контрольной точки реестра кластера, выполните следующую команду в PowerShell:
Add-ClusterCheckpoint -RegistryCheckpoint "SOFTWARE\Microsoft\SQL Server Cryptographic Provider" -Resourcename "SQL Server"
Шаг 5. Настройка SQL Server
Сведения о минимальном уровне разрешений для выполнения каждого из описанных здесь действий см. в разделе Б. Часто задаваемые вопросы.
master
Настройка базы данных
Запустите sqlcmd или откройте SQL Server Management Studio.
Настройте SQL Server для использования EKM, выполнив следующий скрипт Transact-SQL:
-- Enable advanced options. USE master; GO EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO -- Enable EKM provider EXEC sp_configure 'EKM provider enabled', 1; GO RECONFIGURE;
Зарегистрируйте коннектор SQL Server в качестве поставщика EKM в SQL Server.
Создайте криптографического провайдера с помощью соединителя SQL Server, который служит провайдером EKM для Azure Key Vault. В этом примере имя поставщика —
AzureKeyVault_EKM
.CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll'; GO
Примечание.
Длина пути файла не может превышать 256 символов.
Настройте учетные данные SQL Server для входа в SQL Server, чтобы использовать хранилище ключей.
Учетные данные необходимо добавить к каждому имени входа, которое будет выполнять шифрование с использованием ключа из хранилища ключей. В частности, это могут быть следующие задачи:
Имя входа администратора SQL Server, использующее хранилище ключей для настройки сценариев шифрования SQL Server и управления ими.
Другие имена входа SQL Server, которые могут активировать TDE или другие функции шифрования SQL Server.
Между учетными данными и логинами существует соответствие "один к одному". То есть каждое имя входа должно иметь уникальные учетные данные.
Измените этот скрипт Transact-SQL следующим образом:
Измените аргумент
IDENTITY
(DocsSampleEKMKeyVault
), чтобы он указывал на хранилище ключей Azure.- Если вы используете глобальную службу Azure, замените аргумент именем Azure Key Vault из шага 2. Создайте
IDENTITY
хранилище ключей. - Если вы используете частное облако Azure (например, Azure для государственных организаций, Microsoft Azure под управлением 21Vianet или Azure в Германии), замените
IDENTITY
аргумент URI хранилища, возвращаемый на шаге 3 из раздела "Создание хранилища ключей и ключа" с помощью раздела PowerShell. Не включайтеhttps://
в URI хранилища ключей.
- Если вы используете глобальную службу Azure, замените аргумент именем Azure Key Vault из шага 2. Создайте
Замените первую часть
SECRET
части аргумента идентификатором клиента Microsoft Entra из Шаг 1: Настройка субъекта-службы Microsoft Entra. В этом примере идентификатором клиента являетсяd956f6b9xxxxxxx
.Внимание
Необходимо удалить дефисы из идентификатора приложения (клиента).
Выполните вторую часть аргумента
SECRET
с секретом клиента из шага 1: Настройка учетной записи службы Microsoft Entra. В этом примере секретом клиента являетсяyrA8X~PldtMCvUZPxxxxxxxx
. Последняя строка аргументаSECRET
будет длинной последовательностью букв и чисел без дефисов (за исключением раздела секрета клиента, если секрет клиента содержит все дефисы).USE master; CREATE CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'DocsSampleEKMKeyVault', -- for public Azure -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.microsoftazure.de', -- for Azure Germany -- WITH IDENTITY = '<name of Managed HSM>.managedhsm.azure.net', -- for Managed HSM (HSM URI in the Azure portal resource) --<----Application (Client) ID ---><--Microsoft Entra app (Client) ID secret--> SECRET = 'd956f6b9xxxxxxxyrA8X~PldtMCvUZPxxxxxxxx' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM; -- Add the credential to the SQL Server administrator's domain login ALTER LOGIN [<domain>\<login>] ADD CREDENTIAL sysadmin_ekm_cred;
Пример использования переменных для
CREATE CREDENTIAL
аргумента и программного удаления дефисов из идентификатора клиента см. в разделе CREATE CREDENTIAL.Откройте ключ Azure Key Vault в экземпляре SQL Server.
Независимо от того, создали ли вы новый ключ или импортировали асимметричный ключ, как описано на шаге 2. Создайте хранилище ключей, необходимо открыть ключ. Откройте его, указав имя ключа в следующем скрипте Transact-SQL.
Внимание
Сначала выполните предварительные требования реестра для этого шага.
- Замените
EKMSampleASYKey
на имя, которое вы хотите присвоить ключу в SQL Server. - Замените
ContosoRSAKey0
именем ключа в Azure Key Vault или управляемом HSM. Ниже приведен пример ключа без версии.
CREATE ASYMMETRIC KEY EKMSampleASYKey FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0', CREATION_DISPOSITION = OPEN_EXISTING;
Начиная с обновленной версии 1.0.5.0 соединителя SQL Server, можно обратиться к определенной версии ключа в Azure Key Vault:
CREATE ASYMMETRIC KEY EKMSampleASYKey FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379', CREATION_DISPOSITION = OPEN_EXISTING;
В предыдущем примере скрипта
1a4d3b9b393c4678831ccc60def75379
представляет конкретную версию ключа, который будет использоваться. При использовании этого скрипта не имеет значения, будет ли ключ обновлен новой версией. Версия ключа (например,1a4d3b9b393c4678831ccc60def75379
) всегда будет использоваться для операций в базе данных.- Замените
Создайте новое имя входа с помощью асимметричного ключа в SQL Server, созданном на предыдущем шаге.
--Create a Login that will associate the asymmetric key to this login CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY EKMSampleASYKey;
Создайте новое имя входа из асимметричного ключа в SQL Server. Удалите сопоставление учетных данных на шаге 5. Настройте SQL Server , чтобы учетные данные могли быть сопоставлены с новым именем входа.
--Now drop the credential mapping from the original association ALTER LOGIN [<domain>\<login>] DROP CREDENTIAL sysadmin_ekm_cred;
Измените новый логин и сопоставьте учетные данные EKM с новым логином.
--Now add the credential mapping to the new Login ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
Настройка шифрования пользовательской базы данных
Создайте тестовую базу данных, которая будет зашифрована с помощью ключа Azure Key Vault.
--Create a test database that will be encrypted with the Azure Key Vault key CREATE DATABASE TestTDE;
Создайте ключ шифрования базы данных с помощью
ASYMMETRIC KEY
(EKMSampleASYKey
).USE <DB Name>; --Create an ENCRYPTION KEY using the ASYMMETRIC KEY (EKMSampleASYKey) CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY EKMSampleASYKey;
Зашифруйте тестовую базу данных. Включите TDE, задав параметр
ENCRYPTION ON
.--Enable TDE by setting ENCRYPTION ON ALTER DATABASE TestTDE SET ENCRYPTION ON;
Сведения о реестре
Выполните следующий запрос Transact-SQL в
master
базе данных, чтобы отобразить асимметричный ключ, используемый.SELECT name, algorithm_desc, thumbprint FROM sys.asymmetric_keys;
Инструкция возвращает следующие данные:
name algorithm_desc thumbprint EKMSampleASYKey RSA_2048 <key thumbprint>
В пользовательской базе данных (
TestTDE
) выполните следующий запрос Transact-SQL, чтобы отобразить используемый ключ шифрования.SELECT encryptor_type, encryption_state_desc, encryptor_thumbprint FROM sys.dm_database_encryption_keys WHERE database_id = DB_ID('TestTDE');
Инструкция возвращает следующие данные:
encryptor_type encryption_state_desc encryptor_thumbprint ASYMMETRIC KEY ENCRYPTED <key thumbprint>
Очистка
Очистите тестовые объекты. Удалите все объекты, созданные в этом тестовом сценарии.
-- CLEAN UP USE master; GO ALTER DATABASE [TestTDE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE [TestTDE]; GO ALTER LOGIN [TDE_Login] DROP CREDENTIAL [sysadmin_ekm_cred]; DROP LOGIN [TDE_Login]; GO DROP CREDENTIAL [sysadmin_ekm_cred]; GO USE master; GO DROP ASYMMETRIC KEY [EKMSampleASYKey]; DROP CRYPTOGRAPHIC PROVIDER [AzureKeyVault_EKM]; GO
Примеры сценариев см. в блоге Прозрачное шифрование данных и расширенное управление ключами SQL Server с помощью Azure Key Vault.
Раздел
SQL Server Cryptographic Provider
реестра не очищается автоматически после удаления ключа или всех ключей EKM. Его необходимо очистить вручную. Очистка раздела реестра должна выполняться с крайней осторожностью, так как преждевременная очистка реестра может нарушить функциональные возможности EKM. Чтобы очистить ключ реестра, удалите ключSQL Server Cryptographic Provider
наHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
.
Устранение неполадок
Если раздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider
реестра не создан или необходимые разрешения не предоставлены, следующая инструкция DDL завершится ошибкой:
CREATE ASYMMETRIC KEY EKMSampleASYKey
FROM PROVIDER [AzureKeyVault_EKM]
WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
CREATION_DISPOSITION = OPEN_EXISTING;
Msg 33049, Level 16, State 2, Line 65
Key with name 'ContosoRSAKey0' does not exist in the provider or access is denied. Provider error code: 2058. (Provider Error - No explanation is available, consult EKM Provider for details)
Секреты клиента, срок действия которых истекает
Если учетные данные имеют секрет клиента, срок действия которого скоро истечет, учетным данным можно назначить новый секрет.
Обновите секрет, изначально созданный на шаге 1: Настройка субъекта-службы Microsoft Entra.
Измените учетные данные с помощью того же удостоверения и нового секрета с помощью следующего кода. Замените
<New Secret>
новым секретом:ALTER CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'DocsSampleEKMKeyVault', SECRET = '<New Secret>';
Перезапустите службу SQL Server.
Примечание.
Если вы используете EKM в группе доступности (AG), необходимо изменить учетные данные и перезапустить службу SQL Server на всех узлах группы доступности.
Смена асимметричного ключа с новым ключом AKV или новой версией ключа AKV
Примечание.
- При ручной смене ключа AKV сервер SQL поддерживает как ключ без версии, так и ключ с версией, и нет необходимости использовать другой ключ AKV.
- Исходный ключ AKV можно повернуть, создав новую версию, которая может заменить предыдущий ключ, созданный в SQL Server.
- Для ручной смены ключей необходимо создать новый асимметричный ключ SQL Server, ссылающийся на ключ без версии или версионный ключ, который был заменён в AKV. Для нового асимметричного ключа SQL Server будет автоматически выбран не имеющий версии ключ AKV с использованием самой высокой версии ключа в AKV. Для ключа с версией необходимо указать самую высокую версию в AKV с помощью синтаксиса
WITH PROVIDER_KEY_NAME = <key_name>/<version>
. Ключ шифрования базы данных можно изменить для повторного шифрования с помощью нового асимметричного ключа. В политике ротации AKV можно использовать то же имя ключа (версионное или безверсии). Для ключа с версиями необходимо добавить текущую версию. Для ключа без версии используйте то же имя ключа.
SQL Server не имеет механизма автоматического поворота асимметричного ключа, используемого для TDE. Ниже приведены шаги по повороту асимметричного ключа вручную.
Учетные данные, используемые в начальной настройке (
sysadmin_ekm_cred
), также можно повторно использовать для смены ключей. При необходимости создайте новые учетные данные для нового асимметричного ключа.CREATE CREDENTIAL <new_credential_name> WITH IDENTITY = <key vault>, SECRET = 'existing/new secret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
Добавьте учетные данные к основному объекту:
ALTER LOGIN [domain\userName]; ADD CREDENTIAL <new_credential_name>;
Создайте асимметричный ключ на основе нового ключа (после поворота ключа). Новый ключ может быть ключом без версии (
ContosoRSAKey0
в нашем примере) или ключом с версиями (ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379
где1a4d3b9b393c4678831ccc60def75379
версия обновленного ключа в AKV):CREATE ASYMMETRIC KEY <new_ekm_key_name> FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = <new_key_from_key_vault>, CREATION_DISPOSITION = OPEN_EXISTING;
Создайте новое имя входа из нового асимметричного ключа:
CREATE LOGIN <new_login_name> FROM ASYMMETRIC KEY <new_ekm_key_name>;
Удалите учетные данные из субъекта:
ALTER LOGIN [domain\username] DROP CREDENTIAL <new_credential_name>;
Сопоставление учетных данных AKV с новым именем входа:
ALTER LOGIN <new_login_name>; ADD CREDENTIAL <new_credential_name>;
Измените ключ шифрования базы данных (DEK) для повторного шифрования с помощью нового асимметричного ключа:
USE [databaseName]; GO ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY <new_ekm_key_name>;
Вы можете проверить новый асимметричный ключ и ключ шифрования, используемый в базе данных:
SELECT encryptor_type, encryption_state_desc, encryptor_thumbprint FROM sys.dm_database_encryption_keys WHERE database_id = DB_ID('databaseName');
Этот отпечаток должен соответствовать разделу реестра по пути
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider\Azure Key Vault\<key_vault_url>\<thumbprint>
и дать вам повернутыйKeyUri
ключ.
Внимание
Смена логического средства защиты TDE для сервера означает переход на новый асимметричный ключ или сертификат, который защищает ключ шифрования базы данных (DEK). Смена ключей является оперативной операцией и должна занять всего несколько секунд, так как это расшифровывает и повторно шифрует DEK, а не всю базу данных.
Не удаляйте предыдущие версии ключа после смены. При смене ключей некоторые данные по-прежнему шифруются с помощью предыдущих ключей, таких как старые резервные копии базы данных, файлы журнала резервного копирования, виртуальные файлы журналов (VLF) и файлы журнала транзакций. Предыдущие ключи также могут потребоваться для восстановления базы данных или восстановления базы данных.