Поделиться через


Включение ключей, управляемых клиентом, для управляемых служб

Примечание.

Для этой функции требуется план "Премиум".

Чтобы расширить возможности управления данными, можно добавить собственный ключ для защиты доступа к определенным типам данных и управления им. Azure Databricks имеет несколько ключевых функций, управляемых клиентом. Чтобы сравнить связанные функции, ознакомьтесь с ключами, управляемыми клиентом, для шифрования.

Совет

В этой статье описывается настройка собственного ключа из хранилищ Azure Key Vault для управляемых служб. Инструкции по использованию ключа из управляемого HSM в Azure Key Vault см. в статье "Включение ключей, управляемых клиентом HSM" для управляемых служб.

Данные управляемых служб на уровне управления Azure Databricks шифруются в неактивном состоянии. Можно добавить ключ, управляемый клиентом, для управляемых служб, чтобы защитить и отслеживать доступ к следующим типам зашифрованных данных:

После добавления в рабочую область шифрования ключом, управляемым клиентом, Azure Databricks будет использовать ваш ключ для управления доступом к ключу, шифрующему будущие операции записи в данных управляемых служб вашей рабочей области. Существующие данные повторно не шифруются. Ключ шифрования данных кэшируется в памяти для нескольких операций чтения и записи, а затем удаляется из памяти с регулярной частотой. Для новых запросов к этим данным потребуется отдельный запрос к системе управления ключами вашей облачной службы. Если удалить или revoke ваш ключ, чтение или запись защищенных данных завершится сбоем в конце времени кэширования.

Вы можете повернуть (update) ключ, управляемый клиентом, в любое время позже. См . раздел "Смена ключа в дальнейшем".

Эта возможность не шифрует данные, хранящиеся за пределами уровня управления. Сведения о других функциях ключей, управляемых клиентом, см. в разделе "Ключи, управляемые клиентом" для шифрования

Требования

шаг 1. Set настройка Хранилища Ключей

Необходимо создать экземпляр Azure Key Vault и set его разрешения. Это можно сделать с помощью портал Azure, интерфейса командной строки или API.

Внимание

Хранилище ключей должно находиться в том же клиенте Azure, что и рабочая область Azure Databricks.

Эти инструкции предоставляют несколько вариантов развертывания:

Использование портала Azure

  1. Создайте или select ключевое хранилище (Key Vault):
    • Чтобы создать Key Vault, перейдите на страницу портал Azure для создания Key Vault. Нажмите кнопку + Создать. Введите имя группы ресурсов, имя Key Vault, регион и ценовую категорию. Щелкните Просмотр и создание, а затем нажмите кнопку Создать.
    • Чтобы использовать существующее хранилище ключей, скопируйте его имя Key Vault на следующий шаг.
  2. Get идентификатор объекта приложения AzureDatabricks:
    1. На портале Azure перейдите к Microsoft Entra ID.
    2. Select Приложения для предприятия в боковом меню.
    3. AzureDatabricks Найдите и щелкните корпоративное приложение в результатах.
    4. В разделе Свойства скопируйте идентификатор объекта.
  3. Добавьте политику доступа в Key Vault с помощью портал Azure:
    1. Перейдите в Azure Key Vault, который будет использоваться для настройки управляемых клиентом ключей для управляемых служб для рабочей области.

    2. Откройте вкладку "Политики доступа" на левой панели.

    3. Select кнопка "Создать" , находится наверху страницы.

    4. В разделе разрешения ключа на вкладке разрешения включите Get, ключа Unwrapи ключа Wrap.

    5. Нажмите кнопку Далее.

    6. На вкладке основной введите AzureDatabricks и прокрутите страницу до первого результата корпоративного приложения с идентификатором приложения 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d и select его.

      Select приложение AzureDatabricks с идентификатором 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d

    7. Перейдите на вкладку "Просмотр и создание " и нажмите кнопку b.

Использование Azure CLI

Используйте Azure CLI, чтобы выполнить следующие инструкции.

  1. Создайте хранилище ключей или 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 для следующего шага.

  2. Get идентификатор объекта приложения AzureDatabricks с использованием Azure CLI.

    az ad sp show --id "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" \
                  --query "id" \
                  --output tsv
    
  3. Убедитесь, что вы используете правильную подписку 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

  1. Если вы планируете создать ключ, может потребоваться set политику доступа в зависимости от того, как и когда он был создан. Например, если вы недавно создали Key Vault с помощью PowerShell, новый Key Vault может не иметь политики доступа, необходимой для создания ключа. В следующем примере используется параметр EmailAddress для set политики. Для получения дополнительных сведений см. статью Майкрософт о Set-AzKeyVaultAccessPolicy.

    Set политика доступа в новом хранилище ключей:

    Set-AzKeyVaultAccessPolicy \
    -VaultName $keyVault.VaultName \
    -PermissionsToKeys all \
    -EmailAddress <email-address>
    
  2. Можно создать ключ или получить существующий ключ:

    • Создайте ключ:

      $key = Add-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name> \
      -Destination 'Software'
      
    • Получение существующего ключа:

      $key = Get-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name>
      
  3. Добавьте политику доступа с разрешениями в 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 без шаблона

  1. Перейдите на домашнюю страницу портала Azure.

  2. Щелкните " Создать ресурс " в левом верхнем углу страницы.

  3. В строке поиска введите Azure Databricks и выберите параметр Azure Databricks .

  4. Нажмите кнопку "Создать " в мини-приложении Azure Databricks.

  5. Введите values в поля ввода на вкладках Основные и Сетевое.

  6. После перехода на вкладку "Шифрование ":

    • Чтобы создать рабочую область, включите собственный ключ в разделе "Управляемые службы".
    • Для обновления рабочей области включите управляемые службы.
  7. Set поля шифрования.

    Отображение полей в разделе Управляемые диски колонки Azure Databricks

    • В поле Key Identifier вставьте ключ Identifier из вашего Azure Key Vault.
    • В раскрывающемся списке подписки введите имя подписки ключа Azure Key Vault.
  8. Заполните оставшиеся вкладки и нажмите кнопку "Просмотр и создание " (для новой рабочей области) или "Сохранить " (для обновления рабочей области).

Внимание

При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.

Использование Azure CLI без шаблона

  1. Добавьте политику доступа в 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>
    
  2. Создайте или 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:

  1. Если ваш шаблон ARM, который развернул рабочую область, изначально не добавил ключи, управляемые клиентом, добавьте раздел resources.properties.encryption и связанный с ним parameters. См. описание шаблона ранее в этой статье.

    1. Добавьте раздел resources.properties.encryption из шаблона.
    2. В разделе parameters добавьте три новых parameterskeyvaultUri, keyNameи keyVersion из шаблона.
    3. В разделе parameters используйте элементы removeи"type": "string", из шаблона.
  2. Выполните ту же команду, что и для создания новой рабочей области. Пока имя группы ресурсов и имя рабочей области идентичны существующей рабочей области, эта команда будет обновлять существующую рабочую область, а не создавать новую рабочую область.

    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 рабочей области:

  1. Перейдите на страницу Настраиваемое развертывание.

  2. Выберите Создать собственный шаблон в редакторе.

  3. Вставьте его в JSON-файл.

  4. Нажмите кнопку Сохранить.

  5. Заполните parameters.

    Чтобы выполнить действие update над существующей рабочей областью, используйте те же parameters, которые использовались для её создания. Чтобы добавить ключ в первый раз, добавьте три элемента, связанных с ключами parameters. Чтобы повернуть ключ, измените некоторые или все параметры, связанные с ключом parameters. Убедитесь, что имя группы ресурсов и имя рабочей области идентичны существующей рабочей области. Если они совпадают, эта команда обновляет существующую рабочую область, а не создает новую.

    Кроме изменений в ключевом parameters, используйте такой же parameters, который использовался для создания рабочей области.

  6. Щелкните Просмотр и создание.

  7. Если нет проблем с проверкой, нажмите кнопку Создать.

    Внимание

    При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.

Дополнительные сведения см. в статье Краткое руководство. Создание и развертывание шаблонов ARM с помощью портала Azure.

Шаг 4 (необязательно): повторно импортируйте записные книжки

После первичного добавления ключа для управляемых служб в существующей рабочей области ваш ключ будут использовать только будущие операции записи. Существующие данные повторно не шифруются.

Можно экспортировать все записные книжки, а затем повторно их импортировать, чтобы ключ, который шифрует данные, защищался и управлялся вашим ключом. Можно использовать API экспорта и импорта рабочей области.

Смена ключа в дальнейшем

Если вы уже используете управляемый клиентом ключ для управляемых служб, вы можете update рабочей области с новой версией ключа или полностью новым ключом. Это называется сменой ключей.

  1. Создайте новый ключ или смените существующий ключ в Key Vault. См. шаг 1. SetKey Vault.

    Убедитесь, что новый ключ имеет соответствующие разрешения.

  2. Убедитесь, что шаблон имеет правильную версию API. Оно должно быть равно или выше 2021-04-01-preview.

  3. Update авторизуйте рабочую область с новым ключом с помощью портала, CLI или PowerShell. См. шаг 3 в : добавьте ключ в рабочую область и следуйте инструкциям для рабочей области update. Убедитесь, что для имени группы ресурсов и имени рабочей области используется тот же values, чтобы обновлялась существующая рабочая область, а не создавалась новая. Кроме изменений в parameters, связанных с ключом, используйте те же parameters, которые использовались для создания рабочей области.

    Внимание

    При смене ключа необходимо сохранить старый ключ доступным в течение 24 часов.

  4. При необходимости экспортируйте и повторно импортируйте существующие записные книжки , чтобы все существующие записные книжки использовали новый ключ.

Устранение неполадок

Случайное удаление ключа

Если удалить ключ в Azure Key Vault, то при входе в рабочую область произойдет сбой, а записные книжки не будут доступны для чтения с помощью Azure Databricks. Чтобы избежать этого, рекомендуется включить обратимое удаление. Этот параметр гарантирует, что при удалении ключа его можно будет восстановить в течение 30 дней. Если обратимое удаление включено, можно просто повторно активировать ключ, чтобы устранить проблему.

Сбой ключа update из-за разрешений Key Vault

Если у вас возникли проблемы при создании рабочей области, проверьте, имеет ли хранилище ключей правильные разрешения. Ошибка, возвращаемая Azure, может не указываться в качестве основной причины. Кроме того, требуются следующие разрешения: get, wrapKey и unwrapKey. См. шаг 1. SetKey Vault.

Потерянные ключи не подлежат восстановлению

Также если вы потеряли ключ и не можете его восстановить, все данные записной книжки, зашифрованные с помощью ключа, восстановить будет нельзя.