Включение ключей, управляемых клиентом, для управляемых служб
Примечание.
Для этой функции требуется план "Премиум".
Чтобы расширить возможности управления данными, можно добавить собственный ключ для защиты доступа к определенным типам данных и управления им. Azure Databricks имеет несколько ключевых функций, управляемых клиентом. Чтобы сравнить связанные функции, ознакомьтесь с ключами, управляемыми клиентом, для шифрования.
Совет
В этой статье описывается настройка собственного ключа из хранилищ Azure Key Vault для управляемых служб. Инструкции по использованию ключа из управляемого HSM в Azure Key Vault см. в статье "Включение ключей, управляемых клиентом HSM" для управляемых служб.
Данные управляемых служб на уровне управления Azure Databricks шифруются в неактивном состоянии. Можно добавить ключ, управляемый клиентом, для управляемых служб, чтобы защитить и отслеживать доступ к следующим типам зашифрованных данных:
- Источник записных книжек на уровне управления Azure Databricks.
- Результаты интерактивного выполнения записных книжек (выполненных не как задания), которые хранятся на уровне управления. По умолчанию объемные результаты также хранятся в корневом контейнере рабочей области. Можно настроить Azure Databricks на хранение всех результатов интерактивного выполнения записных книжек в облачной учетной записи.
- Секреты, хранимые API диспетчера секретов.
- Журнал запросов и запросы Databricks SQL.
- Личные маркеры доступа (PAT) или другие credentials, используемые для set интеграции Git с папками Databricks Git.
После добавления в рабочую область шифрования ключом, управляемым клиентом, Azure Databricks будет использовать ваш ключ для управления доступом к ключу, шифрующему будущие операции записи в данных управляемых служб вашей рабочей области. Существующие данные повторно не шифруются. Ключ шифрования данных кэшируется в памяти для нескольких операций чтения и записи, а затем удаляется из памяти с регулярной частотой. Для новых запросов к этим данным потребуется отдельный запрос к системе управления ключами вашей облачной службы. Если удалить или revoke ваш ключ, чтение или запись защищенных данных завершится сбоем в конце времени кэширования.
Вы можете повернуть (update) ключ, управляемый клиентом, в любое время позже. См . раздел "Смена ключа в дальнейшем".
Эта возможность не шифрует данные, хранящиеся за пределами уровня управления. Сведения о других функциях ключей, управляемых клиентом, см. в разделе "Ключи, управляемые клиентом" для шифрования
Требования
Чтобы использовать Azure CLI для этих задач, установите средство Azure CLI и установите расширение Databricks:
az extension add --name databricks
Чтобы использовать PowerShell для этих задач, установите Azure PowerShell и установите модуль Databricks PowerShell. Кроме того, необходимо войти в систему:
Connect-AzAccount
Сведения о входе в учетную запись Azure в качестве пользователя см. в статье "Вход в PowerShell" с учетной записью пользователя Azure Databricks. Чтобы войти в учетную запись Azure в качестве субъекта-службы, ознакомьтесь с именем входа PowerShell с помощью субъекта-службы Идентификатора Microsoft Entra.
шаг 1. Set настройка Хранилища Ключей
Необходимо создать экземпляр Azure Key Vault и set его разрешения. Это можно сделать с помощью портал Azure, интерфейса командной строки или API.
Внимание
Хранилище ключей должно находиться в том же клиенте Azure, что и рабочая область Azure Databricks.
Эти инструкции предоставляют несколько вариантов развертывания:
Использование портала Azure
- Создайте или select ключевое хранилище (Key Vault):
- Чтобы создать Key Vault, перейдите на страницу портал Azure для создания Key Vault. Нажмите кнопку + Создать. Введите имя группы ресурсов, имя Key Vault, регион и ценовую категорию. Щелкните Просмотр и создание, а затем нажмите кнопку Создать.
- Чтобы использовать существующее хранилище ключей, скопируйте его имя Key Vault на следующий шаг.
-
Get идентификатор объекта приложения AzureDatabricks:
- На портале Azure перейдите к Microsoft Entra ID.
- Select Приложения для предприятия в боковом меню.
-
AzureDatabricks
Найдите и щелкните корпоративное приложение в результатах. - В разделе Свойства скопируйте идентификатор объекта.
- Добавьте политику доступа в Key Vault с помощью портал Azure:
Перейдите в Azure Key Vault, который будет использоваться для настройки управляемых клиентом ключей для управляемых служб для рабочей области.
Откройте вкладку "Политики доступа" на левой панели.
Select кнопка "Создать" , находится наверху страницы.
В разделе разрешения ключа на вкладке разрешения включите Get, ключа Unwrapи ключа Wrap.
Нажмите кнопку Далее.
На вкладке основной введите
AzureDatabricks
и прокрутите страницу до первого результата корпоративного приложения с идентификатором приложения2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
и select его.Перейдите на вкладку "Просмотр и создание " и нажмите кнопку b.
Использование Azure CLI
Используйте Azure CLI, чтобы выполнить следующие инструкции.
Создайте хранилище ключей или select существующее хранилище ключей:
Чтобы создать Key Vault, используйте следующую команду Azure CLI и замените элементы в скобках своим регионом, именем Key Vault, именем группы ресурсов и расположением:
az keyvault create --location <region> \ --name <key-vault-name> \ --resource-group <resource-group-name> \ --location <location> \ --enable-purge-protection
Чтобы использовать существующее хранилище ключей, скопируйте имя Key Vault для следующего шага.
Get идентификатор объекта приложения AzureDatabricks с использованием Azure CLI.
az ad sp show --id "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" \ --query "id" \ --output tsv
Убедитесь, что вы используете правильную подписку Azure:
az account set --subscription {subscription_id}
Использование Azure PowerShell
Вы можете создать хранилище ключей или использовать существующий.
Создание хранилища ключей
$keyVault = New-AzKeyVault -Name <key-vault-name> \
-ResourceGroupName <resource-group-name> \
-Location <location> \
-sku <sku> \
-EnablePurgeProtection
Используйте существующее хранилище ключей:
$keyVault = Get-AzKeyVault -VaultName <key-vault-name>
Шаг 2. Подготовка ключа
Вы можете создать ключ или использовать существующий ключ. Используйте любые выбранные инструменты: портал Azure, Azure CLI или другой инструментарий.
Использование Azure CLI
Создайте ключ в Key Vault. Тип ключа должен быть RSA.
Чтобы создать ключ в интерфейсе командной строки, выполните следующую команду:
az keyvault key create --name <key-name> \
--vault-name <key-vault-name> \
--protection software
Запишите следующие values, которые можно get из идентификатора ключа в свойстве kid
в ответе. Они будут использоваться в последующих шагах.
- URL-адрес хранилища ключей: начальная часть идентификатора ключа, содержащая имя Key Vault. Этот параметр имеет следующий формат
https://<key-vault-name>.vault.azure.net
. - Имя ключа: имя ключа.
- Версия ключа: версия ключа.
Полный идентификатор ключа обычно имеет форму https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>
. Ключи Azure Key Vault, которые находятся в недоступном облаке, имеют другую форму.
Чтобы использовать существующий ключ вместо создания, get и скопируйте эти values для ключа, чтобы их можно было использовать в следующих шагах. Перед продолжением убедитесь, что существующий ключ активен.
Использование Azure PowerShell
Если вы планируете создать ключ, может потребоваться set политику доступа в зависимости от того, как и когда он был создан. Например, если вы недавно создали Key Vault с помощью PowerShell, новый Key Vault может не иметь политики доступа, необходимой для создания ключа. В следующем примере используется параметр
EmailAddress
для set политики. Для получения дополнительных сведений см. статью Майкрософт о Set-AzKeyVaultAccessPolicy.Set политика доступа в новом хранилище ключей:
Set-AzKeyVaultAccessPolicy \ -VaultName $keyVault.VaultName \ -PermissionsToKeys all \ -EmailAddress <email-address>
Можно создать ключ или получить существующий ключ:
Создайте ключ:
$key = Add-AzKeyVaultKey \ -VaultName $keyVault.VaultName \ -Name <key-name> \ -Destination 'Software'
Получение существующего ключа:
$key = Get-AzKeyVaultKey \ -VaultName $keyVault.VaultName \ -Name <key-name>
Добавьте политику доступа с разрешениями в Key Vault:
$managedService = Get-AzureADServicePrincipal \ -Filter "appId eq '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d'" Set-AzKeyVaultAccessPolicy -VaultName $keyVault.VaultName \ -ObjectId $managedService.ObjectId \ -PermissionsToKeys wrapkey,unwrapkey,get
Шаг 3. Добавление ключа в рабочую область
Вы можете развернуть новую рабочую область с ключом, управляемым клиентом для управляемых служб, или добавить ключ в существующую рабочую область. Вы можете использовать azure CLI, PowerShell, шаблоны ARM, портал Azure или другие средства. В этом разделе содержатся сведения о нескольких вариантах развертывания:
- Использование портал Azure без шаблона
- Использование Azure CLI без шаблона
- Использование PowerShell без шаблона
- Применение изменений с помощью шаблона ARM
Использование портал Azure без шаблона
Щелкните " Создать ресурс " в левом верхнем углу страницы.
В строке поиска введите
Azure Databricks
и выберите параметр Azure Databricks .Нажмите кнопку "Создать " в мини-приложении Azure Databricks.
Введите values в поля ввода на вкладках Основные и Сетевое.
После перехода на вкладку "Шифрование ":
- Чтобы создать рабочую область, включите собственный ключ в разделе "Управляемые службы".
- Для обновления рабочей области включите управляемые службы.
Set поля шифрования.
- В поле Key Identifier вставьте ключ Identifier из вашего Azure Key Vault.
- В раскрывающемся списке подписки введите имя подписки ключа Azure Key Vault.
Заполните оставшиеся вкладки и нажмите кнопку "Просмотр и создание " (для новой рабочей области) или "Сохранить " (для обновления рабочей области).
Внимание
При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.
Использование Azure CLI без шаблона
Добавьте политику доступа в Key Vault с помощью следующей команды. Замените
<key-vault-name>
именем хранилища, которое использовалось на предыдущем шаге, и замените<object-id>
идентификаторомAzureDatabricks
объекта приложения.az keyvault set-policy -n <key-vault-name> \ --key-permissions get wrapKey unwrapKey \ --object-id <object-id>
Создайте или update рабочую область:
Для создания и updateдобавьте следующие поля в команду:
-
managed-services-key-name
: имя ключа -
managed-services-key-vault
: универсальный код ресурса (URI) хранилища ключей -
managed-services-key-version
: ключевая версия. Используйте определенную версию ключа, а неlatest
.
Пример создания рабочей области с помощью следующих полей:
az databricks workspace create --name <workspace-name> \ --resource-group <resource-group-name> \ --location <location> \ --sku premium \ --managed-services-key-name <key-name> \ --managed-services-key-vault <key-vault-uri> \ --managed-services-key-version <key-version>
Пример update рабочей области, использующей эти поля:
az databricks workspace update --name <workspace-name> \ --resource-group <resource-group-name> \ --managed-services-key-name <key-name> \ --managed-services-key-vault <key-vault-uri> \ --managed-services-key-version <key-version>
-
Внимание
При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.
Использование PowerShell без шаблона
Чтобы создать или update рабочую область, добавьте следующую parameters в команду для нового ключа:
-
ManagedServicesKeyVaultPropertiesKeyName
: имя ключа -
ManagedServicesKeyVaultPropertiesKeyVaultUri
: URI ключа -
ManagedServicesKeyVaultPropertiesKeyVersion
: ключевая версия. Используйте определенную версию ключа, а неlatest
.
Пример создания рабочей области с этими полями:
New-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-location $keyVault.Location \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version
Пример update рабочей области с этими полями:
Update-AzDatabricksWorkspace -Name <workspace-name> \
-ResourceGroupName <resource-group-name> \
-sku premium \
-ManagedServicesKeyVaultPropertiesKeyName $key.Name \
-ManagedServicesKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
-ManagedServicesKeyVaultPropertiesKeyVersion $key.Version
Внимание
При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.
Применение изменений с помощью шаблона ARM
Следующий шаблон ARM создает рабочую область с ключом, управляемым клиентом, с помощью версии 2023-02-01
API для ресурса Microsoft.Databricks/workspaces
. Сохраните этот текст локально в файле с именем databricks-cmk-template.json
.
Этот пример шаблона не включает все возможные функции Azure Databricks, например предоставление собственной виртуальной сети для развертывания рабочей области.
Внимание
Если вы уже используете шаблон, объедините дополнительные parameters, ресурсы и выходные данные этого шаблона в существующий шаблон.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceName": {
"type": "string",
"metadata": {
"description": "The name of the Azure Databricks workspace to create."
}
},
"pricingTier": {
"type": "string",
"defaultValue": "premium",
"allowedValues": [
"standard",
"premium"
],
"metadata": {
"description": "The pricing tier of workspace."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"apiVersion": {
"type": "string",
"defaultValue": "2023-02-01",
"allowedValues":[
"2023-02-01",
"2021-04-01-preview"
],
"metadata": {
"description": "The api version to create the workspace resources"
}
},
"keyvaultUri": {
"type": "string",
"metadata": {
"description": "The Key Vault URI for customer-managed key for managed services"
}
},
"keyName": {
"type": "string",
"metadata": {
"description": "The key name used for customer-managed key for managed services"
}
},
"keyVersion": {
"type": "string",
"metadata": {
"description": "The key version used for customer-managed key for managed services. Use the specific key version and not `latest`."
}
}
},
"variables": {
"managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Databricks/workspaces",
"name": "[parameters('workspaceName')]",
"location": "[parameters('location')]",
"apiVersion": "[parameters('apiVersion')]",
"sku": {
"name": "[parameters('pricingTier')]"
},
"properties": {
"ManagedResourceGroupId": "[concat(subscription().id, '/resourceGroups/', variables('managedResourceGroupName'))]",
"encryption": {
"entities": {
"managedServices": {
"keySource": "Microsoft.Keyvault",
"keyVaultProperties": {
"keyVaultUri": "[parameters('keyvaultUri')]",
"keyName": "[parameters('keyName')]",
"keyVersion": "[parameters('keyVersion')]"
}
}
}
}
}
}
],
"outputs": {
"workspace": {
"type": "object",
"value": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')))]"
}
}
}
Если вы уже используете другой шаблон, вы можете объединить этот шаблон parameters, ресурсы и выходные данные в существующий шаблон.
Чтобы использовать этот шаблон для создания или update рабочей области, выберите один из следующих вариантов развертывания:
Применение шаблона с помощью Azure CLI
Чтобы создать новую рабочую область с помощью Azure CLI, выполните следующую команду.
az deployment group create --resource-group <resource-group-name> \
--template-file <file-name>.json \
--parameters workspaceName=<new-workspace-name> \
keyvaultUri=<keyvaultUrl> \
keyName=<keyName> keyVersion=<keyVersion>
Примечание.
Используйте определенную версию ключа, а не latest
.
Чтобы update существующую рабочую область для использования управляемой клиентом рабочей области ключей (или смены существующего ключа) с помощью Azure CLI:
Если ваш шаблон ARM, который развернул рабочую область, изначально не добавил ключи, управляемые клиентом, добавьте раздел
resources.properties.encryption
и связанный с ним parameters. См. описание шаблона ранее в этой статье.- Добавьте раздел
resources.properties.encryption
из шаблона. - В разделе
parameters
добавьте три новых parameterskeyvaultUri
,keyName
иkeyVersion
из шаблона. - В разделе
parameters
используйте элементы removeи"type": "string",
из шаблона.
- Добавьте раздел
Выполните ту же команду, что и для создания новой рабочей области. Пока имя группы ресурсов и имя рабочей области идентичны существующей рабочей области, эта команда будет обновлять существующую рабочую область, а не создавать новую рабочую область.
az deployment group create --resource-group <existing-resource-group-name> \ --template-file <file-name>.json \ --parameters workspaceName=<existing-workspace-name> \ keyvaultUri=<keyvaultUrl> \ keyName=<keyName> keyVersion=<keyVersion>
За исключением изменений в parameters, связанных с ключом, используйте те же parameters, которые использовались для создания рабочей области.
Внимание
При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.
Применение шаблона с помощью портал Azure
Чтобы использовать шаблон на портале Azure для создания или update рабочей области:
Перейдите на страницу Настраиваемое развертывание.
Выберите Создать собственный шаблон в редакторе.
Вставьте его в JSON-файл.
Нажмите кнопку Сохранить.
Заполните parameters.
Чтобы выполнить действие update над существующей рабочей областью, используйте те же parameters, которые использовались для её создания. Чтобы добавить ключ в первый раз, добавьте три элемента, связанных с ключами parameters. Чтобы повернуть ключ, измените некоторые или все параметры, связанные с ключом parameters. Убедитесь, что имя группы ресурсов и имя рабочей области идентичны существующей рабочей области. Если они совпадают, эта команда обновляет существующую рабочую область, а не создает новую.
Кроме изменений в ключевом parameters, используйте такой же parameters, который использовался для создания рабочей области.
Щелкните Просмотр и создание.
Если нет проблем с проверкой, нажмите кнопку Создать.
Внимание
При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.
Дополнительные сведения см. в статье Краткое руководство. Создание и развертывание шаблонов ARM с помощью портала Azure.
Шаг 4 (необязательно): повторно импортируйте записные книжки
После первичного добавления ключа для управляемых служб в существующей рабочей области ваш ключ будут использовать только будущие операции записи. Существующие данные повторно не шифруются.
Можно экспортировать все записные книжки, а затем повторно их импортировать, чтобы ключ, который шифрует данные, защищался и управлялся вашим ключом. Можно использовать API экспорта и импорта рабочей области.
Смена ключа в дальнейшем
Если вы уже используете управляемый клиентом ключ для управляемых служб, вы можете update рабочей области с новой версией ключа или полностью новым ключом. Это называется сменой ключей.
Создайте новый ключ или смените существующий ключ в Key Vault. См. шаг 1. SetKey Vault.
Убедитесь, что новый ключ имеет соответствующие разрешения.
Убедитесь, что шаблон имеет правильную версию API. Оно должно быть равно или выше
2021-04-01-preview
.Update авторизуйте рабочую область с новым ключом с помощью портала, CLI или PowerShell. См. шаг 3 в : добавьте ключ в рабочую область и следуйте инструкциям для рабочей области update. Убедитесь, что для имени группы ресурсов и имени рабочей области используется тот же values, чтобы обновлялась существующая рабочая область, а не создавалась новая. Кроме изменений в parameters, связанных с ключом, используйте те же parameters, которые использовались для создания рабочей области.
Внимание
При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.
При необходимости экспортируйте и повторно импортируйте существующие записные книжки , чтобы все существующие записные книжки использовали новый ключ.
Устранение неполадок
Случайное удаление ключа
Если удалить ключ в Azure Key Vault, то при входе в рабочую область произойдет сбой, а записные книжки не будут доступны для чтения с помощью Azure Databricks. Чтобы избежать этого, рекомендуется включить обратимое удаление. Этот параметр гарантирует, что при удалении ключа его можно будет восстановить в течение 30 дней. Если обратимое удаление включено, можно просто повторно активировать ключ, чтобы устранить проблему.
Сбой ключа update из-за разрешений Key Vault
Если у вас возникли проблемы при создании рабочей области, проверьте, имеет ли хранилище ключей правильные разрешения. Ошибка, возвращаемая Azure, может не указываться в качестве основной причины. Кроме того, требуются следующие разрешения: get
, wrapKey
и unwrapKey
. См. шаг 1. SetKey Vault.
Потерянные ключи не подлежат восстановлению
Также если вы потеряли ключ и не можете его восстановить, все данные записной книжки, зашифрованные с помощью ключа, восстановить будет нельзя.