Se connecter avec un principal de service en utilisant Azure CLI

Les principaux de service sont des comptes non liés à un utilisateur spécifique, qui peuvent détenir des autorisations sur ces derniers, attribuées par le biais de rôles prédéfinis. L’authentification avec un principal de service est la meilleure façon d’écrire des scripts ou des programmes sécurisés, ce qui vous permet d’appliquer des restrictions d’autorisation et des informations d’identification statiques stockées localement. Pour en savoir plus sur les principaux de service, consultez l’article Utiliser les principaux de service à l’aide d’Azure CLI.

Pour vous connecter avec un principal de service, il vous faut :

  • L’URL ou le nom associé au principal du service
  • Le mot de passe du principal de service ou le certificat X509 utilisé pour créer le principal du service au format PEM
  • Le locataire associé au principal du service, comme un domaine .onmicrosoft.com ou un ID d’objet Azure

Notez deux faits importants quand vous utilisez des principaux de service et Azure CLI :

  • Un CERTIFICAT doit être ajouté à la CLÉ PRIVÉE dans un fichier PEM. Pour voir un exemple de fichier au format PEM, consultez Authentification par certificat.

  • Si votre principal du service utilise un certificat qui est stocké dans Key Vault, la clé privée de ce certificat doit être disponible sans connexion à Azure. Si vous souhaitez récupérer le certificat pour az login, consultez Récupérer un certificat à partir de Key Vault.

az login --service-principal -u <app-id> -p <password-or-cert> --tenant <tenant>

Important

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

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

Sous PowerShell, utilisez la cmdlet Get-Credential.

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

Voir aussi