Featured image of post Principal de service

Principal de service

Les principaux de service sont des identités dans EntraID (ex Azure AD) qui vous permettront d’authentifier vos programmes auprès de vos services utilisant Entra ID, comme Microsoft 365, dans un contexte de sécurité maitrisé.

Contexte

Lorsque vous travaillez dans l’écosystème Microsoft dans des outils comme Microsoft 365 ou Azure, vous êtes authentifié par un système nommé Entra ID (Ex Azure Active Directory ou aad).

Cette authentification permet ensuite d’attribuer des autorisations à votre identité.

Cette authentification est individuelle, elle est liée à votre identité dans cet écosystème. Quand vous souhaitez utiliser un programme qui utilise les ressources de cet écosystème, vous devez lui fournir sa propre identité.

Les principaux de service sont utilisés pour donner une identité à vos programmes.
Les bonnes pratiques veulent que vous créer une identité différente par programme et que vous lui attribuiez le minimum d’autorisation nécessaire pour son bon fonctionnement. C’est le principe du moindre privilège.

Si cette identité est compromise, les conséquences seront limitées aux autorisations que vous lui aurez accordées.

N’oubliez pas d’exécuter un programme dans votre contexte de sécurité et la porte ouverte aux problèmes de sécurité.

Comprendre les principaux de services

Si vous souhaitez approfondir votre compréhension des principaux de services, je vous recommande la vidéo Youtube de John Savill, Azure AD App Registrations, Enterprise Apps and Service Principals

Créer un principal de service

Nous allons maintenant créer un principal de service via 2 méthodes distinctes, l’interface Web et la ligne de commande. Les résultats seront les mêmes. La première méthode permet de bien voir l’ensemble des options possibles alors que la seconde est utilisable dans des usages plus complexes.

Via le portail Entra Id

Rendez-vous sur votre portail Entra ID.

Portail Entra ID

  1. Sélectionnez Applications.
  2. Sélectionnez Inscriptions des applications.
  3. Choisissez + Nouvelle inscription.3

Inscrire une application

  1. Saisir un nom pour votre principal de service.
  2. On créer un compte utilisable uniquement dans notre annuaire Entra ID.
  3. Appuyez sur S’inscrire pour créer votre principal de service.

Information sur votre principal de service

  1. L’ID d’application (client) est l’id de votre principal de service, il sera utilisé pour s’authentifier.
  2. Dans Certificats & secrets vous pouvez gérer le mode d’authentification de votre principal de service, via un secret (mot de passe) ou un certificat.
  3. Dans API autorisées vous pouvez autorisé votre principal de service à interagir avec les différents composants de votre écosystème.

Ajout d’un secret à votre principal de service

  1. Rendez-vous dans Certificats & secrets.
  2. Sélectionnez + Nouveau secret client.
  3. Choisissez un nom pour ce secret, si vous ne mettez rien un nom par défaut avec la date sera mis.
  4. Sélectionnez une durée de vie pour le secret avec un maximum de 24 mois.
  5. Appuyez sur Ajouter pour créer le secret.

Création du secret de votre principal de service

  1. La valeur de votre secret apparait pour cette fois uniquement.
  2. Vous pouvez voir la date de fin de validité du secret.
  3. Vous pouvez supprimer le secret.

Vous pouvez créer plusieurs secrets pour un même principal de service.
Vous devez impérativement copier votre secret dans un endroit sécurisé de type KeyPass. En cas de perte vous ne pourrez pas le retrouver, vous pourrez seulement le supprimer et le recréer.

Je vous conseille de mettre en place une stratégie d’inventaire des principaux de service et de rotation des secrets, de ne pas prendre des durées de vie trop longues, car dans 2 ans vous risquez de ne plus savoir où est utilisé ce service principal jusqu’au moment où une application tombe en panne pour un mot de passe périmé.

Ajout d’autorisation à votre principal de service

  1. Pour ajouter des autorisations à une API de votre écosystème à votre service principal rendez-vous dans API autorisé.
  2. Appuyez sur + Ajouter une autorisation.
  3. Sélectionnez l’API voulu puis le niveau de droit souhaité.

Par exemple pour donner l’autorisation Sites.Selected de Microsoft Graph, sélectionnez Microsoft Graph Ajout de l’autorisation Sites.Selected de Microsoft Graph

  1. Sélectionner Autorisation d’application.
  2. Tapez Sites pour filtrer les droits.
  3. Cochez Sites.Selected.
  4. Appuyez sur Ajouter des autorisations.

Consentement de l’autorisation

  1. Certaines autorisations nécessitent un consentement de l’administrateur.
  2. Cliquez ici pour consentir formellement à l’attribution de l’autorisation. Sans consentement, pas d’autorisation.

Via une ligne de commande

Vous trouverez sur internet un grand nombre de méthodes différentes pour créer un service principal, en 2023, la bonne méthode, celle préconisée par Microsoft est de passer par Microsoft Graph. Toutes autres méthodes risquent de se voir déprécier avant Microsoft Graph.

Pour utiliser Microsoft Graph avec PowerShell, vous devrez installer le SDK. Toutes les informations concernant ce SDK sont sur la page Install the Microsoft Graph PowerShell SDK

Ouvrez une fenêtre en PowerShell Core (version 7) et installez le module Microsoft Graph.

1
Install-Module Microsoft.Graph -Scope CurrentUser

Connectez-vous avec la ligne de code suivante :

1
Connect-MgGraph -Scopes "Application.ReadWrite.All"

Une fois la procédure de connexion terminée avec succès vous pouvez créer un principal de service nommé Mon application via PowerShell avec la ligne de commande suivante :

1
New-MgApplication -DisplayName 'Mon application via PowerShell' | Format-List Id, DisplayName, AppId, SignInAudience, PublisherDomain

En sortie de la commande, vous aurez les informations concernant l’application créer.

Pour ajouter un secret et l’afficher, vous pouvez exécuter le script suivant :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$appRegObj = Get-MgApplication -All -Filter "DisplayName eq 'Mon application via PowerShell'"

$passwordCred = @{
        "displayName" = "Mon secret"
        "endDateTime" = (Get-Date).AddDays(180)
}
    
$newSecretObj = $null
 
# Send the request and get the new password
$newSecretObj = Add-MgApplicationPassword -ApplicationId $appRegObj.Id -PasswordCredential $passwordCred

Write-host $newSecretObj.SecretText

Il existe des versions de ce SDK pour les principaux langages de développement.

Vous savez maintenant créer des identités pour vos programmes.

Merci de votre attention.

comments powered by Disqus
Généré avec Hugo
Thème Stack conçu par Jimmy