Get токены Microsoft Entra ID для служебных принципалов
Внимание
В этом разделе описывается, как вручную get маркеры идентификатора Microsoft Entra для субъектов-служб.
Управляемые субъекты-службы Azure Databricks управляются непосредственно в Azure Databricks. Управляемые субъекты-службы идентификатора Microsoft Entra управляются в идентификаторе Microsoft Entra, для которого требуются дополнительные разрешения. Databricks рекомендует использовать управляемые субъекты-службы Azure Databricks для большинства вариантов использования. Однако Databricks рекомендует использовать управляемые субъекты-службы идентификатора Microsoft Entra в случаях, where необходимо выполнить проверку подлинности с помощью Azure Databricks и других ресурсов Azure одновременно.
Сведения о создании управляемого субъекта-службы Azure Databricks вместо управляемого субъекта-службы идентификатора Microsoft Entra см. в статье "Управление субъектами-службами".
Databricks не рекомендует создавать маркеры идентификатора Microsoft Entra для субъектов-служб Microsoft Entra ID вручную. Это связано с тем, что каждый маркер идентификатора Microsoft Entra является коротким сроком действия, обычно истекает в течение одного часа. После этого необходимо вручную generate получить новый токен идентификатора Microsoft Entra. Вместо этого используйте один из участвующих средств или пакетов SDK, реализующих стандарт унифицированной проверки подлинности клиента Databricks. Эти средства и пакеты SDK автоматически generate и заменяют истекшие маркеры идентификатора Microsoft Entra ID для вас, используя следующие типы проверки подлинности Databricks:
- Проверка подлинности управляемых удостоверений Azure
- Проверка подлинности субъекта-службы MS Entra
- Проверка подлинности Azure CLI
Если у вас нет субъекта-службы, можно подготовить один из следующих наборов инструкций:
В этой статье описывается, как субъект-служба, определенный в идентификаторе Microsoft Entra, также может выступать в качестве субъекта, в котором политики проверки подлинности и авторизации могут применяться в Azure Databricks. В отличие от обычных пользователей (субъектов-пользователей) субъекты-службы в рабочей области Azure Databricks могут иметь разный уровень контроля доступа.
Субъект-служба выступает в роли клиента и использует поток клиента OAuth 2.0 credentials для авторизации доступа к ресурсам Azure Databricks.
Субъекты-службы можно управлять в Databricks или с помощью следующей процедуры из портал Azure.
Вы также можете использовать библиотеку проверки подлинности Майкрософт (MSAL) для программного get маркер доступа идентификатора Microsoft Entra для пользователя вместо субъекта-службы. См. Get маркеры идентификатора Microsoft Entra для пользователей с помощью MSAL.
Подготовка субъекта-службы на портале Azure
Войдите на портал Azure.
Примечание.
Используемый портал отличается в зависимости от того, работает ли ваше приложение идентификатора Microsoft Entra в общедоступном облаке Azure или в национальном или независимом облаке. Дополнительные сведения см. на странице национальных облаков.
Если у вас есть доступ к нескольким арендаторам, подпискам или каталогам, щелкните значок Каталоги + подписки (каталог с фильтром) в верхнем меню, чтобы перейти к каталогу, в котором необходимо подготовить субъект-службу.
В поиске ресурсов, служб и документовнайдите selectMicrosoft Entra ID.
Щелкните + Добавить и selectрегистрацию приложения.
Введите имя приложения
В разделе Поддерживаемые типы учетных записейselectучетные записи в этом каталоге организации (только один клиент).
Щелкните Зарегистрировать.
На странице Обзор страницы приложения в разделе Основы скопируйте следующее values:
- Application (client) ID (Идентификатор приложения (клиент))
- Идентификатор каталога (клиент)
Чтобы generate секрет клиента, в Управлениещелкните Сертификаты & секреты.
Примечание.
Этот секрет клиента используется для generate маркеров идентификатора Microsoft Entra id для проверки подлинности субъектов-служб Идентификатора Microsoft с помощью Azure Databricks. Чтобы определить, может ли средство Azure Databricks или пакет SDK использовать маркеры идентификатора Microsoft Entra, ознакомьтесь с документацией по инструменту или пакету SDK.
В разделе Секреты клиента выберите Новый секрет клиента.
В области Добавление секрета клиента в поле Описание введите описание секрета клиента.
Для истекает срок действия, select срок действия секрета клиента, а затем нажмите кнопку Добавить.
Скопируйте и сохраните значение секрета клиента в безопасном месте, так как он является паролем для вашего приложения.
Подготовка субъекта-службы к работе с помощью Azure CLI
См. статью "Создание субъекта-службы Microsoft Entra ID (ранее Azure Active Directory) с помощью Azure CLI.
Get токен доступа Microsoft Entra ID с помощью REST API платформы идентификации Microsoft
Внимание
В этом разделе описывается, как вручную get токен Microsoft Entra ID для основного объекта службы с помощью REST API платформы идентификации Microsoft.
Databricks не рекомендует создавать маркеры идентификатора Microsoft Entra для субъектов-служб Microsoft Entra ID вручную. Это связано с тем, что каждый маркер идентификатора Microsoft Entra является коротким сроком действия, обычно истекает в течение одного часа. После этого необходимо вручную generate заменяющий маркер идентификатора Microsoft Entra. Вместо этого используйте один из участвующих средств или пакетов SDK, реализующих стандарт унифицированной проверки подлинности клиента Databricks. Эти инструменты и пакеты SDK автоматически generate и заменяют истекшие токены идентификатора Microsoft Entra ID для вас, используя следующие типы проверки подлинности Databricks:
Чтобы получить доступ к REST API Databricks с помощью учетной записи службы, вы get, а затем используете токен доступа Microsoft Entra ID для учетной записи службы. Дополнительные сведения см. в разделе Первый сценарий: запрос маркера доступа с помощью общего секрета.
Совет
Вы также можете использовать Azure CLI для get маркера доступа к идентификатору Microsoft Entra. См. Get токен доступа Microsoft Entra ID с помощью Azure CLI.
Соберите следующие сведения:
Параметр Описание Tenant ID
Для Directory (tenant) ID
связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.Client ID
Для Application (client) ID
связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.Client secret
Секрет Value
клиента для связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.Используйте предыдущие сведения вместе с curl для get маркера доступа идентификатора Microsoft Entra.
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
значении в выходных данных вызова.-
Get маркер доступа Microsoft Entra ID с помощью Azure CLI
Внимание
В этом разделе описывается, как вручную get маркер идентификатора Microsoft Entra для субъекта-службы с помощью Azure CLI.
Databricks не рекомендует создавать маркеры идентификатора Microsoft Entra для субъектов-служб Microsoft Entra ID вручную. Это связано с тем, что каждый маркер идентификатора Microsoft Entra является коротким сроком действия, обычно истекает в течение одного часа. После этого вам необходимо вручную generate заменить токен Microsoft Entra ID. Вместо этого используйте один из участвующих средств или пакетов SDK, реализующих стандарт унифицированной проверки подлинности клиента Databricks. Эти инструменты и пакеты SDK автоматически выполняют операцию generate и заменяют истекшие токены идентификатора Microsoft Entra ID для вас, используя следующие виды аутентификации в Databricks:
- Проверка подлинности управляемых удостоверений Azure
- Проверка подлинности субъекта-службы MS Entra
- Проверка подлинности Azure CLI
Чтобы получить доступ к REST API Databricks с помощью служебного принципала, вы get, а затем используйте токен доступа Microsoft Entra ID для служебного принципала.
Соберите следующие сведения:
Параметр Описание Tenant ID
Для Directory (tenant) ID
связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.Client ID
Для Application (client) ID
связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.Client secret
Секрет Value
клиента для связанного приложения, зарегистрированного в идентификаторе Microsoft Entra.Get правильный идентификатор подписки Azure для учетной записи службы Microsoft Entra ID, если вы еще не знаете этот идентификатор, выполните одно из следующих действий:
В верхней панели навигации рабочей области 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
параметр, чтобы указать правильный идентификатор клиента.Вы можете get идентификатор арендатора для рабочей области Azure Databricks, выполнив команду
curl -v <per-workspace-URL>/aad/auth
и найдя в выводе< location: https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000
, where00000000-0000-0000-0000-000000000000
— это идентификатор арендатора. См. также Get идентификаторы подписок и клиентов на портале Azure.az login -t <tenant-id>
После получения правильного идентификатора клиента Azure, идентификатора клиента, секрета клиента и идентификатора подписки для субъекта-службы Идентификатора Microsoft Entra ID войдите в Azure с помощью Azure CLI для выполнения команды az login . Используйте параметр
--service-principal
одновременно с указанием values для parametersTenant ID
(Directory (tenant) ID
),Client ID
(Application (client) ID
) иClient secret
(Value
) для связанного приложения, зарегистрированного в Microsoft Entra ID.az login \ --service-principal \ -t <Tenant-ID> \ -u <Client-ID> \ -p <Client-secret>
Убедитесь, что вы вошли в правильную подписку для субъекта-службы идентификатора Microsoft Entra ID. Для этого выполните команду az account set, используя параметр
-s
или--subscription
, чтобы указать правильный идентификатор подписки.az account set -s <subscription-id>
Generate маркер доступа идентификатора Microsoft Entra для вошедшей в систему учетной записи службы Microsoft Entra ID, выполнив команду az account get-access-token. Используйте параметр
--resource
, чтобы указать уникальный ИД ресурса для службы Azure Databricks, которым является2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
. Значение маркера идентификатора Microsoft Entra можно отобразить в выходных данных команды с помощью--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 также автоматически generate и заменить истекшие маркеры идентификатора 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>
Update права рабочей области субъекта-службы:
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.
Соберите следующие сведения:
Параметр Описание Маркер доступа идентификатора Microsoft Entra Маркер доступа Microsoft Entra ID, возвращенный из запроса, Get токен доступа Microsoft Entra ID с использованием REST API платформы идентификации Microsoft или Get токен доступа Microsoft Entra ID с Azure CLI. Используйте маркер доступа к идентификатору 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.
Соберите следующие сведения:
Параметр Описание Идентификатор клиента Идентификатор каталога (клиента) для связанного приложения, зарегистрированного в идентификаторе Microsoft Entra, в подготовке субъекта-службы в портал Azure. Client ID Идентификатор приложения (клиента) для связанного приложения, зарегистрированного в идентификаторе Microsoft Entra. Секрет клиента Значение секрета клиента для связанного приложения, зарегистрированного в идентификаторе Microsoft Entra ID, созданном при подготовке субъекта-службы в портал Azure. Маркер доступа идентификатора Microsoft Entra Маркер доступа к идентификатору Microsoft Entra, возвращенный из запроса, Get маркер доступа к идентификатору Microsoft Entra с REST API платформы удостоверений Майкрософт или Get маркер доступа к идентификатору Microsoft Entra сAzure CLI. ИД подписки Идентификатор (а не имя) подписки Azure, связанной с целевой рабочей областью Azure Databricks. Для получения информации об get данной и последующей информации, см. раздел Открытые ресурсы. Чтобы открыть целевой ресурс, можно найти его по типу службы Azure Databricks и любой другой информации в Azure, которая известна вам о целевой рабочей области Azure Databricks. Имя группы ресурсов Имя группы ресурсов Azure, связанной с целевой рабочей области Azure Databricks. имя рабочей области. Имя целевой рабочей области Databricks в Azure. Используйте некоторые из предыдущих сведений вместе с
curl
для get маркера доступа к конечной точке управления идентификаторами Майкрософт.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
значении в выходных данных вызова.-
Используйте маркер доступа к конечной точке управления идентификаторами 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 и больше не требует роли участника или владельца для доступа к рабочей области.