Используйте управляемые удостоверения Azure в каталоге Unity для доступа к хранилищу

На этой странице описывается, как использовать управляемые удостоверения Azure для подключения к контейнерам хранилища от имени пользователей Unity Catalog.

Что такое управляемые удостоверения Azure?

каталог Unity можно настроить для использования управляемого удостоверения Azure для доступа к контейнерам хранилища от имени пользователей каталога Unity. Управляемые удостоверения предоставляют приложениям идентификацию для использования при подключении к ресурсам, поддерживающим аутентификацию Microsoft Entra ID.

Управляемые удостоверения в Unity Catalog можно использовать для поддержки двух основных вариантов использования:

  • Как идентификатор для подключения к аккаунтам управления хранения метахранилища (где хранятся управляемые таблицы).
  • В качестве идентификатора для подключения к другим внешним учетным записям хранения (для файлового доступа или для доступа к существующим наборам данных через внешние таблицы).

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

Настройка управляемого удостоверения для Unity Catalog

Чтобы настроить управляемое удостоверение для использования с Unity Catalog, сначала создайте коннектор доступа в Azure для Azure Databricks. По умолчанию соединитель доступа развертывается с управляемым удостоверением, которое назначается системой. Вместо этого можно присоединить управляемое удостоверение, назначаемое пользователем. Затем вы предоставляете управляемому удостоверению доступ к учетной записи Azure Data Lake Storage и используете соединитель доступа при создании хранилища метаданных каталога Unity или учетных данных хранилища.

Требования

Пользователь или субъект-служба Azure, создающий соединитель доступа, должен:

  • Выступайте в роли Contributor или Owner в группе ресурсов Azure.

Пользователь Azure или субъект-службы, который предоставляет управляемое удостоверение учетной записи хранения, должен:

  • Являйтесь Owner или пользователем с ролью User Access Administrator Azure RBAC на учетной записи хранения.

Step 1. Создание соединителя доступа для Azure Databricks

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

  1. Войдите в Azure Portal в качестве участника или владельца группы ресурсов.

  2. Щелкните + Создать или Создать ресурс.

  3. Найдите соединитель Access для Azure Databricks и выберите его.

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

  5. На вкладке Основы примите, выберите или введите значения для следующих полей:

    • Subscription: это подписка Azure, в которую будет создан соединитель доступа. Используется подписка Azure, которую вы используете в настоящее время по умолчанию. Это может быть любая подписка в арендуемом аккаунте.
    • ГруппаResource: это группа ресурсов Azure, в которую будет создан соединитель доступа.
    • Имя: введите имя, указывающее назначение соединителя.
    • Регион — это должен быть регион учетной записи хранения, к которой вы подключаетесь.
  6. Щелкните Далее, введите теги и нажмите кнопку Далее.

  7. На вкладке Управляемые удостоверения создайте управляемые удостоверения следующим образом:

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

    Настройте управляемые идентификаторы для соединителя доступа.

  8. Нажмите Просмотреть и создать.

  9. Когда появится сообщение "Проверка пройдена ", нажмите кнопку "Создать".

  10. Когда развертывание будет завершено, выберите Перейти к ресурсу.

  11. Запишите идентификатор ресурса.

    Идентификатор ресурса имеет формат:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

Шаг 2. Предоставление управляемому удостоверению доступа к учетной записи хранения

Чтобы предоставить разрешения на этом шаге, необходимо иметь роль Owner или User Access Administrator Azure RBAC в учетной записи хранения.

При предоставлении управляемому удостоверению доступа к учетной записи хранения и контейнеру у вас есть следующие варианты:

  • Предоставьте доступ на чтение и запись ко всей учетной записи хранения, используя роль Storage Blob Data Contributor.
  • Предоставьте более ограниченную роль для учетной записи хранения, используя роль Storage Blob Delegator, и доступ на чтение и запись к конкретному контейнеру, используя роль Storage Blob Data Contributor.

Приведенные ниже инструкции предполагают, что вы предоставляете Storage Blob Data Contributor роль в учетной записи хранения, но при необходимости можно заменить другие параметры:

  1. Войдите в учетную запись Azure Data Lake Storage.
  2. Перейдите к Access Control (IAM), щелкните + Добавить и выберите Добавить назначение роли.
  3. Выберите роль Вкладчик данных хранилища BLOB и щелкните Далее.
  4. В разделе Назначение доступа выберите Управляемая идентичность.
  5. Щелкните +Select Members и выберите либо соединитель для доступа Azure Databricks, либо независимое управляемое удостоверение.
  6. Найдите имя соединителя или удостоверение, назначаемое пользователем, выберите его и нажмите кнопку "Проверить и назначить".

Шаг 3. Предоставить управляемой идентичности доступ к событиям файлов

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

Используйте управляемое удостоверение для доступа к основной учетной записи хранилища каталога Unity

В этом разделе описывается, как предоставить доступ управляемому удостоверению к учетной записи хранения на верхнем уровне при создании метахранилища Unity Catalog.

Сведения об обновлении существующего хранилища метаданных Unity Catalog для использования управляемого удостоверения см. в разделе Обновление существующего хранилища метаданных Unity Catalog для использования управляемого удостоверения для доступа к корневому хранилищу.

  1. Как администратор учетной записи Azure Databricks войдите в консоль учетной записи Azure Databricks.

  2. Щелкните значок данных.Каталог.

  3. Нажмите Создать хранилище метаданных.

  4. Введите значения в следующих полях:

    • Name для хранилища метаданных.

    • Region (Регион) — регион развертывания хранилища метаданных.

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

    • ADLS Gen 2 path (Путь к ADLS 2-го поколения) — введите путь к контейнеру хранилища, который будет использоваться в качестве корневого хранилища для хранилища метаданных.

      Убедитесь, что путь начинается с abfss://.

    • Access Connector ID: введите идентификатор ресурса соединителя доступа Azure Databricks в формате:

      /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
      
    • (Необязательно) Идентификатор управляемого удостоверения: если вы создали соединитель доступа, используя управляемое удостоверение, назначенное пользователем, введите идентификатор ресурса управляемого удостоверения.

  5. Нажмите кнопку Создать.

  6. При появлении системного запроса выберите рабочие области для подключения к хранилищу метаданных.

Использование управляемого удостоверения для доступа к внешнему хранилищу, управляемому в каталоге Unity

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

Учетные данные хранения могут содержать управляемое удостоверение или служебный принципал. Использование управляемой идентификации обладает таким преимуществом, что позволяет каталогу Unity получать доступ к учетным записям хранения, защищенным сетевыми правилами, что невозможно с использованием учетных записей служб, и устраняет необходимость управления и ротации секретов.

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

Если ваша рабочая область Azure Databricks развернута в собственной виртуальной сети Azure, также известной как "внедрение виртуальной сети" и используется брандмауэр хранилища для защиты учетной записи Azure Data Lake Storage, необходимо:

  1. Включите рабочую область Azure Databricks для доступа к Azure Storage.
  2. Включите управляемое удостоверение для доступа к Azure Storage.

Шаг 1. Включите рабочей области Azure Databricks доступ к Azure Storage

Необходимо настроить параметры сети, чтобы разрешить рабочей области Azure Databricks доступ к Azure Data Lake Storage. Сначала убедитесь, что рабочая область Azure Databricks развернута в собственной виртуальной сети, следуя инструкциям из раздела Развертывание Azure Databricks в вашей виртуальной сети Azure (внедрение в VNet). Затем можно настроить либо частные конечные точки, либо доступ из вашей виртуальной сети для разрешения подключений из подсетей к учетной записи Azure Data Lake Storage.

Если вы используете бессерверные вычислительные ресурсы, такие как бессерверные хранилища SQL, необходимо предоставить доступ из бессерверной вычислительной плоскости Azure Data Lake Storage. См. сведения о сети бессерверных вычислительных плоскостей.

Шаг 2. Активируйте управляемую идентификацию для доступа к Azure Storage

Этот шаг необходим, только если параметр "Разрешить Azure службам в списке доверенных служб доступ к этой учетной записи хранения" отключен для учетной записи Azure Storage. Если эта конфигурация включена:

  • Любой соединитель доступа для Azure Databricks в том же клиенте, что и учетная запись хранения, может получить доступ к учетной записи хранения.
  • Любая доверенная служба Azure может получить доступ к учетной записи хранилища. См. сведения о доступе Grant к доверенным службам Azure.

Приведенные ниже инструкции включают шаг, в котором вы отключите эту конфигурацию. Вы можете использовать Azure Portal или Azure CLI.

Используйте Azure Portal

  1. Войдите в Azure Portal, найдите и выберите учетную запись Azure Storage и перейдите на вкладку Networking.

  2. Задайте для параметра Доступ из общедоступной сети значение Включено из выбранных виртуальных сетей и IP-адресов.

    Вместо этого можно задать для параметра Доступ из общедоступной сети значение Отключено. Управляемое удостоверение можно использовать для обхода проверки доступа к общедоступной сети.

  3. В разделе Экземпляры ресурса выберите тип ресурса Microsoft.Databricks/accessConnectors и выберите тот, который используется для доступа в Azure Databricks.

  4. В разделе Exceptions снимите флажок Allow Azure в списке доверенных служб для доступа к этой учетной записи хранения.

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

  1. Install Azure CLI и sign in. См. раздел Вход в Azure CLI для входа с помощью учетной записи пользователя или служебного принципала.

  2. Добавьте сетевое правило в учетную запись хранения:

    az storage account network-rule add \
    -–subscription <subscription id of the resource group> \
    -–resource-id <resource Id of the access connector for Azure Databricks> \
    -–tenant-id <tenant Id> \
    -g <name of the Azure Storage resource group> \
    -–account-name <name of the Azure Storage resource> \
    

    Добавьте идентификатор ресурса в формате:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  3. После создания сетевого правила перейдите к учетной записи Azure Storage в Azure Portal и просмотрите управляемую идентификацию в Networking на вкладке Экземпляры ресурса, тип ресурса Microsoft.Databricks/accessConnectors.

  4. В разделе Exceptions снимите флажок Allow Azure в списке доверенных служб для доступа к этой учетной записи хранения.

  5. При необходимости задайте для параметра Доступ к общедоступной сети значение Отключено. Управляемое удостоверение можно использовать для обхода проверки доступа к общедоступной сети.

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

Безсерверные хранилища SQL — это вычислительные ресурсы, которые выполняются в подписке Azure Databricks, а не в вашей подписке Azure. Если вы настроите брандмауэр на Azure Data Lake Storage и планируете использовать бессерверные хранилища SQL, необходимо настроить брандмауэр, чтобы разрешить доступ из бессерверных хранилищ SQL.

Инструкции см. в разделе "Настройка брандмауэра для бессерверного доступа к вычислительным ресурсам (устаревшая версия)".

Обновление существующего хранилища метаданных Unity Catalog для использования управляемого удостоверения для доступа к корневому хранилищу

Если у вас есть хранилище метаданных Unity Catalog, созданное с помощью принципала службы, и вы хотите обновить для использования управляемого удостоверения, это можно сделать с помощью вызова API.

  1. Создайте коннектор Access для Azure Databricks и назначьте ему разрешения для контейнера хранилища, используемого для корневого хранилища метаданных Unity Catalog, согласно инструкциям из Configure a managed identity for Unity Catalog.

    Вы можете создать соединитель доступа, используя управляемое удостоверение, назначаемое системой, или управляемое удостоверение, назначаемое пользователем.

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

  2. Как администратор учетной записи войдите в рабочую область Azure Databricks, назначенную хранилищу метаданных.

    Для этого необязательно иметь права администратора рабочей области.

  3. Создайте личный маркер доступа.

  4. Создайте профиль конфигурации проверки подлинности Azure Databricks в локальной среде, содержащей следующее:

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

    См. аутентификацию по токену персонального доступа (устаревшая).

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

    Замените значения по умолчанию:

    • <credential-name>: Имя учетных данных хранилища.
    • <access-connector-id>: идентификатор ресурса для соединителя доступа Azure Databricks в формате /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    • <managed-identity-id>: Если вы создали соединитель доступа, используя управляемое удостоверение, назначенное пользователем, укажите идентификатор ресурса этого удостоверения.
    • <profile-name>: имя профиля конфигурации проверки подлинности Azure Databricks.
    databricks storage-credentials create --json '{
      "name\": "<credential-name>",
      "azure_managed_identity": {
        "access_connector_id": "<access-connector-id>",
        "managed_identity_id": "<managed-identity-id>"
      }
    }' --profile <profile-name>
    
  6. Запишите идентификатор учетных данных хранилища в ответе.

  7. Выполните следующую команду Databricks CLI, чтобы получить metastore_id. Замените <profile-name> именем профиля конфигурации проверки подлинности Azure Databricks.

    databricks metastores summary --profile <profile-name>
    
  8. Выполните следующую команду Databricks CLI, чтобы обновить хранилище метаданных с помощью новых учетных данных корневого хранилища.

    Замените значения по умолчанию:

    • <metastore-id> — идентификатор хранилища метаданных, полученный на предыдущем шаге.
    • <storage-credential-id> — идентификатор учетных данных хранилища.
    • <profile-name>: имя профиля конфигурации проверки подлинности Azure Databricks.
    databricks metastores update <metastore-id> \
    --storage-root-credential-id <storage-credential-id> \
    --profile <profile-name>