Включение ключей, управляемых клиентом, для управляемых служб
Примечание.
Для этой функции требуется план "Премиум".
Чтобы расширить возможности управления данными, можно добавить собственный ключ для защиты доступа к определенным типам данных и управления им. Azure Databricks имеет несколько ключевых функций, управляемых клиентом. Чтобы сравнить связанные функции, ознакомьтесь с ключами, управляемыми клиентом, для шифрования.
Совет
В этой статье описывается настройка собственного ключа из хранилищ Azure Key Vault для управляемых служб. Инструкции по использованию ключа из управляемого HSM в Azure Key Vault см. в статье "Включение ключей, управляемых клиентом HSM" для управляемых служб.
Данные управляемых служб на уровне управления Azure Databricks шифруются в неактивном состоянии. Можно добавить ключ, управляемый клиентом, для управляемых служб, чтобы защитить и отслеживать доступ к следующим типам зашифрованных данных:
- Источник записных книжек на уровне управления Azure Databricks.
- Результаты интерактивного выполнения записных книжек (выполненных не как задания), которые хранятся на уровне управления. По умолчанию объемные результаты также хранятся в корневом контейнере рабочей области. Можно настроить Azure Databricks на хранение всех результатов интерактивного выполнения записных книжек в облачной учетной записи.
- Секреты, хранимые API диспетчера секретов.
- Журнал запросов и запросы Databricks SQL.
- Личные маркеры доступа (PAT) или другие учетные данные, используемые для настройки интеграции Git с папками Databricks Git.
После добавления в рабочую область шифрования ключом, управляемым клиентом, 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. Настройка Key Vault
Необходимо создать экземпляр Azure Key Vault и настроить разрешения для него. Это можно сделать с помощью портал Azure, интерфейса командной строки или API.
Внимание
Хранилище ключей должно находиться в том же клиенте Azure, что и рабочая область Azure Databricks.
Эти инструкции предоставляют несколько вариантов развертывания:
Использование портала Azure
- Создайте или выберите Key Vault:
- Чтобы создать Key Vault, перейдите на страницу портал Azure для создания Key Vault. Нажмите кнопку + Создать. Введите имя группы ресурсов, имя Key Vault, регион и ценовую категорию. Щелкните Просмотр и создание, а затем нажмите кнопку Создать.
- Чтобы использовать существующее хранилище ключей, скопируйте его имя Key Vault на следующий шаг.
- Получите идентификатор объекта приложения AzureDatabricks :
- На портале Azure перейдите к Microsoft Entra ID.
- Выберите Корпоративные приложения в боковом меню.
AzureDatabricks
Найдите и щелкните корпоративное приложение в результатах.- В разделе Свойства скопируйте идентификатор объекта.
- Добавьте политику доступа в Key Vault с помощью портал Azure:
Перейдите в Azure Key Vault, который будет использоваться для настройки управляемых клиентом ключей для управляемых служб для рабочей области.
Откройте вкладку "Политики доступа" на левой панели.
Нажмите кнопку "Создать", найденную в верхней части страницы.
На вкладке Разрешения в разделе Разрешения ключа включите параметр Получение, Распаковка ключа и Упаковка ключа.
Нажмите кнопку Далее.
На вкладке "Субъект" введите
AzureDatabricks
и прокрутите до первого результата корпоративного2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
приложения с идентификатором приложения и выберите его.Перейдите на вкладку "Просмотр и создание " и нажмите кнопку 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
: ключевая версия
Пример создания рабочей области с помощью следующих полей:
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
: ключевая версия
Пример создания рабочей области с этими полями:
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"
}
}
},
"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>
Чтобы обновить существующую рабочую область для использования рабочей области с ключом, управляемым клиентом (или для смены существующего ключа) с помощью 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. Настройка хранилища ключей.
Убедитесь, что новый ключ имеет соответствующие разрешения.
Убедитесь, что шаблон имеет правильную версию API. Оно должно быть равно или выше
2021-04-01-preview
.Обновите рабочую область с помощью нового ключа с помощью портала, интерфейса командной строки или PowerShell. См . шаг 3. Добавление ключа в рабочую область и выполнение инструкций по обновлению рабочей области . Убедитесь, что вы используете те же значения для имени группы ресурсов и имени рабочей области, чтобы обновить существующую рабочую область, а не создать новую рабочую область. За исключением изменений в параметрах, связанных с ключами, используйте те же параметры, которые использовались для создания рабочей области.
Внимание
При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.
При необходимости экспортируйте и повторно импортируйте существующие записные книжки , чтобы все существующие записные книжки использовали новый ключ.
Устранение неполадок
Случайное удаление ключа
Если удалить ключ в Azure Key Vault, то при входе в рабочую область произойдет сбой, а записные книжки не будут доступны для чтения с помощью Azure Databricks. Чтобы избежать этого, рекомендуется включить обратимое удаление. Этот параметр гарантирует, что при удалении ключа его можно будет восстановить в течение 30 дней. Если обратимое удаление включено, можно просто повторно активировать ключ, чтобы устранить проблему.
Сбой при обновлении ключа из-за разрешений хранилища ключей
Если у вас возникли проблемы при создании рабочей области, проверьте, имеет ли хранилище ключей правильные разрешения. Ошибка, возвращаемая Azure, может не указываться в качестве основной причины. Кроме того, требуются следующие разрешения: get
, wrapKey
и unwrapKey
. См. раздел Шаг 1. Настройка хранилища ключей.
Потерянные ключи не подлежат восстановлению
Также если вы потеряли ключ и не можете его восстановить, все данные записной книжки, зашифрованные с помощью ключа, восстановить будет нельзя.