Obter uma entidade de serviço existente
Listar as entidades de serviço
Se você já tiver uma entidade de serviço existente que deseja usar, esta etapa explica como recuperar a entidade de serviço existente.
Uma lista das entidades de serviço em um locatário pode ser recuperada com o comando az ad sp list. Por padrão, esse comando retorna as 100 primeiras entidades de serviço do locatário. Para obter todas as entidades de serviço de um locatário, use o parâmetro --all
. Obter essa lista pode levar muito tempo, portanto, é recomendável que você filtre a lista com um dos seguintes parâmetros:
--display-name
envia solicitações às entidades de serviço que têm um prefixo que corresponda ao nome fornecido. O nome de exibição de uma entidade de serviço é o valor definido com o parâmetro--name
durante a criação. Se você não definiu--name
durante a criação da entidade de serviço, o prefixo do nome seráazure-cli-
.--spn
filtra a correspondência do nome exato da entidade de serviço. O nome da entidade de serviço sempre começa comhttps://
. se o valor usado para--name
não era um URI, esse valor éhttps://
seguido do nome de exibição.--show-mine
só envia solicitações às entidades de serviço criadas pelo usuário conectado.--filter
usa um filtro OData e realiza a filtragem do lado do servidor. Esse método é recomendado para a filtragem do lado do cliente com o parâmetro--query
da CLI. Para saber mais sobre os filtros do OData, confira Sintaxe de expressão do OData para filtros.
As informações retornadas para objetos da entidade de serviço são detalhadas. Para obter apenas as informações necessárias para entrar, use a cadeia de consulta [].{id:appId, tenant:appOwnerOrganizationId}
. Aqui está um exemplo que obtém as informações de entrada de todas as entidades de serviço criadas pelo usuário atualmente conectado:
az ad sp list --show-mine --query "[].{SPname:displayName, SPid:appId, tenant:appOwnerOrganizationId}" --output table
Se você estiver trabalhando em uma organização de grande porte com muitas entidades de serviço, experimente estes exemplos de comando:
# 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
Importante
O usuário e o locatário podem ser recuperados com az ad sp list e az ad sp show, mas os segredos de autenticação ou o método de autenticação não estão disponíveis. Segredos para certificados no Azure Key Vault podem ser recuperados com az keyvault secret show, mas nenhum outro segredo é armazenado por padrão. Se você esquecer o método de autenticação ou o segredo, redefina as credenciais da entidade de serviço.
Propriedades da entidade de serviço
Quando você obtém uma lista de entidades de serviço usando az ad sp list
, há muitas propriedades de saída que você pode referenciar em seu script.
[
{
"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
}
}
]
Use o parâmetro --query
para recuperar e armazenar propriedades da entidade de serviço em variáveis.
# 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"
Próximas etapas
Agora que você aprendeu a recuperar a entidade de serviço existente, prossiga para a próxima etapa para saber como gerenciar as funções da entidade de serviço.