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


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

Примечание.

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

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

Совет

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

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

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

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

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

Требования

Шаг 1. Настройка Key Vault

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

Внимание

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

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

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

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

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

    3. Нажмите кнопку "Создать", найденную в верхней части страницы.

    4. На вкладке Разрешения в разделе Разрешения ключа включите параметр Получение, Распаковка ключа и Упаковка ключа.

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

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

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

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

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

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

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

  2. Получите идентификатор объекта приложения 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

Запишите следующие значения, которые можно получить из идентификатора ключа в свойстве 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

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

    Задайте политику доступа в новом Key Vault:

    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. Введите значения для полей ввода на вкладках "Основы" и "Сеть ".

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

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

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

    • В поле "Идентификатор ключа" вставьте идентификатор ключа 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. Создайте или обновите рабочую область:

    Для создания и обновления добавьте следующие поля в команду:

    • 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.

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

    1. Добавьте раздел resources.properties.encryption из шаблона.
    2. В разделе parameters добавьте три новых параметра: keyvaultUri, keyNameи keyVersion из шаблона.
    3. parameters В разделе удалите "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>
    

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

    Внимание

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

Применение шаблона с помощью портал Azure

Использование шаблона на портале Azure для создания или обновления рабочей области:

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

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

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

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

  5. Заполните параметры.

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

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

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

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

    Внимание

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

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

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

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

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

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

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

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

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

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

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

    Внимание

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

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

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

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

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

Сбой при обновлении ключа из-за разрешений хранилища ключей

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

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

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