Получение маркеров Microsoft Entra ID (прежнее название — Azure Active Directory) для субъектов-служб

Внимание

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

Управляемые субъекты-службы Azure Databricks управляются непосредственно в Azure Databricks. Управляемые субъекты-службы идентификатора Microsoft Entra управляются в идентификаторе Microsoft Entra, для которого требуются дополнительные разрешения. Databricks рекомендует использовать управляемые субъекты-службы Azure Databricks для большинства вариантов использования. Однако Databricks рекомендует использовать управляемые субъекты-службы Идентификатора Microsoft Entra в случаях, когда необходимо выполнить проверку подлинности с помощью Azure Databricks и других ресурсов Azure одновременно.

Сведения о создании управляемого субъекта-службы Azure Databricks вместо управляемого субъекта-службы идентификатора Microsoft Entra см. в статье "Управление субъектами-службами".

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

Если у вас нет субъекта-службы, можно подготовить один из следующих наборов инструкций:

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

Субъект-служба выступает в роли клиента и использует поток учетных данных клиента OAuth 2.0 для авторизации доступа к ресурсам Azure Databricks.

Субъекты-службы можно управлять в Databricks или с помощью следующей процедуры из портал Azure.

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

Подготовка субъекта-службы на портале Azure

  1. Войдите на портал Azure.

    Примечание.

    Используемый портал отличается в зависимости от того, работает ли ваше приложение Microsoft Entra ID (прежнее название — Azure Active Directory) в общедоступном облаке Azure или в национальном или независимом облаке. Дополнительные сведения см. на странице национальных облаков.

  2. Если у вас есть доступ к нескольким арендаторам, подпискам или каталогам, щелкните значок Каталоги + подписки (каталог с фильтром) в верхнем меню, чтобы перейти к каталогу, в котором необходимо подготовить субъект-службу.

  3. В ресурсах, службах и документах поиска найдите и выберите идентификатор Microsoft Entra.

  4. Нажмите кнопку +Добавить и выберите регистрацию приложения.

  5. Введите имя приложения

  6. В разделе Поддерживаемые типы учетных записей выберите Учетные записи только в этом каталоге организации (один арендатор).

  7. Щелкните Зарегистрировать.

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

    • Application (client) ID (Идентификатор приложения (клиент))
    • Идентификатор каталога (клиент)

    Обзор зарегистрированного приложения Azure

  9. Чтобы создать секрет клиента, в меню "Управление" щелкните " Сертификаты" и "Секреты".

    Примечание.

    Этот секрет клиента используется для создания маркеров идентификатора Microsoft Entra для проверки подлинности субъектов-служб Microsoft Entra ID с помощью Azure Databricks. Чтобы определить, может ли средство Azure Databricks или пакет SDK использовать маркеры идентификатора Microsoft Entra, ознакомьтесь с документацией по инструменту или пакету SDK.

  10. В разделе Секреты клиента выберите Новый секрет клиента.

    Создать секрет клиента

  11. В области Добавление секрета клиента в поле Описание введите описание секрета клиента.

  12. В поле Срок действия выберите срок действия секрета клиента и нажмите кнопку Добавить.

  13. Скопируйте и сохраните значение секрета клиента в безопасном месте, так как он является паролем для вашего приложения.

Подготовка субъекта-службы к работе с помощью Azure CLI

См. статью "Создание субъекта-службы Microsoft Entra ID (ранее Azure Active Directory) с помощью Azure CLI.

Получение маркера доступа идентификатора Microsoft Entra с помощью REST API платформа удостоверений Майкрософт

Внимание

В этом разделе описывается, как вручную получить маркер идентификатора Microsoft Entra для субъекта-службы с помощью REST API платформа удостоверений Майкрософт.

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

Чтобы получить доступ к REST API Databricks с субъектом-службой, вы получите и используете маркер доступа идентификатора Microsoft Entra для субъекта-службы. Дополнительные сведения см. в разделе Первый сценарий: запрос маркера доступа с помощью общего секрета.

Совет

Вы также можете использовать Azure CLI для получения маркера доступа к идентификаторам Microsoft Entra. Ознакомьтесь с маркером доступа к идентификатору Microsoft Entra с помощью Azure CLI.

  1. Соберите следующие сведения:

    Параметр Описание
    Tenant ID Для Directory (tenant) ID связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.
    Client ID Для Application (client) ID связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.
    Client secret Секрет Value клиента для связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.
  2. Используйте приведенные выше сведения вместе с curl , чтобы получить маркер доступа Microsoft Entra ID (прежнее название — Azure Active Directory).

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \
    -d 'client_id=<client-id>' \
    -d 'grant_type=client_credentials' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'client_secret=<client-secret>'
    

    Замена:

    • <tenant-id> с идентификатором арендатора зарегистрированного приложения.
    • <client-id> с идентификатором клиента зарегистрированного приложения.
    • <client-secret> со значением секрета клиента для зарегистрированного приложения.

    Не изменяйте значение параметра scope. Он представляет собой программный идентификатор для Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) вместе с областью по умолчанию (/.default, в кодировке URL-адреса в виде %2f.default).

    Например:

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/v2.0/token \
    -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \
    -d 'grant_type=client_credentials' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'client_secret=abc1D~Ef...2ghIJKlM3'
    

    Маркер доступа к идентификатору Microsoft Entra находится в access_token значении в выходных данных вызова.

Получение маркера доступа идентификатора Microsoft Entra с помощью Azure CLI

Внимание

В этом разделе описывается, как вручную получить маркер идентификатора Microsoft Entra для субъекта-службы с помощью Azure CLI.

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

Чтобы получить доступ к REST API Databricks с субъектом-службой, вы получите и используете маркер доступа идентификатора Microsoft Entra для субъекта-службы.

  1. Соберите следующие сведения:

    Параметр Описание
    Tenant ID Для Directory (tenant) ID связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.
    Client ID Для Application (client) ID связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.
    Client secret Секрет Value клиента для связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.
  2. Получите правильный идентификатор подписки Azure для субъекта-службы Идентификатора Microsoft Entra, если вы еще не знаете этот идентификатор, выполнив одно из следующих действий:

    • В верхней панели навигации рабочей области Azure Databricks щелкните имя пользователя и выберите портал Azure. На появившемся ресурсе рабочей области Azure Databricks щелкните " Обзор " на боковой панели. Затем найдите поле "Идентификатор подписки", содержащее идентификатор подписки.

    • Используйте Azure CLI для выполнения команды az databricks workspace list, используя --query параметры и -o параметры --output для сузить результаты. Замените adb-0000000000000000.0.azuredatabricks.net именем экземпляра рабочей области, не включая https://. В этом примере 00000000-0000-0000-0000-000000000000/subscriptions/ в выходных данных используется идентификатор подписки.

      az databricks workspace list --query "[?workspaceUrl==\`adb-0000000000000000.0.azuredatabricks.net\`].{id:id}" -o tsv
      
      # /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Databricks/workspaces/my-ws
      

      Если появится следующее сообщение, вы вошли в неправильный клиент: The subscription of '<subscription-id>' doesn't exist in cloud 'AzureCloud'. чтобы войти в правильный клиент, необходимо выполнить az login команду еще раз, используя -t или --tenant параметр, чтобы указать правильный идентификатор клиента.

      Вы можете получить идентификатор клиента для рабочей области Azure Databricks, выполнив команду curl -v <per-workspace-URL>/aad/auth и указав выходные данные < location: https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000, где 00000000-0000-0000-0000-000000000000 находится идентификатор клиента. Кроме этого, см. статью о получении идентификаторов подписок и арендаторов на портале Azure.

      az login -t <tenant-id>
      
  3. После получения правильного идентификатора клиента Azure, идентификатора клиента, секрета клиента и идентификатора подписки для субъекта-службы Идентификатора Microsoft Entra ID войдите в Azure с помощью Azure CLI для выполнения команды az login . --service-principal Используйте параметр вместе с указанием значений параметров Tenant ID (Directory (tenant) ID), Client ID (Application (client) ID) и Client secret (Value) для связанного приложения, зарегистрированного в идентификаторе Microsoft Entra (прежнее название — Azure Active Directory).

    az login \
    --service-principal \
    -t <Tenant-ID> \
    -u <Client-ID> \
    -p <Client-secret>
    
  4. Убедитесь, что вы вошли в правильную подписку для субъекта-службы идентификатора Microsoft Entra ID. Для этого выполните команду az account set , используя -s или --subscription параметр, чтобы указать правильный идентификатор подписки.

    az account set -s <subscription-id>
    
  5. Создайте маркер доступа идентификатора Microsoft Entra для субъекта-службы Microsoft Entra ID, выполнив команду az account get-access-token . Используйте параметр --resource, чтобы указать уникальный ИД ресурса для службы Azure Databricks, которым является 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d. Значение маркера Microsoft Entra (прежнее название — Azure Active Directory) можно отобразить в выходных данных команды с помощью --query параметров или -o--output параметров.

    az account get-access-token \
    --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d \
    --query "accessToken" \
    -o tsv
    

Используйте маркер доступа идентификатора субъекта-службы Microsoft Entra для доступа к REST API Databricks

Внимание

В этом разделе описывается использование curl и маркер доступа к идентификатору идентификатора субъекта-службы для доступа к REST API Databricks.

Вместо этого curlможно использовать один из участвующих средств или пакетов SDK, реализующих стандарт унифицированной проверки подлинности клиента Databricks. Эти средства и пакеты SDK также автоматически создают и заменяют истекшие маркеры идентификатора Microsoft Entra ID для вас, используя следующие типы проверки подлинности Databricks:

Субъект-служба, который является пользователем Databricks, может пройти проверку подлинности в REST API Databricks с помощью маркеров идентификатора Microsoft Entra.

Субъект-служба также может добавить себя в качестве администратора рабочей области в рабочую область, если она имеет роль участника или владельца в целевом ресурсе рабочей области в Azure. Если субъект-служба является участником или владельцем целевой рабочей области и хотите добавить его в рабочую область с помощью маркера идентификатора Microsoft Entra, перейдите к API уровня рабочей области для субъектов-служб, которые не являются пользователями Azure Databricks.

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

Доступ к API для субъектов-служб, которые являются пользователями и администраторами Azure Databricks

Чтобы выполнить эту процедуру, необходимо сначала добавить субъект-службу в учетную запись Azure Databricks или рабочую область. Субъект-службу можно добавить непосредственно в учетную запись без предоставления доступа к рабочей области с помощью API SCIM (учетная запись).

Субъект-службу можно добавить в рабочую область с помощью конечной точки API субъектов-служб. Это также добавит субъект-службу в учетную запись Azure Databricks. Например:

С помощью Интерфейса командной строки Databricks версии 0.205 или более поздней (рекомендуется):

Добавьте субъект-службу:

databricks service-principals create --application-id 12a34b56-789c-0d12-e3fa-b456789c0123 --display-name "My Service Principal" -p <profile-name-that-references-calling-users-access-token>

Обновите права рабочей области субъекта-службы:

databricks service-principals patch 1234567890123456 --json @update-service-principal.json -p <profile-name-that-references-access-token>

update-service-principal.json:

{
  "Operations": [
    {
      "op": "add",
      "path": "entitlements",
      "value": {
        "value": "workspace-acccess",
        "value": "allow-cluster-create",
        "value": "databricks-sql-access"
      }
    }
  ],
  "schema": [
    "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ]
}

См . сведения о проверке подлинности для интерфейса командной строки Databricks.

С помощью curl:

curl -X POST \
-H 'Authorization: Bearer <access-token>' \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/preview/scim/v2/ServicePrincipals \
-H 'Content-type: application/scim+json' \
-d @create-service-principal.json

create-service-principal.json:

{
  "displayName": "My Service Principal",
  "applicationId": "12a34b56-789c-0d12-e3fa-b456789c0123",
  "entitlements": [
    {
      "value": "allow-cluster-create"
    }
  ],
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal"
  ],
  "active": true
}

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

  • REST API Azure Databricks, который требуется вызвать, требует доступа администратора рабочей области, а субъект-служба является членом рабочей области, но в настоящее время не имеет доступа администратора к рабочей области.
  • Субъект-служба еще не добавлен в целевую рабочую область Azure Databricks.
  1. Соберите следующие сведения:

    Параметр Описание
    Маркер доступа идентификатора Microsoft Entra Маркер доступа к идентификатору Microsoft Entra, возвращенный из запроса, в запросе на получение маркера доступа к идентификаторам Microsoft Entra с помощью REST API платформа удостоверений Майкрософт или получения маркера доступа к идентификатору Microsoft Entra с помощью Azure CLI.
  2. Используйте маркер доступа к идентификатору Microsoft Entra вместе с curl вызовом REST API Databricks. Например:

    С помощью Интерфейса командной строки Databricks версии 0.205 или более поздней (рекомендуется):

    databricks clusters list -p <profile-name-that-references-azure-ad-access-token>
    

    См . сведения о проверке подлинности для интерфейса командной строки Databricks.

    С помощью curl:

    curl -X GET \
    -H 'Authorization: Bearer <access-token>' \
    https://<databricks-instance>/api/2.0/clusters/list
    

    Замена:

    • <access-token> с маркером доступа идентификатора Microsoft Entra.
    • <databricks-instance> с URL-адресом рабочей области развертывания Azure Databricks.
    • GET и /api/2.0/clusters/list с соответствующей операцией HTTP и конечной точкой для целевых REST API Databricks.

    Например:

    curl -X GET \
    -H 'Authorization: Bearer <access-token>' \
    https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list
    

Доступ к API уровня рабочей области для субъектов-служб, которые не являются пользователями Azure Databricks

Выполните следующую процедуру, если одно из следующих значений имеет значение true:

  • REST API Azure Databricks, который требуется вызвать, требует доступа администратора рабочей области, а субъект-служба является членом рабочей области, но в настоящее время не имеет доступа администратора к рабочей области.
  • Субъект-служба еще не добавлен в целевую рабочую область Azure Databricks.

Требования:

  • Субъект-служба требует роль участника или владельца в целевом ресурсе рабочей области в Azure.
  1. Соберите следующие сведения:

    Параметр Описание
    Идентификатор клиента Идентификатор каталога (клиента) для связанного приложения, зарегистрированного в идентификаторе Microsoft Entra, в подготовке субъекта-службы в портал Azure.
    Client ID Идентификатор приложения (клиента) для связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.
    Секрет клиента Значение секрета клиента для связанного приложения, зарегистрированного в идентификаторе Microsoft Entra ID, созданном при подготовке субъекта-службы в портал Azure.
    Маркер доступа идентификатора Microsoft Entra Маркер доступа к идентификатору Microsoft Entra, возвращенный из запроса, в запросе на получение маркера доступа к идентификаторам Microsoft Entra с помощью REST API платформа удостоверений Майкрософт или получения маркера доступа к идентификатору Microsoft Entra с помощью Azure CLI.
    ИД подписки Идентификатор (а не имя) подписки Azure, связанной с целевой рабочей областью Azure Databricks. Чтобы получить доступ к этой информации, см. раздел Открытие ресурсов. Чтобы открыть целевой ресурс, можно найти его по типу службы Azure Databricks и любой другой информации в Azure, которая известна вам о целевой рабочей области Azure Databricks.
    Имя группы ресурсов Имя группы ресурсов Azure, связанной с целевой рабочей области Azure Databricks.
    имя рабочей области. Имя целевой рабочей области Databricks в Azure.
  2. Используйте некоторые из предыдущих сведений вместе с curl получением маркера доступа к конечной точке управления идентификаторами Майкрософт.

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/token \
    -d 'client_id=<client-id>' \
    -d 'grant_type=client_credentials' \
    -d 'resource=https%3A%2F%2Fmanagement.core.windows.net%2F' \
    -d 'client_secret=<client-secret>'
    

    Замена:

    • <tenant-id> с идентификатором арендатора зарегистрированного приложения.
    • <client-id> с идентификатором клиента зарегистрированного приложения.
    • <client-secret> со значением секрета клиента для зарегистрированного приложения.

    Не изменяйте значение параметра resource. Он представляет конечную точку управления идентификаторами Microsoft Entra (https://management.core.windows.net/url-кодирование как https%3A%2F%2Fmanagement.core.windows.net%2F).

    Например:

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/token \
    -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \
    -d 'grant_type=client_credentials' \
    -d 'resource=https%3A%2F%2Fmanagement.core.windows.net%2F' \
    -d 'client_secret=abc1D~Ef...2ghIJKlM3'
    

    Маркер доступа к конечной точке управления идентификаторами Майкрософт находится в access_token значении в выходных данных вызова.

  3. Используйте маркер доступа к конечной точке управления идентификаторами Microsoft Entra вместе с остальной частью предыдущей информации и curl вызовите REST API Databricks, например:

     curl -X GET \
     -H 'Authorization: Bearer <access-token>' \
     -H 'X-Databricks-Azure-SP-Management-Token: <management-access-token>' \
     -H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/workspaces/<workspace-name>' \
     https://<databricks-instance>/api/2.0/clusters/list
    

    Замена:

    • <access-token> с маркером доступа идентификатора Microsoft Entra.

      • <management-access-token> с маркером доступа к конечной точке управления идентификаторами Майкрософт.
      • <subscription-id> с идентификатором подписки, связанной с целевой рабочей областью Azure Databricks.
      • <resource-group-name> с именем группы ресурсов, связанной с целевой рабочей области Azure Databricks.
      • <workspace-name> с именем целевой рабочей области Databricks.
      • <databricks-instance> с URL-адресом рабочей области развертывания Azure Databricks.
      • GET и /api/2.0/clusters/list с соответствующей операцией HTTP и конечной точкой для целевых REST API Databricks.

      Например:

      curl -X GET \
      -H 'Authorization:Bearer <access-token>' \
      -H 'X-Databricks-Azure-SP-Management-Token: abC1dE...ghIj23kl' \
      -H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/12a345...bcd6789e/resourceGroups/my-resource-group/providers/Microsoft.Databricks/workspaces/my-workspace' \
      https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list
      

    После проверки подлинности в рабочей области субъект-служба становится администратором рабочей области Azure Databricks и больше не требует роли участника или владельца для доступа к рабочей области.