Секреты Azure Key Vault в Unity Catalog

Important

Эта функция доступна в бета-версии.

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

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

Чтобы сравнить внешние секреты с секретами, управляемыми Azure Databricks, и областями секретов рабочего пространства, см. раздел «Выбрать, где хранить секрет».

Как работают внешние секреты

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

Каждый Key Vault использует собственную схему. Привилегии UC решают, кто может использовать секреты.

После того как вы создаёте резервную копию схемы, внешние секреты ведут себя следующим образом:

  • Каждое считывание загружает текущее значение: Значение, которое вы ротируете в секретном менеджере, вступает в силу при следующем чтении, без изменений в Azure Databricks. Код, который уже содержит значение, сохраняет его, пока не прочитает секрет снова. Полученные значения могут быть кэшированы на вычислительном устройстве, которое их запросило, как и другие секреты.
  • Управляйте секретами в диспетчере секретов: создавайте, обновляйте, ротируйте и удаляйте секреты. В Unity Catalog они доступны только для чтения. Когда вы навсегда удаляете секрет в вашем менеджере секретов, Azure Databricks удаляет секрет Unity Catalog, включая его права и теги.
  • Импорт новых секретов через список: Просмотр схемы запускает асинхронный импорт. Секрет, добавленный или удалённый из вашего менеджера секретов, появляется в Unity Catalog при следующем просмотре списка, что может занять несколько минут для крупных хранилищ. Вы можете прочитать секрет по имени, прежде чем он появится в списке.
  • Журналы аудита записывают обе стороны: журналы аудита Unity Catalog фиксируют принципал Azure Databricks, который прочитал секрет. Логи на стороне облака относят доступ к учетным данным службы.

Требования

Создайте внешние секреты

Создать удостоверение сервиса

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

  1. Создайте учетные данные сервиса, поддерживаемые управляемой идентификацией или субъектом-службой, как описано в разделе «Создание учетных данных сервиса».
  2. Разрешите субъекту перечислять и читать секреты в Key Vault. Например, назначить роль Key Vault Secrets User или политику доступа с разрешениями на получение и перечисление секретов.

Создание подключения

Создайте соединение Unity Catalog, которое использует учетные данные службы и указывает на ваш менеджер секретов. Вам нужен CREATE CONNECTION в metastore.

Обозреватель каталогов

  1. В Catalog Explorer нажмите на + меню и выберите Создать подключение.
  2. Введите имя подключения и выберите тип подключения Azure Key Vault.
  3. Выберите учетные данные службы и задайте имя хранилища вашего Key Vault.
  4. Нажмите кнопку Создать.

Интерфейс командной строки Databricks

Чтобы создать соединение, запустите следующее. Укажите vault_name имя вашего Key Vault и credential имя учетных данных сервиса:

databricks connections create --json '{
  "name": "my_key_vault_connection",
  "connection_type": "AZURE_KEY_VAULT",
  "options": {
    "vault_name": "my-vault",
    "credential": "my_key_vault_credential"
  }
}'

REST API

Чтобы создать соединение, запустите следующее. Azure Databricks преобразует vault_name в https://<vault_name>.vault.azure.net:

curl -X POST \
  -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "my_key_vault_connection",
    "connection_type": "AZURE_KEY_VAULT",
    "options": {
      "vault_name": "my-vault",
      "credential": "my_key_vault_credential"
    }
  }' \
  "$DATABRICKS_HOST/api/2.1/unity-catalog/connections"

Свяжите схему с подключением

  1. В обозревателе каталогов перейдите к схеме.
  2. В деталях схемы найдите настройку внешнего менеджера секретов и нажмите «Включить». Включить остаётся недоступным, пока схема не содержит секретов.
  3. Выберите созданное вами соединение, затем подтвердите.

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

Проверка установки

Чтобы убедиться, что Unity Catalog может перечислять и читать ваши секреты, запустите следующее в блокноте:

# List the secrets in the schema. This also starts an import of new secrets.
dbutils.secrets.list(catalog="main", schema="orders_app")

# Read one secret by name
dbutils.secrets.get(catalog="main", schema="orders_app", key="example_secret")

Если список пуст, запустите его снова через несколько минут. Если чтение не удаётся, см. раздел «Устранение неполадок».

Имена секретов в Unity Catalog

Unity Catalog импортирует внешний секрет только если его название соответствует следующим правилам:

  • Имена длиннее 255 символов не импортируются.
  • Регистр имен не учитывается. Если два секрета различаются только по регистру, Unity Catalog сохраняет первый импортированный и игнорирует остальные.
  • . становится : и / становится |. Azure Databricks рекомендует избегать этих символов в внешних секретных именах.

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

Troubleshooting

  • Секрет отображается в списке, но его не удаётся прочитать: личность может видеть секрет в списке, но не может прочитать его значение, или секрет отключён в Key Vault. Предоставьте роль Key Vault Secrets User или политику доступа с разрешением на получение, либо повторно включите секрет.
  • Исчез секрет: Unity Catalog не показывает мягко удалённые секреты Key Vault. Восстановите секрет в Key Vault.
  • Новый секрет не появляется: Перечислите схему, подождите несколько минут и снова перечислите её. Проверьте ограничения по названию и квоту схемы.
  • Некоторые секреты так и не появляются: схема содержит до 1000 секретов. Когда в вашем менеджере секретов секретов больше, Unity Catalog импортирует самые старые по дате создания и пропускает остальные. Раскрывайте только те секреты, которые нужны в каждой схеме. См. группируйте секреты по тем, кому они нужны.

Ограничения

В дополнение к ограничениям, применимым ко всем секретам Unity Catalog, внешне поддерживаемые секреты имеют следующие ограничения:

  • Межоблачный доступ не поддерживается: создавайте резервные копии схем с помощью менеджера секретов, собственного для облака рабочего пространства.
  • Задержка чтения и затраты: При каждом чтении значение извлекается из внешнего менеджера секретов, что увеличивает задержку и может повлечь расходы на услуги облачного провайдера.
  • Нет фильтрации тегов: Azure Key Vault не поддерживает фильтрацию импортированных секретов по тегу.

Примечание.

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

Внешние секретные имена и значения могут содержать персональные данные. Вы несёте ответственность за то, чтобы личные данные не попадали туда, если только этого не требует ваш сценарий использования.

Дополнительные ресурсы

Resource Description
Лучшие практики для секретов Unity Catalog Организуйте секреты по окружению, приложению или команде, и пусть рабочие нагрузки используют секреты, не читая их.
Каталог Secrets in Unity Создавайте, предоставляйте и читайте секреты Unity Catalog.