Включение ключей, управляемых клиентом, для управляемых служб
Примечание.
Для этой функции требуется план "Премиум".
Чтобы расширить возможности управления данными, можно добавить собственный ключ для защиты доступа к определенным типам данных и управления им. Azure Databricks имеет несколько ключевых функций, управляемых клиентом. Чтобы сравнить связанные функции, ознакомьтесь с ключами, управляемыми клиентом, для шифрования.
Совет
В этой статье описывается настройка собственного ключа из хранилищ Azure Key Vault для управляемых служб. Инструкции по использованию ключа из управляемого HSM в Azure Key Vault см. в статье "Включение ключей, управляемых клиентом HSM" для управляемых служб.
Данные управляемых служб на уровне управления Azure Databricks шифруются в неактивном состоянии. Можно добавить ключ, управляемый клиентом, для управляемых служб, чтобы защитить и отслеживать доступ к следующим типам зашифрованных данных:
- Источник записных книжек на уровне управления Azure Databricks.
- Результаты интерактивного выполнения записных книжек (выполненных не как задания), которые хранятся на уровне управления. По умолчанию объемные результаты также хранятся в корневом контейнере рабочей области. Можно настроить Azure Databricks на хранение всех результатов интерактивного выполнения записных книжек в облачной учетной записи.
- Секреты, хранимые API диспетчера секретов.
- Журнал запросов и запросы Databricks SQL.
- Персональные токены доступа (PAT) или другие учетные данные, используемые для настройки интеграции Git с папками Git Databricks.
После добавления в рабочую область шифрования ключом, управляемым клиентом, Azure Databricks будет использовать ваш ключ для управления доступом к ключу, шифрующему будущие операции записи в данных управляемых служб вашей рабочей области. Существующие данные повторно не шифруются. Ключ шифрования данных кэшируется в памяти для нескольких операций чтения и записи, а затем удаляется из памяти с регулярной частотой. Для новых запросов к этим данным потребуется отдельный запрос к системе управления ключами вашей облачной службы. При удалении или отмене ключа чтение или запись в защищенные данные завершается сбоем в конце интервала времени кэша.
Вы можете сменить (обновить) управляемый клиентом ключ позже. См . раздел "Смена ключа в дальнейшем".
Эта возможность не шифрует данные, хранящиеся за пределами уровня управления. Сведения о других функциях ключей, управляемых клиентом, см. в разделе "Ключи, управляемые клиентом" для шифрования
Требования
Чтобы использовать 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. Настройка хранилища ключей
Необходимо создать экземпляр Azure Key Vault и задать его разрешения. Это можно сделать с помощью портал Azure, интерфейса командной строки или API.
Внимание
Хранилище ключей должно находиться в том же клиенте Azure, что и рабочая область Azure Databricks.
Эти инструкции предоставляют несколько вариантов развертывания:
Использование портала Azure
- Создайте или выберите хранилище ключей:
- Чтобы создать Key Vault, перейдите на страницу портал Azure для создания Key Vault. Нажмите кнопку + Создать. Введите имя группы ресурсов, имя Key Vault, регион и ценовую категорию. Щелкните Просмотр и создание, а затем нажмите кнопку Создать.
- Чтобы использовать существующее хранилище ключей, скопируйте его имя Key Vault на следующий шаг.
- Получите идентификатор объекта приложения AzureDatabricks:
- На портале Azure перейдите к Microsoft Entra ID.
- Выберите корпоративные приложения в боковом меню.
-
AzureDatabricks
Найдите и щелкните корпоративное приложение в результатах. - В разделе Свойства скопируйте идентификатор объекта.
- Добавьте политику доступа в Key Vault с помощью портал Azure:
Перейдите в Azure Key Vault, который будет использоваться для настройки управляемых клиентом ключей для управляемых служб для рабочей области.
Откройте вкладку "Политики доступа" на левой панели.
Нажмите кнопку Создать в верхней части страницы.
В разделе Ключевых разрешений на вкладке Разрешения включите Get, Unwrap Keyи Wrap key.
Нажмите кнопку Далее.
На вкладке субъекта
введите и прокрутите страницу до первого результата корпоративного приложения с идентификатором приложения и выберите его. Перейдите на вкладку "Просмотр и создание " и нажмите кнопку b.
Использование Azure CLI
Используйте Azure CLI, чтобы выполнить следующие инструкции.
Создайте Key Vault или выберите существующее хранилище ключей:
Чтобы создать 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 для следующего шага.
Получите идентификатор объекта приложения 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
Запишите следующие значения, которые можно получить из идентификатора ключа в свойстве 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, которые находятся в недоступном облаке, имеют другую форму.
Чтобы использовать существующий ключ вместо создания, получите и скопируйте эти значения для ключа, чтобы их можно было использовать в следующих шагах. Перед продолжением убедитесь, что существующий ключ активен.
Использование Azure PowerShell
Если вы планируете создать ключ, может потребоваться задать политику доступа в зависимости от того, как и когда он был создан. Например, если вы недавно создали Key Vault с помощью PowerShell, новый Key Vault может не иметь политики доступа, необходимой для создания ключа. В следующем примере для задания политики используется параметр
EmailAddress
. Дополнительные сведения можно найти в статье компании Майкрософт о Set-AzKeyVaultAccessPolicy .Задайте политику доступа в новом Key Vault:
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.
Введите значения для полей ввода на вкладках
"Основы" и сетевых .После перехода на вкладку "Шифрование ":
- Чтобы создать рабочую область, включите собственный ключ в разделе "Управляемые службы".
- Для обновления рабочей области включите управляемые службы.
Задайте поля шифрования.
- В поле идентификатор ключа вставьте идентификатор ключа 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>
Создайте или обновите рабочую область:
Для создания и обновления добавьте следующие поля в команду:
-
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>
Пример обновления рабочей области с помощью следующих полей:
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 без шаблона
Чтобы создать или обновить рабочую область, добавьте следующие параметры в команду для нового ключа:
-
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-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, например предоставление собственной виртуальной сети для развертывания рабочей области.
Внимание
Если вы уже используете шаблон, объедините дополнительные параметры, ресурсы и выходные данные этого шаблона в существующий шаблон.
{
"$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')))]"
}
}
}
Если вы уже используете другой шаблон, можно объединить параметры, ресурсы и выходные данные этого шаблона в существующий шаблон.
Чтобы использовать этот шаблон для создания или обновления рабочей области, выберите один из следующих вариантов развертывания:
Применение шаблона с помощью 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
.
Чтобы обновить существующую рабочую область для использования управляемой клиентом рабочей области ключей (или для смены существующего ключа) с помощью Azure CLI:
Если шаблон ARM, который развернул рабочую область, никогда не добавлял ключи, управляемые клиентом, добавьте раздел
resources.properties.encryption
и связанные с ним параметры. См. описание шаблона ранее в этой статье.- Добавьте раздел
resources.properties.encryption
из шаблона. - В разделе
parameters
добавьте три новых параметраkeyvaultUri
,keyName
иkeyVersion
из шаблона. - В разделе
parameters
удалите"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>
Кроме изменений в параметрах, связанных с ключом, используйте те же параметры, которые использовались для создания рабочей области.
Внимание
При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.
Применение шаблона с помощью портал Azure
Чтобы использовать шаблон на портале Azure для создания или обновления рабочей области:
Перейдите на страницу Настраиваемое развертывание.
Выберите Создать собственный шаблон в редакторе.
Вставьте его в JSON-файл.
Нажмите кнопку Сохранить.
Заполните параметры.
Чтобы обновить существующую рабочую область, используйте те же параметры, что и для создания рабочей области. Чтобы добавить ключ в первый раз, добавьте три параметра, связанные с ключом. Чтобы повернуть ключ, измените некоторые или все параметры, связанные с ключом. Убедитесь, что имя группы ресурсов и имя рабочей области идентичны существующей рабочей области. Если они совпадают, эта команда обновляет существующую рабочую область, а не создает новую.
Кроме изменений в параметрах, связанных с ключом, используйте те же параметры, которые использовались для создания рабочей области.
Щелкните Просмотр и создание.
Если нет проблем с проверкой, нажмите кнопку Создать.
Внимание
При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.
Дополнительные сведения см. в статье Краткое руководство. Создание и развертывание шаблонов ARM с помощью портала Azure.
Шаг 4 (необязательно): повторно импортируйте записные книжки
После первичного добавления ключа для управляемых служб в существующей рабочей области ваш ключ будут использовать только будущие операции записи. Существующие данные повторно не шифруются.
Можно экспортировать все записные книжки, а затем повторно их импортировать, чтобы ключ, который шифрует данные, защищался и управлялся вашим ключом. Можно использовать API экспорта и импорта рабочей области.
Смена ключа в дальнейшем
Если вы уже используете управляемый клиентом ключ для управляемых служб, можно обновить рабочую область с новой версией ключа или полностью новым ключом. Это называется сменой ключей.
Создайте новый ключ или смените существующий ключ в Key Vault. См. Шаг 1: НастройкаKey Vault.
Убедитесь, что новый ключ имеет соответствующие разрешения.
Убедитесь, что шаблон имеет правильную версию API. Оно должно быть равно или выше
2021-04-01-preview
.Обновите рабочую область с помощью нового ключа с помощью портала, интерфейса командной строки или PowerShell. См. шаг 3. Добавление ключа в рабочую область и выполнение инструкций по обновлению рабочей области. Убедитесь, что вы используете те же значения для имени группы ресурсов и имени рабочей области, чтобы обновить существующую рабочую область, а не создать новую рабочую область. Кроме изменений в параметрах, связанных с ключом, используйте те же параметры, которые использовались для создания рабочей области.
Внимание
При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.
При необходимости экспортируйте и повторно импортируйте существующие записные книжки , чтобы все существующие записные книжки использовали новый ключ.
Устранение неполадок
Случайное удаление ключа
Если удалить ключ в Azure Key Vault, то при входе в рабочую область произойдет сбой, а записные книжки не будут доступны для чтения с помощью Azure Databricks. Чтобы избежать этого, рекомендуется включить обратимое удаление. Этот параметр гарантирует, что при удалении ключа его можно будет восстановить в течение 30 дней. Если обратимое удаление включено, можно просто повторно активировать ключ, чтобы устранить проблему.
Сбой обновления ключа из-за разрешений Key Vault
Если у вас возникли проблемы при создании рабочей области, проверьте, имеет ли хранилище ключей правильные разрешения. Ошибка, возвращаемая Azure, может не указываться в качестве основной причины. Кроме того, требуются следующие разрешения: get
, wrapKey
и unwrapKey
. См. Шаг 1: НастройкаKey Vault.
Потерянные ключи не подлежат восстановлению
Также если вы потеряли ключ и не можете его восстановить, все данные записной книжки, зашифрованные с помощью ключа, восстановить будет нельзя.