Utiliser un principal de service Azure avec une authentification par mot de passe

Lorsque vous créez un principal de service, vous choisissez le type d’authentification de connexion qu’il utilise. Il existe deux types d’authentification pour les principaux de service Azure : l’authentification par mot de passe et l’authentification par certificat. L’authentification basée sur le mot de passe est recommandée lors de l’apprentissage des principaux de service, mais nous vous recommandons d’utiliser authentification basée sur des certificats pour les applications.

Cette étape du didacticiel explique comment utiliser un mot de passe de principal de service pour accéder à une ressource Azure.

Créer un principal de service contenant un mot de passe

Le comportement par défaut de az ad sp create-for-rbac consiste à créer un principal de service avec un mot de passe aléatoire.

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

Console de sortie :

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

La sortie d’un principal de service avec l’authentification par mot de passe comprend la clé password. Veillez à copier cette valeur, car elle ne pourra pas être récupérée. Si vous perdez le mot de passe, effectuez une réinitialisation des informations d’identification du principal de service.

Se connecter à l’aide d’un principal de service à l’aide d’un mot de passe

Testez les informations d’identification et les autorisations du nouveau principal du service en vous connectant. Pour vous connecter avec un principal de service, vous avez besoin du appId (également appelé « ID principal de service », « nom d'utilisateur » ou « personne assignée »), tenant, et password. Voici un exemple :

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

Si vous ne connaissez pas votre appId ou votre --tenant, récupérez-le à l’aide de la commande 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 vous effectuez des tests dans une organisation qui nécessite une authentification à deux facteurs, message d’erreur « ... L’authentification interactive est nécessaire... s’affiche. En guise d’alternative, utilisez un certificat ou identités managées.

Important

Si vous souhaitez éviter d'afficher votre mot de passe sur la console et que vous l'utilisez az login de manière interactive, utilisez la commande read -s dans bash.

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

Dans PowerShell, utilisez l’applet de commande Get-Credential.

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

Étapes suivantes

Maintenant que vous avez appris à utiliser des principaux de service à l'aide d'un mot de passe, passez à l'étape suivante pour apprendre à utiliser les principaux de service avec une authentification basée sur un certificat.