Use una entidad de servicio de Azure con autenticación basada en contraseña

Al crear una entidad de servicio, elija el tipo de autenticación de inicio de sesión que usa. Hay dos tipos de autenticación disponibles para las entidades de servicio de Azure: autenticación basada en contraseña y autenticación basada en certificados. La autenticación basada en contraseñas es buena para aprender sobre las entidades de servicio, pero se recomienda usar la autenticación basada en certificados para las aplicaciones.

En este paso del tutorial se explica cómo usar una contraseña de entidad de servicio para acceder a un recurso de Azure.

Crear una entidad de servicio que contenga una contraseña

El comportamiento predeterminado de az ad sp create-for-rbac es crear una entidad de servicio con una contraseña aleatoria.

az ad sp create-for-rbac --name myServicePrincipalName \
                         --role reader \
                         --scopes /subscriptions/mySubscriptionId/resourceGroups/myResourceGroupName

Consola de Salida:

{
  "appId": "myServicePrincipalId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myOrganizationTenantId"
}

La salida para una entidad de servicio con autenticación por contraseña incluye la clave password. No olvide copiar este valor porque no se puede recuperar. Si pierde la contraseña, restablezca las credenciales de la entidad de servicio.

Inicio de sesión con una entidad de servicio mediante una contraseña

Para probar las credenciales y los permisos de la nueva entidad de servicio, inicie sesión. Para iniciar sesión con una entidad de servicio, necesita el appId (también conocido como "id. de entidad de servicio", "nombre de usuario" o "persona asignada"), tenant y password. Este es un ejemplo:

az login --service-principal \
         --username myServicePrincipalId \
         --password myServicePrincipalPassword \
         --tenant myOrganizationTenantID

Si no conoce el appId o --tenant, recupérelo mediante el comando az ad sp list.

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)
echo "Using appId $spID in tenant $tenantID"

az login --service-principal \
         --username $spID \
         --password {paste your password here} \
         --tenant $tenantID

Si está realizando pruebas en una organización que requiere autenticación de dos factores, aparecerá el mensaje de error "...Se necesita autenticación interactiva...". Como alternativa, use un certificado o identidades administradas.

Importante

Si quiere evitar que se muestre la contraseña en la consola y está usando az login de forma interactiva, utilice el comando read -s en bash.

read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>

En PowerShell, use el cmdlet Get-Credential.

$AzCred = Get-Credential -UserName <app-id>
az login --service-principal -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password --tenant <tenant>

Pasos siguientes

Ahora que ha aprendido a trabajar con entidades de servicio mediante una contraseña, continúe con el paso siguiente para aprender a usar entidades de servicio con autenticación basada en certificados.