Compartir a través de


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 paso se explica cómo recuperar la entidad de servicio existente.

Se puede recuperar una lista de las entidades de servicio de un inquilino con az ad sp list. Por defecto, este comando devuelve los primeros 100 principios de servicio de su inquilino. Para obtener todos los principales de servicio de un inquilino, use el parámetro --all. La obtención de esta lista puede tardar mucho tiempo, por lo que se recomienda filtrar la lista con uno de los parámetros siguientes:

  • --display-name solicita 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 establecido con el parámetro --name durante la creación. Si no estableciste --name durante la creación del principal de servicio, el prefijo de nombre es azure-cli-.
  • --spn filtra por coincidencia exacta del nombre principal de servicio. El nombre principal del servicio siempre comienza con https://. Si el valor que usó para --name no era un URI, este valor será https:// seguido del nombre mostrado.
  • --show-mine solicita solo las entidades de servicio creadas por el usuario que ha iniciado sesión.
  • --filter toma un filtro OData y realiza el filtrado del lado servidor . Este método se recomienda en lugar de filtrar del lado del cliente con el parámetro --query de la CLI. Para obtener información sobre los filtros de OData, consulte Sintaxis de expresiones de OData para filtros.

La información devuelta para los objetos principales de servicio es excesivamente detallada. Para obtener solo la información necesaria para el inicio de sesión, use la cadena [].{id:appId, tenant:appOwnerOrganizationId}de consulta . Este es un ejemplo que obtiene la información de inicio de sesión de todas las entidades de servicio creadas por el usuario actualmente conectado.

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 se almacenan otros secretos 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 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 --query parámetro para recuperar y almacenar las propiedades del service principal 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 su principal de servicio existente, proceda al siguiente paso para aprender cómo administrar los roles de su principal de servicio.