Создание управляемого хранилища каталога Unity с помощью субъекта-службы (устаревшая версия)

Внимание

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

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

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

Создание хранилища метаданных, доступ к которому осуществляется с помощью субъекта-службы (устаревшая версия)

Чтобы создать хранилище метаданных Unity Catalog, к которому обращается субъект-служба, сделайте следующее:

  1. Создание учетной записи хранения Azure Data Lake Storage 2-го поколения.

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

    См. статью Создание учетной записи хранения для использования с Azure Data Lake Storage 2-го поколения. Это должна быть учетная запись уровня "Премиум" Azure Data Lake Storage 2-го поколения в том же регионе, что и рабочие области Azure Databricks.

  2. Создайте контейнер в новой учетной записи хранения.

    Запишите универсальный код ресурса (URI) ADLSv2 для контейнера в следующем формате:

    abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<metastore-name>
    

    В приведенных ниже шагах замените <storage-container> этим URI.

  3. В идентификаторе Microsoft Entra создайте субъект-службу и назначьте ей разрешения для учетной записи хранения, используя инструкции в хранилище Access с помощью субъекта-службы и идентификатора Microsoft Entra (Azure Active Directory).

    Каталог Unity будет использовать этот субъект-службу для доступа к контейнерам в учетной записи хранения от имени пользователей каталога Unity. Создайте секрет клиента для субъекта-службы. См. сведения о проверке подлинности субъекта-службы MS Entra. Запишите секрет клиента для субъекта-службы, идентификатор клиентского приложения и идентификатор каталога, в котором был создан этот субъект-служба. В следующих шагах замените <client-secret>, <client-application-id> и <directory-id> этими значениями.

  4. Запишите эти свойства, которые будут использоваться при создании хранилища метаданных:

    • <aad-application-id>
    • Регион учетной записи хранения
    • <storage-container>
    • <client-secret>, <client-application-id> и <directory-id> субъекта-службы
  5. Невозможно создать хранилище метаданных, доступ к которому осуществляется с помощью субъекта-службы в пользовательском интерфейсе консоли учетной записи. Вместо этого используйте API хранилища метаданных учетной записи. Например:

    curl -n -X POST --header 'Content-Type: application/json' https://<account-domain>/api/2.0/accounts/<account-id>/metastores
    --data '{
       "metastore_info": {
          "name": "<metastore-name>",
          "storage_root": "<storage-container>",
          "region": "<region>"
          "storage_root_credential_id"
       }
    }'
    

    Сведения о проверке подлинности в API уровня учетной записи см. в статье MS Entra Service Principal Authentication.

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

  6. Запишите идентификатор хранилища метаданных. При просмотре свойств хранилища метаданных идентификатор хранилища — это часть URL-адреса после /data и до /configuration.

  7. Хранилище метаданных создано, но каталог Unity еще не может записывать в него данные. Чтобы завершить настройку хранилища метаданных, выполните следующие действия.

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

    2. Запишите URL-адрес рабочей области, который является первой частью URL-адреса, после https:// и до azuredatabricks.net включительно.

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

    4. Добавьте личный маркер доступа в файл .netrc в домашнем каталоге. Это повышает безопасность, предотвращая отображение личного маркера доступа в журнале команд оболочки. См. API управления маркерами.

    5. Выполните следующую команду cURL, чтобы создать учетные данные корневого хранилища для хранилища метаданных. Замените значения-заполнители:

      • <workspace-url>: URL-адрес рабочей области, в которой был создан личный маркер доступа.
      • <credential-name>: Имя учетных данных хранилища.
      • <directory-id>: Идентификатор каталога для созданного субъекта-службы.
      • <application-id>: Идентификатор приложения для созданного субъекта-службы.
      • <client-secret>: Значение секрета клиента, созданного для субъекта-службы (не идентификатор секрета клиента).
      curl -n -X POST --header 'Content-Type: application/json' https://<workspace-url>/api/2.0/unity-catalog/storage-credentials --data "{
         \"name\": \"<credential-name>\",
         \"azure_service_principal\": {
         \"directory_id\": \"<directory-id>\",
         \"application_id\": \"<application-id>\",
         \"client_secret\": \"<client-secret>\"
         }
      }"
      

      Запишите идентификатор учетных данных хранилища, который является значением id из ответа команды cURL.

  8. Выполните следующую команду cURL, чтобы добавить в хранилище метаданных новые учетные данные корневого хранилища. Замените значения-заполнители:

    • <workspace-url>: URL-адрес рабочей области, в которой был создан личный маркер доступа.
    • <metastore-id>: Идентификатор хранилища метаданных.
    • <storage-credential-id>: Идентификатор учетных данных хранилища из предыдущей команды.
    curl -n -X PATCH --header 'Content-Type: application/json' https://<workspace-url>/api/2.0/unity-catalog/metastores/<metastore-id> --data
    "{\"storage_root_credential_id\": \"<storage-credential-id>\"}"
    

Теперь вы можете добавить рабочие области в хранилище метаданных.

Создание учетных данных хранилища, использующих субъект-службу (устаревшая версия)

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

Сначала создайте субъект-службу и предоставьте ему доступ к учетной записи хранения после хранилища Access с помощью субъекта-службы и идентификатора Microsoft Entra (Azure Active Directory).

Нельзя добавить учетные данные хранилища субъекта-службы с помощью обозревателя каталогов. Вместо этого используйте API учетных данных хранилища. Например:

curl -X POST -n \
https://<databricks-instance>/api/2.1/unity-catalog/storage-credentials \
-d '{
   "name": "<storage-credential-name>",
   "read_only": true,
   "azure_service_principal": {
      "directory_id": "<directory-id>",
      "application_id": "<application-id>",
      "client_secret": "<client-secret>"
   },
   "skip_validation": "false"
   }'

Вы также можете создавать учетные данные хранения с помощью поставщика Databricks Terraform и databricks_storage_credential.