Recuperación de una entidad de servicio existente

Enumerar entidades de servicio

Si ya tiene una entidad de servicio existente que desea usar, en este artículo se detalla cómo recuperar la entidad de servicio existente.

Para obtener una lista de las entidades de servicio de un inquilino, use az ad sp list. De forma predeterminada, este comando devuelve las primeras 100 entidades de servicio del inquilino. Para obtener todas las entidades de servicio del inquilino, use el parámetro --all. Generar esta lista puede tardar tiempo, por lo que se recomienda filtrarla con uno de los parámetros siguientes:

  • --display-name solicita las entidades de servicio que tengan un prefijo que coincida con el nombre proporcionado. El nombre para mostrar de una entidad de servicio es el valor que se establece con el parámetro --name durante la creación. Si no ha configurado --name durante la creación de la entidad de servicio, el prefijo del nombre es azure-cli-.
  • --spn filtra por los nombres de entidad de servicio que coincidan exactamente. El nombre de la entidad de servicio siempre empieza con https://. Si el valor utilizado para --name no era un URI, este valor https://, seguido por el nombre para mostrar.
  • --show-mine solicita solo las entidades de servicio creadas por el usuario que ha iniciado sesión.
  • --filter toma un filtro OData y filtra en el lado del servidor. Se recomienda este método frente al filtrado en el lado del cliente con el parámetro --query de la CLI. Para más información acerca de los filtros OData, consulte la sintaxis de expresiones OData para filtros.

La información que se devuelve para los objetos de entidad de servicio es detallada. Para obtener solo la información necesaria para iniciar sesión, use la cadena de consulta [].{id:appId, tenant:appOwnerOrganizationId}. Este es un ejemplo que obtiene la información de inicio de sesión de todas las entidades de servicio creadas por el usuario que haya iniciado la sesión actual:

az ad sp list --show-mine --query "[].{SPname:displayName, SPid:appId, tenant:appOwnerOrganizationId}" --output table

Si trabaja en una organización grande con muchas entidades de servicio, pruebe estos ejemplos de comandos:

# 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

Tanto el usuario como el inquilino se pueden recuperar con az ad sp list y az ad sp show, pero los secretos de autenticación o el método de autenticación no están disponibles. Los secretos de los certificados de Azure Key Vault se pueden recuperar con az keyvault secret show, pero no otros secretos que se almacenen de forma predeterminada. Si olvida un método de autenticación o un secreto, restablezca las credenciales de la entidad de servicio.

Propiedades de la entidad de servicio

Al obtener una lista de las entidades de servicio que usan az ad sp list, hay muchas propiedades de salida a las que puede hacer referencia en el 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 el parámetro --query para recuperar y almacenar las propiedades de la entidad de servicio en variables.

# 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"

Pasos siguientes

Ahora que ha aprendido a recuperar la entidad de servicio existente, continúe con el paso siguiente para aprender a administrar los roles de entidad de servicio.