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


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

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

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

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

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

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

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

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

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

Требования

Пользователь или служебный принципал Azure, который создает соединитель доступа, должен:

  • Станьте участником или владельцем группы ресурсов Azure.

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

  • Будьте владельцем или пользователем с ролью администратора доступа пользователей Azure RBAC в учетной записи хранения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Шаг 4. Предоставление Azure Databricks доступ к настройке событий файлов от вашего имени

Примечание.

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

Этот шаг позволяет Azure Databricks автоматически настраивать события файлов. Чтобы предоставить разрешения на этом шаге, необходимо иметь роли владельца или администратора доступа пользователей Azure RBAC в управляемом удостоверении и группе ресурсов, в которую входит учетная запись Azure Data Lake Storage.

  1. Следуйте инструкциям в Шаге 3: Предоставьте управляемому удостоверению доступ к событиям файлов и назначьте ему роль участника учетной записи хранения, а также роль участника данных очереди хранилища.
  2. Перейдите к группе ресурсов Azure, в которой находится учетная запись Azure Data Lake Storage.
  3. Выберите Управление доступом (IAM), щелкните + Добавить и выберите Добавить назначение роли.
  4. Выберите роль EventGrid EventSubscription Contributor и нажмите "Далее".
  5. Под Назначение доступа выберите Управляемое удостоверение.
  6. Щелкните +Выбрать участников и выберите либо коннектор доступа для Azure Databricks, либо управляемую пользователем идентификацию.
  7. Найдите имя соединителя или удостоверение, назначаемое пользователем, выберите его и нажмите кнопку "Проверить и назначить".

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

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

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

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

  2. Щелкните Значок каталогакаталог.

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

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

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

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

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

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

      Префикс abfss:// добавляется автоматически.

    • Идентификатор соединителя доступа: введите идентификатор ресурса соединителя доступа 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 Catalog".

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

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

Шаг 1. Активируйте доступ рабочей области Azure Databricks к хранилищу Azure

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

См. инструкции в статье для предоставления вашей рабочей области Azure Databricks доступа кAzure Data Lake Storage.

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

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

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

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

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

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

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

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

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

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

Использование командной строки Azure CLI

  1. Установите Azure CLI и войдите в систему.

    Для входа с использованием сервисного принципала Microsoft Entra ID см. статью вход в Azure CLI с использованием сервисного принципала Microsoft Entra ID.

    Чтобы войти, используя учетную запись пользователя Azure Databricks, см. Вход в Azure CLI с учетной записью пользователя Azure Databricks.

  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 на портале Azure и просмотрите управляемое удостоверение на вкладке Сеть в разделе Экземпляры ресурсов для типа ресурса Microsoft.Databricks/accessConnectors.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    См. аутентификацию с помощью маркера личного доступа 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>