Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Les outils automatisés qui utilisent des services Azure doivent toujours disposer d’autorisations restreintes. Au lieu que les applications se connectent en tant qu’utilisateur entièrement privilégié, Azure propose des principaux de service.
Un principal de service Azure est une identité créée pour une utilisation avec des applications, des services hébergés et des outils automatisés pour accéder aux ressources Azure. Cet accès est limité par les rôles attribués au principal de service, ce qui vous permet de contrôler les ressources accessibles et à quel niveau. Pour des raisons de sécurité, il est toujours recommandé d’utiliser des principaux de service avec des outils automatisés plutôt que de les autoriser à se connecter avec une identité utilisateur.
Cet article décrit les étapes de création, d’obtention d’informations et de réinitialisation d’un principal de service avec Azure PowerShell.
Caution
Lorsque vous créez un principal de service à l’aide de la commande New-AzADServicePrincipal , la sortie inclut des informations d’identification que vous devez protéger. En guise d’alternative, envisagez d’utiliser des identités managées pour éviter d’avoir à utiliser des informations d’identification.
Prerequisites
- Si vous choisissez d’utiliser Azure PowerShell localement :
- Installez le module Az PowerShell.
- Connectez-vous à votre compte Azure à l’aide de la cmdlet Connect-AzAccount.
- Si vous choisissez d’utiliser Azure Cloud Shell :
- Pour plus d’informations, consultez Vue d’ensemble d’Azure Cloud Shell.
Créer un principal de service
Créez un principal de service avec l’applet de commande New-AzADServicePrincipal . Lors de la création d’un principal de service, vous choisissez le type d’authentification de connexion qu’il utilise.
Important
À compter du module Az PowerShell version 7.x, New-AzADServicePrincipal n’affecte plus le rôle Contributeur au principal de service par défaut. Pour affecter un rôle spécifique à un principal de service, consultez Étapes d’ajout d’une attribution de rôle.
Note
Si votre compte n’a pas l’autorisation de créer un principal de service, New-AzADServicePrincipal retourne un message d’erreur contenant « Privilèges insuffisants pour effectuer l’opération ». Contactez votre administrateur Microsoft Entra pour créer un principal de service.
Dans un répertoire d’ID Microsoft Entra dans lequel les paramètres de Inscription des applications par les utilisateurs est défini sur Non, vous devez être membre de l’un des rôles intégrés Microsoft Entra ID suivants (qui ont l’action : microsoft.directory/applications/createAsOwner ou microsoft.directory/applications/create) :
- Développeur d’applications
- Administrateur d’application
- Administrateur d’application cloud
- Administrateur général
- Administrateur d’identité hybride
Pour plus d’informations sur les paramètres utilisateur dans Microsoft Entra ID, consultez Restreindre les utilisateurs qui peuvent créer des applications.
Il existe deux types d’authentification disponibles pour les principaux de service : l’authentification par mot de passe et l’authentification par certificat.
L’authentification basée sur un mot de passe
Important
Le rôle par défaut d’un principal de service d’authentification basé sur un mot de passe est Contributeur. Ce rôle dispose d’autorisations complètes pour lire et écrire dans un compte Azure. Pour plus d’informations sur la gestion des attributions de rôles, consultez Gérer les rôles de principal de service.
Sans aucun autre paramètre d’authentification, l’authentification par mot de passe est utilisée et un mot de passe aléatoire créé pour vous. Si vous souhaitez utiliser l’authentification par mot de passe, cette méthode est recommandée.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
L’objet retourné contient la PasswordCredentials.SecretText propriété contenant le mot de passe généré. Veillez à stocker cette valeur quelque part en toute sécurité pour vous authentifier auprès du principal de service. Sa valeur ne s’affiche pas dans la sortie de la console. Si vous perdez le mot de passe, réinitialisez les informations d’identification du principal de service.
Le code suivant vous permet d’exporter le secret :
$sp.PasswordCredentials.SecretText
L’objet retourné à partir de New-AzADServicePrincipal contient les Id membres, DisplayName dont l’un peut être utilisé pour la connexion avec le principal de service.
Important
La connexion avec un principal de service nécessite l’ID de locataire sous lequel le principal de service a été créé. Pour obtenir le locataire actif lors de la création du principal de service, exécutez la commande suivante immédiatement après la création du principal de service :
(Get-AzContext).Tenant.Id
Authentification basée sur un certificat
Important
Aucun rôle par défaut n’est attribué lors de la création d’un principal de service d’authentification basé sur un certificat. Pour plus d’informations sur la gestion des attributions de rôles, consultez Gérer les rôles de principal de service.
Les principaux de service utilisant l’authentification basée sur un certificat sont créés avec le CertValue paramètre. Ce paramètre prend une chaîne ASCII encodée en base64 du certificat public. Il s’agit d’un fichier PEM ou d’un CRT ou cer encodé en texte. Les encodages binaires du certificat public ne sont pas pris en charge. Ces instructions supposent que vous disposez déjà d’un certificat disponible.
$cert = <public certificate as base64-encoded string>
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName -CertValue $cert
L’objet retourné à partir de New-AzADServicePrincipal contient les Id propriétés, DisplayName dont l’une peut être utilisée pour la connexion avec le principal de service. Les clients qui se connectent avec le principal de service ont également besoin d’accéder à la clé privée du certificat.
Important
La connexion avec un principal de service nécessite l’ID de locataire sous lequel le principal de service a été créé. Pour obtenir le locataire actif lors de la création du principal de service, exécutez la commande suivante immédiatement après la création du principal de service :
(Get-AzContext).Tenant.Id
Obtenir un principal de service existant
Une liste de principaux de service pour le locataire actif peut être récupérée avec Get-AzADServicePrincipal. Par défaut, cette commande retourne tous les principaux de service dans un locataire. Pour les grandes organisations, il peut prendre beaucoup de temps pour retourner les résultats. Au lieu de cela, l’utilisation de l’un des arguments de filtrage côté serveur facultatifs est recommandée :
-
DisplayNameBeginsWithdemande des principaux de service qui ont un préfixe qui correspond à la valeur fournie. Le nom complet d’un principal de service est la valeur définieDisplayNamelors de la création. -
DisplayNamedemande une correspondance exacte d’un nom de principal de service.
Gérer les rôles du principal du service
Azure PowerShell dispose des applets de commande suivantes pour gérer les attributions de rôles :
Pour plus d’informations sur Role-Based contrôle d’accès (RBAC) et les rôles, consultez RBAC : rôles intégrés.
L’exemple suivant ajoute le rôle Lecteur et supprime le rôle Contributeur :
New-AzRoleAssignment -ApplicationId <service principal application ID> -RoleDefinitionName 'Reader'
Remove-AzRoleAssignment -ObjectId <service principal object ID> -RoleDefinitionName 'Contributor'
Important
Les applets de commande d’attribution de rôle ne prennent pas l’ID d’objet du principal de service. Ils prennent l’ID d’application associé, qui est généré au moment de la création. Pour obtenir l’ID d’application d’un principal de service, utilisez Get-AzADServicePrincipal.
Note
Si votre compte n’a pas l’autorisation d’attribuer un rôle, vous voyez un message d’erreur indiquant que votre compte « n’a pas l’autorisation d’effectuer l’action « Microsoft.Authorization/roleAssignments/write ». Contactez votre administrateur Microsoft Entra pour gérer les rôles.
L’ajout d’un rôle ne limite pas les autorisations précédemment affectées. Lors de la restriction des autorisations d’un principal de service, le rôle Contributeur doit être supprimé.
Les modifications peuvent être vérifiées en répertoriant les rôles attribués :
Get-AzRoleAssignment -ServicePrincipalName ServicePrincipalName
Se connecter à l’aide d’un principal de service
Testez les informations d’identification et les autorisations du nouveau principal de service en vous connectant. Pour vous connecter avec un principal de service, vous avez besoin de la applicationId valeur associée à celle-ci et du locataire sous lequel il est créé.
Pour vous connecter avec un principal de service à l’aide d’un mot de passe :
# Use the application ID as the username, and the secret as password
$credentials = Get-Credential
Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant <tenant ID>
L’authentification basée sur des certificats nécessite qu’Azure PowerShell puisse récupérer des informations à partir d’un magasin de certificats local en fonction d’une empreinte numérique de certificat.
Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId>
Pour obtenir des instructions sur l’importation d’un certificat dans un magasin d’informations d’identification accessible par PowerShell, consultez l’authentification basée sur un certificat
Réinitialiser les informations d’identification
Si vous oubliez les informations d’identification d’un principal de service, utilisez New-AzADSpCredential pour ajouter de nouvelles informations d’identification avec un mot de passe aléatoire. Cette applet de commande ne prend pas en charge les informations d’identification définies par l’utilisateur lors de la réinitialisation du mot de passe.
Important
Avant d’attribuer de nouvelles informations d’identification, vous pouvez supprimer les informations d’identification existantes pour empêcher leur connexion. Pour ce faire, utilisez l’applet de commande Remove-AzADSpCredential :
Remove-AzADSpCredential -DisplayName ServicePrincipalName
$newCredential = New-AzADSpCredential -ServicePrincipalName ServicePrincipalName
Résolution des problèmes
Si vous recevez l’erreur : « New-AzADServicePrincipal : Un autre objet avec la même valeur pour l’identificateur de propriétéUris existe déjà ». Vérifiez qu’un principal de service portant le même nom n’existe pas déjà.
Get-AzAdServicePrincipal -DisplayName ServicePrincipalName
Si le principal de service existant n’est plus nécessaire, vous pouvez le supprimer à l’aide de l’exemple suivant.
Remove-AzAdServicePrincipal -DisplayName ServicePrincipalName
Cette erreur peut également se produire lorsque vous avez créé un principal de service pour une application Azure Active Directory. Si vous supprimez le principal de service, l’application est toujours disponible. Cette application vous empêche de créer un autre principal de service portant le même nom.
Vous pouvez utiliser l’exemple suivant pour vérifier qu’une application Microsoft Entra portant le même nom n’existe pas :
Get-AzADApplication -DisplayName ServicePrincipalName
Si une application portant le même nom existe et n’est plus nécessaire, elle peut être supprimée à l’aide de l’exemple suivant.
Remove-AzADApplication -DisplayName ServicePrincipalName
Sinon, choisissez un autre nom pour le nouveau principal de service que vous tentez de créer.