web-dev-qa-db-fra.com

Qu'est-ce que Azure Service Principal?

Mon exigence est simple. Je souhaite me connecter à Azure via mon script Shell en mode non interactif, mais la commande "az login -u nom d'utilisateur -p mot de passe" donne l'erreur suivante:

Get Token request returned http error: 400 and server response: {"error":"invalid_grant","error_description":"AADSTS70002: Error validating credentials. : SAML token is invalid. : The element with ID 'xxxxxx' was either unsigned or the signature was invalid.

Un site m'a dit de créer un principal de service. Maintenant, ma question est, qu'est-ce qu'un principal de service, et comment puis-je créer un principal de service pour pouvoir exécuter mes commandes (pour créer différentes ressources comme la passerelle d'application) à partir de mon script Shell?

19
BlindSniper

Veuillez vous référer à ceci document officiel .

Un principal de service Azure est une identité de sécurité utilisée par les applications, services et outils d'automatisation créés par l'utilisateur pour accéder à des ressources Azure spécifiques. Considérez-le comme une "identité d'utilisateur" (identifiant et mot de passe ou certificat) avec un rôle spécifique et des autorisations étroitement contrôlées pour accéder à vos ressources. Il doit seulement être capable de faire des choses spécifiques, contrairement à une identité d'utilisateur générale. Il améliore la sécurité si vous ne lui accordez que le niveau d'autorisations minimum nécessaire pour effectuer ses tâches de gestion.

Si vous souhaitez créer un nouveau principal de service (sp) avec Azure CLi 2.0. Vous pouvez vous connecter avec votre utilisateur Azure AD. Exécutez ensuite la commande suivante.

az ad sp create-for-rbac --name {appId} --password "{strong password}"

Le résultat comme ci-dessous:

{
  "appId": "a487e0c1-82af-47d9-9a0b-af184eb87646d",
  "displayName": "MyDemoWebApp",
  "name": "http://MyDemoWebApp",
  "password": {strong password},
  "tenant": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}

appId est votre utilisateur de connexion, password est votre mot de passe de connexion.

Une fois le sp créé, vous devez également lui donner le rôle Contributor, puis vous pouvez gérer votre ressource Azure.

az role assignment create --assignee <objectID> --role Contributor

Maintenant, vous pouvez vous connecter en mode non interactif avec la commande suivante.

az login --service-principal -u <appid> --password {password-or-path-to-cert} --tenant {tenant}
26
Shui shengbao

Voici votre choix: tilisez le portail pour créer une application Azure Active Directory et un principal de service pouvant accéder aux ressources .

Lorsque vous avez une application qui doit accéder ou modifier des ressources, vous devez configurer une application Azure Active Directory (AD) et lui affecter les autorisations requises. Cette approche est préférable à l'exécution de l'application sous vos propres informations d'identification car:

  • Vous pouvez attribuer à l'identité de l'application des autorisations différentes de vos propres autorisations. En règle générale, ces autorisations sont limitées à exactement ce que l'application doit faire.
  • Vous n'avez pas à modifier les informations d'identification de l'application si vos responsabilités changent.
  • Vous pouvez utiliser un certificat pour automatiser l'authentification lors de l'exécution d'un script sans assistance.
3
rickvdbosch

Le principal du service fonctionne simplement comme une usurpation d'identité pour l'utilisateur dans Azure AD. Se référer - https://sanganakauthority.blogspot.com/2019/04/how-to-create-service-principal-or-app.html

À l'aide de cela, vous pouvez effectuer n'importe quel type de tâche de gestion contre Azure à l'aide des API REST. De cette façon, vous évitez d'avoir à fournir des informations d'identification dans une fenêtre contextuelle et, par conséquent, à aider à automatiser les choses dans Azure à l'aide de REST.

1
kunal