CMK уровня базы данных доступен для База данных SQL Azure (все выпуски База данных SQL). Он недоступен для Управляемый экземпляр SQL Azure, локальной среды SQL Server, виртуальных машин Azure и Azure Synapse Analytics (выделенных пулов SQL (ранее — хранилище данных SQL)).
Это же руководство можно применить к настройке ключей, управляемых клиентом на уровне базы данных, в том же клиенте, за исключением параметра федеративного идентификатора клиента. Дополнительные сведения об управляемых клиентом ключах уровня базы данных см. в разделе Прозрачное шифрование данных (TDE) с ключами, управляемыми клиентом, на уровне базы данных.
В этом руководстве мы рассмотрим шаги по созданию, обновлению и получению База данных SQL Azure с прозрачным шифрованием данных (TDE) и ключами, управляемыми клиентом (CMK) на уровне базы данных, используя управляемое удостоверение, назначаемое пользователем, для доступа к Azure Key Vault. Azure Key Vault находится в другом клиенте Microsoft Entra, отличном от База данных SQL Azure. Дополнительные сведения см. в разделе "Ключи, управляемые клиентом, с прозрачным шифрованием данных".
Примечание.
Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).
Необходимые компоненты
В этом руководстве предполагается, что у вас есть два клиента Microsoft Entra.
Первый состоит из ресурса База данных SQL Azure, мультитенантного приложения Microsoft Entra и управляемого удостоверения, назначаемого пользователем.
Второй клиент размещает Azure Key Vault.
Подробные инструкции по настройке межтенантной cmK и разрешений RBAC, необходимых для настройки приложений Microsoft Entra и Azure Key Vault, см. в одном из следующих руководств:
Модуль Az PowerShell версии 10.3.0 или более поздней.
Разрешения RBAC, необходимые для CMK уровня базы данных, являются теми же разрешениями, которые необходимы для CMK уровня сервера. В частности, те же разрешения RBAC, которые применимы при использовании Azure Key Vault, управляемых удостоверений и межтенантной cmK для TDE на уровне сервера, применимы на уровне базы данных. Дополнительные сведения об управлении ключами и политике доступа см. в разделе "Управление ключами".
Необходимые ресурсы в первом клиенте
В этом руководстве предполагается, что первый клиент принадлежит независимому поставщику программного обеспечения (ISV), а второй клиент — от своего клиента. Дополнительные сведения об этом сценарии см. в разделе Межтенантные ключи, управляемые клиентом, с прозрачным шифрованием данных.
Прежде чем настроить TDE для База данных SQL Azure с помощью межтенантной cmK, необходимо иметь мультитенантное приложение Microsoft Entra, которое настроено с управляемым удостоверением, назначенным пользователем, как федеративные учетные данные удостоверения для приложения. Следуйте одному из руководств в предварительных требованиях.
Запишите имя приложения и идентификатор приложения. Это можно найти в приложениях портал Azure> Microsoft Entra ID>Enterprise и найти созданное приложение.
Необходимые ресурсы во втором клиенте
Примечание.
Модули Azure AD и MSOnline PowerShell устарели с 30 марта 2024 г. Дополнительные сведения см. в обновлении об отмене. После этой даты поддержка этих модулей ограничена поддержкой миграции в пакет SDK Для Microsoft Graph PowerShell и исправления безопасности. Устаревшие модули будут продолжать функционировать до 30 марта 2025 года.
Рекомендуется перенести в Microsoft Graph PowerShell для взаимодействия с идентификатором Microsoft Entra (ранее — Azure AD). Часто задаваемые вопросы о миграции см. в разделе "Вопросы и ответы о миграции". Примечание. Версии 1.0.x MSOnline могут возникнуть сбоем после 30 июня 2024 г.
Во втором клиенте, где находится Azure Key Vault, создайте субъект-службу (приложение) с помощью идентификатора приложения из зарегистрированного приложения из первого клиента. Ниже приведены некоторые примеры регистрации мультитенантного приложения. <ApplicationID> Замените и на <TenantID> идентификатор клиента из идентификатора Microsoft Entra и идентификатора приложения из мультитенантного приложения соответственно:
Создание нового База данных SQL Azure с ключами, управляемыми клиентом на уровне базы данных
Ниже приведены примеры создания базы данных на База данных SQL Azure с управляемым удостоверением, назначаемого пользователем, и настройка ключа, управляемого клиентом между клиентами, на уровне базы данных. Управляемое удостоверение, назначаемое пользователем, требуется для настройки управляемого клиентом ключа для прозрачного шифрования данных на этапе создания базы данных.
Если вы еще не вошли на портал Azure, выполните вход при появлении соответствующего запроса.
В разделе Базы данных SQL оставьте для параметра Тип ресурса значение Отдельная база данных и нажмите кнопку Создать.
На вкладке "Основы" формы "Создать База данных SQL" в разделе "Сведения о проекте" выберите нужную подписку Azure, группу ресурсов и сервер для базы данных. Затем используйте уникальное имя для имени базы данных. Если вы не создали логический сервер для База данных SQL Azure, см. статью "Создание сервера, настроенного с помощью TDE с помощью ключа, управляемого клиентом", для справки.
При переходе на вкладку "Безопасность" выберите "Настроить прозрачное шифрование данных".
В меню прозрачного шифрования данных выберите управляемый клиентом уровень базы данных (CMK).
Для управляемого удостоверения, назначаемого пользователем, выберите "Настроить" , чтобы включить удостоверение базы данных и добавить назначаемое пользователем управляемое удостоверение в ресурс, если требуемое удостоверение не отображается в меню "Удостоверение ". Затем выберите Применить.
Примечание.
Вы можете настроить федеративное удостоверение клиента здесь, если вы настраиваете межтенантную CMK для TDE.
В меню прозрачного шифрования данных выберите пункт "Изменить ключ". Выберите нужную подписку, хранилище ключей, ключ и версию для ключа, управляемого клиентом, который будет использоваться для TDE. Выберите кнопку Выбрать. После выбора ключа можно также добавить дополнительные ключи базы данных при необходимости с помощью URI хранилища ключей Azure (идентификатор объекта) в меню прозрачного шифрования данных.
Автоматическая смена ключей также может быть включена на уровне базы данных с помощью флажка автоматического поворота ключа в меню прозрачного шифрования данных.
Нажмите кнопку "Применить" , чтобы продолжить создание базы данных.
В нижней части страницы щелкните Просмотреть и создать.
На странице Просмотр и создание после проверки нажмите кнопку Создать.
Примечание.
Создание базы данных завершится ошибкой, если управляемое удостоверение, назначаемое пользователем, не имеет правильных разрешений в хранилище ключей. Управляемое удостоверение, назначаемое пользователем, потребует разрешений Get, wrapKey и unwrapKey в хранилище ключей. Дополнительные сведения см. в разделе "Управляемые удостоверения" для прозрачного шифрования данных с помощью ключа, управляемого клиентом.
Сведения об установке текущего выпуска Azure CLI см. в статье Установка Azure CLI.
Создайте базу данных, настроенную с помощью управляемого удостоверения, назначаемого пользователем, и кросстенантного управляемого клиентом TDE с помощью команды az sql db create . Идентификатор ключа второго клиента можно использовать в encryption-protector поле. Идентификатор приложения с несколькими клиентами можно использовать в federated-client-id поле. Этот --encryption-protector-auto-rotation параметр можно использовать для включения автоматического поворота ключей на уровне базы данных.
Чтобы получить идентификатор ресурса управляемого удостоверения, назначаемого пользователем, выполните поиск по запросу Управляемые удостоверения на портале Azure. Найдите свое управляемое удостоверение и перейдите в раздел Свойства. Пример идентификатора ресурса UMI выглядит следующим образом./subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
Создайте базу данных, настроенную с помощью управляемого удостоверения, назначаемого пользователем, и межтенантного управляемого клиентом TDE на уровне базы данных с помощью PowerShell.
<ResourceGroupName>: имя группы ресурсов для логического сервера Azure SQL.
<DatabaseName>: используйте уникальное имя базы данных SQL Azure
<ServerName>: используйте уникальное имя логического сервера Azure SQL.
<UserAssignedIdentityId> — список управляемых удостоверений, назначаемых пользователем, которые должны быть назначены серверу (может быть одно или несколько).
<CustomerManagedKeyId>: идентификатор ключа из второго хранилища ключей клиента
-EncryptionProtectorAutoRotation: можно использовать для включения автоматического поворота ключей на уровне базы данных
Чтобы получить идентификатор ресурса управляемого удостоверения, назначаемого пользователем, выполните поиск по запросу Управляемые удостоверения на портале Azure. Найдите свое управляемое удостоверение и перейдите в раздел Свойства. Пример идентификатора ресурса UMI выглядит следующим образом./subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
# create a server with user-assigned managed identity and cross-tenant customer-managed TDE with automatic key rotation enabled
$params = @{
ResourceGroupName = '<ResourceGroupName>'
ServerName = '<ServerName>'
DatabaseName = '<DatabaseName>'
AssignIdentity = $true
UserAssignedIdentityId = '<UserAssignedIdentityId>'
EncryptionProtector = '<CustomerManagedKeyId>'
FederatedClientId = '<FederatedClientId>'
EncryptionProtectorAutoRotation = $true
}
New-AzSqlDatabase @params
Ниже приведен пример шаблона ARM, который создает База данных SQL Azure с управляемым удостоверением, назначенным пользователем, и управляемым клиентом TDE на уровне базы данных. Для межтенантной cmK используйте идентификатор ключа из второго хранилища ключей клиента и идентификатор приложения из мультитенантного приложения.
Используйте инструкции из разделов о пользовательском развертывании на портале Azure и создании собственного шаблона с помощью редактора. Затем необходимо сохранить конфигурацию после того, как вставлен пример.
Чтобы получить идентификатор ресурса управляемого удостоверения, назначаемого пользователем, выполните поиск по запросу Управляемые удостоверения на портале Azure. Найдите свое управляемое удостоверение и перейдите в раздел Свойства. Пример идентификатора ресурса UMI выглядит следующим образом/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Обновление существующей База данных SQL Azure с помощью ключей, управляемых клиентом на уровне базы данных
Ниже приведены примеры обновления существующей базы данных на База данных SQL Azure с управляемым удостоверением, назначаемым пользователем, и настройка ключа, управляемого клиентом между клиентами, на уровне базы данных. Управляемое удостоверение, назначаемое пользователем, требуется для настройки управляемого клиентом ключа для прозрачного шифрования данных на этапе создания базы данных.
В портал Azure перейдите к ресурсу базы данных SQL, который требуется обновить с помощью ключа, управляемого клиентом на уровне базы данных.
В разделе "Безопасность" выберите "Удостоверение". Добавление управляемого удостоверения, назначаемого пользователем для этой базы данных, а затем нажмите кнопку "Сохранить".
Теперь перейдите в меню "Шифрование данных" в разделе "Безопасность " для базы данных. Выберите управляемый клиентом ключ уровня базы данных (CMK). Удостоверение базы данных для базы данных уже должно быть включено, так как вы настроили удостоверение на последнем шаге.
Выберите "Изменить ключ". Выберите нужную подписку, хранилище ключей, ключ и версию для ключа, управляемого клиентом, который будет использоваться для TDE. Выберите кнопку Выбрать. После выбора ключа можно также добавить дополнительные ключи базы данных по мере необходимости с помощью URI хранилища ключей Azure (идентификатор объекта) в меню шифрования данных.
Установите флажок автоматического поворота ключа, если вы хотите включить автоматическую смену ключей на уровне базы данных.
Выберите Сохранить.
Сведения об установке текущего выпуска Azure CLI см. в статье Установка Azure CLI.
Обновите базу данных, настроенную с помощью управляемого удостоверения, назначаемого пользователем, и кросстенантного управляемого клиентом TDE с помощью команды az sql db create . Идентификатор ключа второго клиента можно использовать в encryption-protector поле. Идентификатор приложения с несколькими клиентами можно использовать в federated-client-id поле.
Чтобы получить идентификатор ресурса управляемого удостоверения, назначаемого пользователем, выполните поиск по запросу Управляемые удостоверения на портале Azure. Найдите свое управляемое удостоверение и перейдите в раздел Свойства. Пример идентификатора ресурса UMI выглядит следующим образом/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>. Этот --encryption-protector-auto-rotation параметр можно использовать для включения автоматического поворота ключей на уровне базы данных.
$keys Список — это разделенный пробелом список ключей, которые должны быть добавлены в базу данных, и $keysToRemove это разделенный пробелом список ключей, которые необходимо удалить из базы данных.
Обновите базу данных, настроенную с помощью управляемого удостоверения, назначаемого пользователем, и межтенантного управляемого клиентом TDE на уровне базы данных с помощью PowerShell.
<ResourceGroupName>: имя группы ресурсов для логического сервера Azure SQL.
<DatabaseName>: используйте уникальное имя базы данных SQL Azure
<ServerName>: используйте уникальное имя логического сервера Azure SQL.
<UserAssignedIdentityId> — список управляемых удостоверений, назначаемых пользователем, которые должны быть назначены серверу (может быть одно или несколько).
<CustomerManagedKeyId>: идентификатор ключа из второго хранилища ключей клиента
<ListOfKeys>: разделенный запятыми список ключей, управляемых клиентом уровня базы данных, которые необходимо добавить в базу данных.
<ListOfKeysToRemove>: разделенный запятыми список ключей, управляемых клиентом уровня базы данных, которые будут удалены из базы данных.
-EncryptionProtectorAutoRotation: можно использовать для включения автоматического поворота ключей на уровне базы данных
Чтобы получить идентификатор ресурса управляемого удостоверения, назначаемого пользователем, выполните поиск по запросу Управляемые удостоверения на портале Azure. Найдите свое управляемое удостоверение и перейдите в раздел Свойства. Пример идентификатора ресурса UMI выглядит следующим образом/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Ниже приведен пример шаблона ARM, который обновляет База данных SQL Azure с управляемым удостоверением, назначенным пользователем, и управляемым клиентом TDE на уровне базы данных. Для межтенантного cmK используйте идентификатор ключа из второго хранилища ключей клиента и идентификатор приложения из мультитенантного приложения.
Используйте инструкции из разделов о пользовательском развертывании на портале Azure и создании собственного шаблона с помощью редактора. Затем необходимо сохранить конфигурацию после того, как вставлен пример.
Чтобы получить идентификатор ресурса управляемого удостоверения, назначаемого пользователем, выполните поиск по запросу Управляемые удостоверения на портале Azure. Найдите свое управляемое удостоверение и перейдите в раздел Свойства. Пример идентификатора ресурса UMI выглядит следующим образом/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Чтобы удалить ключ из базы данных, значение словаря ключей определенного ключа должно быть передано как null. Например, "https://yourvault.vault.azure.net/keys/yourkey1/fd021f84a0d94d43b8ef33154bca0000": null.
Просмотр параметров ключа, управляемого клиентом на уровне базы данных, на База данных SQL Azure
Ниже приведены примеры получения ключей, управляемых клиентом на уровне базы данных. Ресурс Microsoft.Sql/servers/databases ARM по умолчанию отображает только средство защиты TDE и управляемое удостоверение, настроенные в базе данных. Чтобы развернуть полный список ключей, используйте параметр -ExpandKeyList. Кроме того, фильтры, такие как -KeysFilter "current" и значение времени (например, 2023-01-01) можно использовать для получения текущих ключей, используемых и ключей, используемых в прошлом в определенный момент времени. Эти фильтры поддерживаются только для отдельных запросов базы данных, а не для запросов на уровне сервера.
Чтобы просмотреть ключи, управляемые клиентом уровня базы данных, в портал Azure, перейдите в меню "Шифрование данных" ресурса базы данных SQL.
Сведения об установке текущего выпуска Azure CLI см. в статье Установка Azure CLI.
# Retrieve the basic database level customer-managed key settings from a database
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter current
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter 01-01-2015
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
az sql db list --resource-group $resourceGroupName --server $serverName
# Retrieve the basic database level customer-managed key settings from a database
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName>
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter '2023-02-03 00:00:00'
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName> | Select DatabaseName, EncryptionProtector
Используйте REST API 2022-08-01-preview для База данных SQL Azure.
Получение базовых параметров ключа, управляемого клиентом, уровня базы данных.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview
Получение основных параметров ключа, управляемого клиентом уровня базы данных, из базы данных и всех ключей, которые когда-либо добавлялись.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys
Получение основных параметров ключа, управляемого клиентом уровня базы данных, из базы данных и текущих ключей, используемых
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('current'))
Получение основных параметров ключа, управляемого клиентом уровня базы данных, из базы данных и ключей, используемых в определенный момент времени.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('2023-02-04T01:57:42.49Z'))
Вывод списка всех ключей на логическом сервере
Чтобы получить список всех ключей (а не только основной предохранитель), используемый каждой базой данных на сервере, он должен быть по отдельности запрашивается с фильтрами ключей. Ниже приведен пример запроса PowerShell для перечисления каждого ключа на логическом сервере.
Повторная проверка ключа на уровне базы данных, управляемого клиентом, на База данных SQL Azure
В случае недоступного средства защиты TDE, как описано в прозрачное шифрование данных (TDE) с помощью CMK, после исправления доступа к ключу можно использовать повторную операцию ключа, чтобы сделать базу данных доступной. Примеры см. в следующих инструкциях или командах.
Используя портал Azure, найдите ресурс базы данных SQL. Выбрав ресурс базы данных SQL, перейдите на вкладку прозрачное шифрование данных меню "Шифрование данных" в разделе "Параметры безопасности". Если база данных потеряла доступ к Azure Key Vault, появится кнопка повторного нажатия клавиши , и у вас будет возможность повторно изменить существующий ключ, выбрав "Повторить существующий ключ" или другой ключ, выбрав " Выбрать ключ резервного копирования".
Сведения об установке текущего выпуска Azure CLI см. в статье Установка Azure CLI.
az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase
Используйте REST API 2022-08-01-preview для База данных SQL Azure.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revalidate?api-version=2022-08-01-preview
Восстановление управляемого клиентом ключа уровня базы данных на База данных SQL Azure
Базу данных, настроенную с помощью CMK уровня базы данных, можно вернуть к шифрованию уровня сервера, если сервер настроен с помощью ключа, управляемого службой, с помощью следующих команд.
Чтобы вернуть параметр ключа, управляемого клиентом уровня базы данных, на ключ шифрования уровня сервера в портал Azure, перейдите на вкладку прозрачное шифрование данных меню шифрования данных ресурса базы данных SQL. Выберите ключ шифрования уровня сервера и нажмите кнопку "Сохранить ", чтобы сохранить параметры.
Примечание.
Чтобы использовать параметр ключа шифрования уровня сервера для отдельных баз данных, логический сервер для База данных SQL Azure должен быть настроен для использования управляемого службой ключа для TDE.
Сведения об установке текущего выпуска Azure CLI см. в статье Установка Azure CLI.
az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
Используйте REST API 2022-08-01-preview для База данных SQL Azure.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revert?api-version=2022-08-01-preview
Следующие шаги
Ознакомьтесь со следующей документацией по различным операциям CMK на уровне базы данных: