Service Principal VS Managed Identity

Def :


Qu'est ce qu'un service principal ? Qu'est-ce qu'une Managed Identity ?
Pasted image 20240528114639.png

Managed Identity :


C'est une fonctionnalité d'Azure qui fourni une identité à un service dans le but de simplifier la gestion des secrets. Il existe deux types de managed identities :

  1. System-assigned : par défaut lors de la création de certaines ressources Azure comme les VMs, lors de la destruction de la ressource, l'identité est aussi détruite
  2. User-assigned : cette identité est créée de manière indépendante, ce qui permet à plusieurs ressources de partager une seule identité assignée
    Une identité permet par exemple d'éviter de mettre des Creds dans du code en gérant les permissions de manière extérieure.
    Alors, comment accéder à des ressources ?
    Simplement avec les rôles RBAC de la managed identity, il est possible d'accéder à certaines ressources.

Service Principal :


Un service principal est indépendant (similaire à user-assigned), mais permet d'accéder à des ressources hors Azure, en s'authentifiant à d'autres services Microsoft comme le devops et autres.
Le but est la encore de réduire le besoin de stocker les mots de passe en clair dans du code et des configs.

Utilité et fonctionnement :


Comment créer et utiliser une managed identity :


Cas 1 : logic App to Key Vault


Dans cet exemple on créé un User-assigned managed identity, de lui donner l'autorisation de lire les secrets d'un key vault puis de donner comme authorisaiton à la logic app celles de la managed identity :

1. Key Vault :

puis on crée notre Key Vault avec un secret dedans :
Pasted image 20240528105620.png
Il est nécessaire de changer le mode d'attribution des droits du vault pour la suite :
Pasted image 20240528113401.png

2. Managed identity :

On créé notre user-assigned managed identity :
Pasted image 20240528105951.png
Pasted image 20240528110129.png
Une fois notre managed identity créée il faut que l'on ajoute le droit à celle-ci d'accéder aux secrets dans le key vault, on va donc dans key vault -> Access Policies -> create -> secret permissions :
Pasted image 20240528113858.png
On choisit ensuite notre managed identity :
Pasted image 20240528114040.png
c'est tout bon désormais :
Pasted image 20240528114113.png

3. Logic App :

Enfin on créé notre logic App :
Pasted image 20240528105704.png
il faut maintenant qu'on change son type de permission en User-assigned :
Pasted image 20240528111114.png
puis :
Pasted image 20240528111243.png
On a donc bien ajouté notre managed identity à notre ressource :
Pasted image 20240528111336.png
Notre logic app peut donc récupérer des secrets depuis le key vault grâce à la managed identity.

Cas 2 :


On va voir comment attribuer des rôles à notre Managed identity

Cas 3 : Créer un service principal


Pour créer un service principal il faut se rendre dans : MEID -> add -> app registration
Pasted image 20240530150229.png
A partir de ce moment le service principal est créé mais il nous faut rajouter des permissions :
https://learn.microsoft.com/en-us/entra/identity-platform/howto-create-service-principal-portal
Pasted image 20240530151302.png