Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Список учетных записей служб
Если у вас уже есть существующий сервисный объект, который вы хотите использовать, на этом шаге объясняется, как его получить.
Список принципов обслуживания в клиенте можно получить, используя az ad sp list. По умолчанию эта команда возвращает первые 100 субъектов-служб для клиента. Чтобы получить все основные службы клиента, используйте параметр --all
. Получение этого списка может занять много времени, поэтому рекомендуется фильтровать список с одним из следующих параметров:
-
--display-name
запрашивает субъекты-службы, имеющие префикс , соответствующий указанному имени. Отображаемое имя субъекта-службы — это значение, заданное параметром--name
во время создания. Если вы не задали--name
во время создания учетной записи службы, префикс имени установлен какazure-cli-
. -
--spn
выполняется фильтрация по точному совпадению учетной записи службы. Имя сервисного принципала всегда начинается сhttps://
. Если используемое значение--name
не было универсальным кодом ресурса (URI), то за этим значениемhttps://
следует отображаемое имя. -
--show-mine
запрашивает только учетные записи службы, созданные вошедшим пользователем. -
--filter
принимает фильтр OData и выполняет фильтрацию на стороне сервера . Этот метод рекомендуется вместо фильтрации на стороне клиента с использованием параметра CLI--query
. Дополнительные сведения о фильтрах OData см. в синтаксисе выражений OData для фильтров.
Возвращаемая информация для объектов сервиса является подробной. Чтобы получить только сведения, необходимые для входа, используйте строку [].{id:appId, tenant:appOwnerOrganizationId}
запроса. Ниже приведен пример, который получает сведения о входе для всех учетных записей служб, созданных текущим пользователем, вошедшим в систему.
az ad sp list --show-mine --query "[].{SPname:displayName, SPid:appId, tenant:appOwnerOrganizationId}" --output table
Если вы работаете в большой организации со многими субъектами-службами, попробуйте использовать следующие примеры команд:
# get service principals containing a keyword
az ad sp list --display-name mySearchWord --output table
# get service principals using an OData filter
az ad sp list --filter "displayname eq 'myExactServicePrincipalName'" --output json
# get a service principal having a certain servicePrincipalNames property value
az ad sp list --spn https://spURL.com
Это важно
Пользователь и арендатор могут быть получены с помощью az ad sp list и az ad sp show, но секреты аутентификации и метод аутентификации недоступны. Секреты для сертификатов в Azure Key Vault можно получить с помощью az keyvault secret show, но другие секреты по умолчанию не хранятся. Если вы забыли метод аутентификации или секрет, сбросьте учетные данные основной службы.
Свойства служебного объекта
При получении списка учетных записей служб, используя az ad sp list
, в вашем скрипте можно ссылаться на множество выходных свойств.
[
{
"accountEnabled": true,
"addIns": [],
"alternativeNames": [],
"appDescription": null,
"appDisplayName": "myServicePrincipalName",
"appId": "00000000-0000-0000-0000-000000000000",
"appOwnerOrganizationId": "00000000-0000-0000-0000-000000000000",
"appRoleAssignmentRequired": false,
"appRoles": [],
"applicationTemplateId": null,
"createdDateTime": null,
"deletedDateTime": null,
"description": null,
"disabledByMicrosoftStatus": null,
"displayName": "myServicePrincipalName",
"homepage": "https://myURL.com",
"id": "00000000-0000-0000-0000-000000000000",
"info": {
"logoUrl": null,
"marketingUrl": null,
"privacyStatementUrl": null,
"supportUrl": null,
"termsOfServiceUrl": null
},
"keyCredentials": [],
"loginUrl": null,
"logoutUrl": null,
"notes": null,
"notificationEmailAddresses": [],
"oauth2PermissionScopes": [
{
"adminConsentDescription": "my admin description",
"adminConsentDisplayName": "my admin display name",
"id": "00000000-0000-0000-0000-000000000000",
"isEnabled": true,
"type": "User",
"userConsentDescription": "my user description",
"userConsentDisplayName": "my user display name",
"value": "user_impersonation"
}
],
"passwordCredentials": [],
"preferredSingleSignOnMode": null,
"preferredTokenSigningKeyThumbprint": null,
"replyUrls": [],
"resourceSpecificApplicationPermissions": [],
"samlSingleSignOnSettings": null,
"servicePrincipalNames": [
"00000000-0000-0000-0000-000000000000",
"https://myURL.com"
],
"servicePrincipalType": "Application",
"signInAudience": null,
"tags": [
"WindowsAzureActiveDirectoryIntegratedApp"
],
"tokenEncryptionKeyId": null,
"verifiedPublisher": {
"addedDateTime": null,
"displayName": null,
"verifiedPublisherId": null
}
}
]
--query
Используйте параметр для получения и хранения свойств субъекта-службы в переменных.
# Bash script
spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:appId}" --output tsv)
tenantID=$(az ad sp list --display-name myServicePrincipalName --query "[].{tenant:appOwnerOrganizationId}" --output tsv)
userConsentDescr=$(az ad sp list --display-name myServicePrincipalName --query "[].{ucs:oauth2PermissionScopes.userConsentDescription[0]}" --output tsv)
echo "Using appId $spID in tenant $tenantID for $userConsentDescr"
Дальнейшие шаги
Теперь, когда вы узнали, как получить существующий субъект-службу, перейдите к следующему шагу, чтобы узнать, как управлять ролями субъекта-службы.