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

Важно!

Эта функция предоставляется в режиме общедоступной предварительной версии.

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

По умолчанию данные управляемых служб в плоскости управления шифруются при хранении с ключом, управляемым модулями данных.

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

Эту функцию необходимо включить во время создания рабочей области.

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

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

Требования

Для этой функции требуется план Azure Databricks (цен. Категория "Премиум").

Ограничения

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

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

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

Для регистрации ключей, управляемых клиентом, для управляемых служб в подписке можно использовать портал Azure, Azure CLI или PowerShell. В следующих подразделах объясняется, как использовать портал Azure или Azure CLI. Вы можете адаптировать версию CLI для PowerShell.

Использование портал Azure для включения компонента

  1. В портал Azure перейдите к подписке Azure для развертывания Azure Databricks.

  2. В левой области навигации щелкните предварительные версии компонентов.

    Кнопка предварительной версии компонентов

  3. Найдите EnableAPIVersion20210401Preview.

  4. Установите флажок рядом с одним из результатов и нажмите кнопку Register (зарегистрировать ).

    Кнопка регистрации компонентов

Использование Azure CLI для включения компонента

  1. Задайте целевую подписку:

    az account set --subscription <subscription id>
    
  2. Зарегистрируйте эту функцию с помощью следующих двух команд:

    az feature register --namespace Microsoft.Databricks \
    --name EnableAPIVersion20210401Preview
    
    az provider register -n Microsoft.Databricks
    

Шаг 2. Создание хранилища ключей или использование существующего

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

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

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

      az keyvault create --location <region> \
      --name <key-vault-name> --resource-group <resource-group-name>
      
    • Чтобы использовать существующее хранилище ключей, скопируйте имя хранилища ключей для следующего шага.

  2. Задайте необходимые разрешения для хранилища ключей. Замените на <key-vault-name> имя хранилища, использованное на предыдущем шаге. Идентификатор объекта в этой команде представляет Azure Databricks.

    az keyvault set-policy -n <key-vault-name> \
    --key-permissions get wrapKey unwrapKey  \
    --object-id 5b4392d6-86a0-4ea1-ad94-dc9830e378e0
    

Шаг 3. Создание нового ключа или использование существующего ключа

Создайте ключ в хранилище ключей. Значение KeyType должно быть RSA, но размер ключа RSA и HSM не имеет значения. KeyVault должен находиться в том же клиенте Azure, что и Рабочая область Azure Databricks. Используйте любые инструменты, которые предпочитаете использовать: портал Azure, Azure CLI или другие средства.

Чтобы создать ключ в интерфейсе командной строки, выполните следующую команду:

az keyvault key create --name <key name> --vault-name <key vault name>

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

  • URL-адрес хранилища ключей: начальная часть идентификатора ключа, включающая имя хранилища ключей. Он имеет форму https://<key-vault-name>.vault.azure.net .
  • Имя ключа: имя ключа.
  • Версия ключа: версия ключа.

Полный идентификатор ключа имеет форму <key-vault-URL>/keys/<key-name>/<key-version> .

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

Шаг 4. Развертывание рабочей области с помощью ключа

Вы можете развернуть новую рабочую область с управляемым клиентом ключом для управляемых служб с помощью шаблонов ARM. Используйте портал Azure, Azure CLI или любые другие предпочтительные средства.

В следующем шаблоне ARM создается новая Рабочая область с ключом, управляемым клиентом, с использованием предварительной версии API для ресурса Microsoft.Databricks/workspaces . Сохраните этот текст локально в файле с именем databricks-cmk-template.json .

Примечание

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

{
  "$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": "2021-04-01-preview",
      "allowedValues":[
        "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

Чтобы использовать шаблон в портал Azure для создания рабочей области, см. статью Руководство по Azure : создание и развертывание шаблонов ARM с помощью портал Azure

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

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

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

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

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

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

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