Configurer une application pour faire confiance à un fournisseur d’identité externe
Cet article explique comment gérer des informations d’identification d’identité fédérée sur une application dans Microsoft Entra ID. Les informations d’identification d’identité fédérée créent une relation d’approbation entre une application et un fournisseur d’identité externe (IdP).
Vous pouvez alors configurer une charge de travail logicielle externe afin d’échanger un jeton délivré par le fournisseur d’identité externe contre un jeton d’accès délivré par la plateforme d’identités Microsoft. La charge de travail externe peut accéder aux ressources Microsoft Entra protégées sans avoir à gérer de secrets (dans les scénarios pris en charge). Pour en savoir plus sur le workflow d’échange de jetons, consultez l’article sur la fédération des identités de charge de travail.
Dans cet article, vous apprendrez à créer, lister et supprimer des identifiants d'identité fédérée sur une application dans Microsoft Entra ID.
Considérations importantes et restrictions
Pour créer, mettre à jour ou supprimer les informations d’identification d’une identité fédérée, le compte effectuant l’action doit disposer du rôle Administrateur d’application, Développeur d’applications, Administrateur d’application cloud ou Propriétaire d’application. L’autorisation microsoft.directory/applications/credentials/update est requise pour mettre à jour les informations d’identification d’une identité fédérée.
Un maximum de 20 informations d’identification d’identité fédérées peuvent être ajoutées à une application ou à une identité managée affectée par l’utilisateur.
Quand vous configurez des informations d’identification d’identité fédérées, vous devez fournir plusieurs éléments d’information importants :
issuer et subject sont les éléments clés nécessaires à la configuration de la relation d’approbation. La combinaison de
issuer
etsubject
doit être unique sur l’application. Lorsque la charge de travail logicielle externe demande à la plateforme d’identités Microsoft d’échanger le jeton externe contre un jeton d’accès, les valeurs issuer et subject des informations d’identification de l’identité fédérée sont vérifiées par rapport aux revendicationsissuer
etsubject
fournies dans le jeton externe. Si ce contrôle de validation réussit, la plateforme d’identités Microsoft délivre un jeton d’accès à la charge de travail logicielle externe.issuer est l’URL du fournisseur d’identité externe, qui doit correspondre à la revendication
issuer
du jeton externe échangé. Obligatoire. Si la valeur de la revendicationissuer
a des espaces blancs de début ou de fin, l’échange de jetons est bloqué. Ce champ est limité à 600 caractères.subject est l’identificateur de la charge de travail logicielle externe, qui doit correspondre à la revendication
sub
(subject
) du jeton externe échangé. subject n’a pas de format fixe, car chaque fournisseur d’identité utilise son propre sujet (parfois un GUID, parfois un identificateur délimité par des points-virgules, parfois des chaînes arbitraires). Ce champ est limité à 600 caractères.Important
Le paramètre subject doit correspondre exactement à la configuration du flux de travail GitHub. Dans le cas contraire, la Plateforme d’identités Microsoft examine le jeton externe entrant et rejette l’échange contre un jeton d’accès. Vous n’obtenez pas d’erreur : l’échange échoue sans erreur.
Important
Si vous ajoutez accidentellement des informations de charge de travail externe incorrectes dans le paramètre subject, les informations d’identification de l’identité fédérée sont correctement créées sans erreur. L’erreur ne se manifeste que lorsque l’échange de jetons échoue.
audiences liste les audiences qui peuvent apparaître dans le jeton externe. Obligatoire. Vous devez ajouter une valeur d’audience unique, qui a une limite de 600 caractères. La valeur recommandée est « api://AzureADTokenExchange ». Il indique ce que la plateforme d’identités Microsoft doit accepter dans la revendication
aud
dans le jeton entrant.name est l’identificateur unique des informations d’identification d’identité fédérée. Obligatoire. Ce champ a une limite de 3-120 caractères et doit être compatible avec les URL. Les caractères alphanumériques, les tirets et les traits de soulignement sont pris en charge ; le premier caractère peut être seulement un caractère alphanumérique. Il est immuable une fois créé.
description est la description fournie par l’utilisateur des informations d’identification de l’identité fédérée. facultatif. La description n’est pas validée ou vérifiée par Microsoft Entra ID. Ce champ est limité à 600 caractères.
Les caractères génériques ne sont pris en charge dans aucune des valeurs de propriété d’informations d’identification d’identité fédérées.
Pour en savoir plus sur les régions prises en charge, sur le délai de propagation des mises à jour des informations d’identification fédérées, sur les émetteurs pris en charge et sur d’autres aspects, lisez Considérations et restrictions importantes pour les informations d’identification d’identité fédérées.
Prérequis
Créez une inscription d’application dans Microsoft Entra ID. Accordez à votre application l’accès aux ressources Azure ciblées par votre charge de travail logicielle externe.
Recherchez l’ID d’objet de l’application (et non l’ID de l’application (client)) dont vous aurez besoin lors des étapes suivantes. Vous trouverez l’ID d’objet de l’application dans le centre d’administration Microsoft Entra. Accédez à la liste des inscriptions d’applications, puis sélectionnez l’inscription de votre application. Dans Vue d’ensemble->Services essentiels, recherchez l’ID d’objet.
Procurez-vous les informations subject et issuer pour votre fournisseur d’identité et votre charge de travail logicielle externe, dont vous aurez besoin lors des étapes suivantes.
Configuration des informations d’identification d’une identité fédérée sur une application
GitHub Actions
Pour ajouter une identité fédérée pour les actions GitHub, suivez ces étapes :
Recherchez l’inscription de votre application dans l’expérience d’inscriptions des applications du centre d’administration Microsoft Entra. Sélectionnez Certificats et secrets dans le volet de navigation de gauche, sélectionnez l’onglet Informations d’identification fédérées, puis sélectionnez Ajouter des informations d’identification.
Dans la zone déroulante Scénario Informations d’identification fédérées, sélectionnez Actions GitHub de déploiement de ressources Azure.
Spécifiez l’Organisation et le Référentiel de votre flux de travail GitHub Actions.
Pour Type d’entité, sélectionnez Environnement, Branche, Demande de tirage (pull request) ou Étiquette et spécifiez la valeur. Les valeurs doivent correspondre exactement à la configuration du workflow GitHub. La correspondance de modèle n’est pas prise en charge pour les branches et les étiquettes. Spécifiez un environnement si votre flux de travail on-push s’exécute sur de nombreuses branches ou étiquettes. Pour plus d’informations, consultez les exemples.
Donnez un Nom aux informations d’identification fédérées.
Les champs Émetteur, Audiences et Identificateur de l’objet sont remplis automatiquement à partir des valeurs entrées.
Sélectionnez Ajouter pour configurer les informations d’identification fédérées.
Utilisez les valeurs suivantes de l’inscription de votre application Microsoft Entra pour votre workflow GitHub :
AZURE_CLIENT_ID
ID d’application (client)AZURE_TENANT_ID
ID d’annuaire (locataire)La capture d’écran suivante montre comment copier l’ID d’application et l’ID de locataire.
AZURE_SUBSCRIPTION_ID
Votre ID d’abonnement. Pour obtenir l’ID d’abonnement, ouvrez Abonnements sur le portail Azure et recherchez votre abonnement. Copiez ensuite l’ID d’abonnement.
Exemples de types d’entité
Exemple de branche
Pour un workflow déclenché par un événement push ou une requête de tirage sur la branche principale :
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Spécifiez le Type d’entitéBranche et le Nom de branche GitHub « main ».
Exemple d’environnement
Pour les travaux liés à un environnement nommé « production » :
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Spécifiez le Type d’entitéEnvironnement et le Nom d’environnement GitHub « production ».
Exemple de balise
Par exemple, pour un workflow déclenché par une notification push sur la balise nommée « v2 » :
on:
push:
# Sequence of patterns matched against refs/heads
branches:
- main
- 'mona/octocat'
- 'releases/**'
# Sequence of patterns matched against refs/tags
tags:
- v2
- v1.*
Spécifiez le Type d’entitéBalise et le Nom de balise GitHub « v2 ».
Exemple de requête de tirage
Pour un workflow déclenché par un événement de demande de tirage (pull request), spécifiez le Type d’entitéRequête de tirage.
Kubernetes
Recherchez l’inscription de votre application dans l’expérience d’inscriptions des applications du centre d’administration Microsoft Entra. Sélectionnez Certificats et secrets dans le volet de navigation de gauche, sélectionnez l’onglet Informations d’identification fédérées, puis sélectionnez Ajouter des informations d’identification.
Sélectionnez le scénario Kubernetes accédant aux ressources Azure dans le menu déroulant.
Renseignez les champs URL de l’émetteur du cluster, Espace de noms, Nom du compte de serviceet Nom :
- L’URL de l’émetteur du cluster est l’URL de l’émetteur OIDC pour le cluster géré ou l’URL de l'émetteur OIDC pour un cluster autogéré.
- Nom du compte de service est le nom du compte de service Kubernetes, qui fournit une identité pour les processus qui s’exécutent dans une pod.
- L' espace de noms est l’espace de noms du compte de service.
- Name est le nom des informations d’identification fédérées, qui ne peuvent pas être changées ultérieurement.
Autres fournisseurs d’identité
Recherchez l’inscription de votre application dans l’expérience d’inscriptions des applications du centre d’administration Microsoft Entra. Sélectionnez Certificats et secrets dans le volet de navigation de gauche, sélectionnez l’onglet Informations d’identification fédérées, puis sélectionnez Ajouter des informations d’identification.
Sélectionnez le scénario Autre émetteur dans le menu déroulant.
Spécifiez les champs suivants (à l’aide d’une charge de travail logicielle s’exécutant dans Google Cloud à titre d’exemple) :
- Name est le nom des informations d’identification fédérées, qui ne peuvent pas être changées ultérieurement.
- Identificateur de sujet : doit correspondre à la revendication
sub
dans le jeton émis par le fournisseur d’identité externe. Dans cet exemple utilisant Google Cloud, Sujet est l’ID unique du compte de service que vous prévoyez d’utiliser. - Émetteur : doit correspondre à la revendication
iss
dans le jeton émis par le fournisseur d’identité externe. URL conforme à la spécification de découverte OIDC. Microsoft Entra ID utilise cette URL d’émetteur pour récupérer les clés nécessaires à la validation du jeton. Pour Google Cloud, l’émetteur est « https://accounts.google.com".
Affichage de la liste des informations d’identification des identités fédérées sur une application
Recherchez l’inscription de votre application dans l’expérience d’inscriptions des applications du centre d’administration Microsoft Entra. Sélectionnez Certificats et secrets dans le volet de navigation gauche et sélectionnez l’onglet Informations d’identification fédérées. Les informations d’identification fédérées qui sont configurées sur votre application sont répertoriées.
Supprimer les informations d’identification d’une identité fédérée d’une application
Recherchez l’inscription de votre application dans l’expérience d’inscriptions des applications du centre d’administration Microsoft Entra. Sélectionnez Certificats et secrets dans le volet de navigation gauche et sélectionnez l’onglet Informations d’identification fédérées. Les informations d’identification fédérées qui sont configurées sur votre application sont répertoriées.
Pour supprimer les informations d’identification d’une identité fédérée, sélectionnez l’icône Supprimer pour les informations d’identification.
Prérequis
- Si vous n’avez pas encore de compte Azure, inscrivez-vous à un compte gratuit avant de continuer.
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Créez une inscription d’application dans Microsoft Entra ID. Accordez à votre application l’accès aux ressources Azure ciblées par votre charge de travail logicielle externe.
- Recherchez l’ID d’objet, l’ID d’application (client) ou l’URI d’identificateur de l’application, dont vous aurez besoin dans les étapes suivantes. Vous trouverez ces valeurs dans le centre d’administration Microsoft Entra. Accédez à la liste des applications inscrites, puis sélectionnez l’inscription de votre application. Dans Vue d’ensemble->Fonctionnalités essentielles, récupérez l’ID d’objet, l’ID d’application (client) ou la valeur URI de l’ID d’application, dont vous aurez besoin dans les étapes suivantes.
- Procurez-vous les informations subject et issuer pour votre fournisseur d’identité et votre charge de travail logicielle externe, dont vous aurez besoin lors des étapes suivantes.
Configuration des informations d’identification d’une identité fédérée sur une application
Exécutez la commande az ad app federated-credential create pour créer des informations d’identification d’identité fédérée sur votre application.
Le paramètre id
spécifie l’URI d’identificateur, l’ID d’application ou l’ID d’objet de l’application. Le paramètre parameters
spécifie les paramètres, au format JSON, pour créer les informations d’identification de l’identité fédérée.
Exemple GitHub Actions
name spécifie le nom des informations d’identification de l’identité fédérée.
issuer identifie le chemin du fournisseur GitHub OIDC : https://token.actions.githubusercontent.com/
. Cet émetteur sera approuvé par votre application Azure.
subject identifie l’organisation, le dépôt et l’environnement GitHub pour votre workflow GitHub Actions. Quand le workflow GitHub Actions demande à la plateforme d’identités Microsoft d’échanger un jeton GitHub contre un jeton d’accès, les valeurs des informations d’identification de l’identité fédérée sont comparées au jeton GitHub fourni. La demande doit correspondre aux conditions définies ici pour qu’Azure accorde un jeton d’accès.
- Pour les travaux liés à un environnement :
repo:< Organization/Repository >:environment:< Name >
. - Pour les travaux non liés à un environnement, incluez le chemin de référence de la branche ou de l’étiquette en fonction de celui utilisé pour déclencher le flux de travail (
repo:< Organization/Repository >:ref:< ref path>
). Par exemple,repo:n-username/ node_express:ref:refs/heads/my-branch
ourepo:n-username/ node_express:ref:refs/tags/my-tag
. - Pour les flux de travail déclenchés par un événement de demande de tirage (pull request) :
repo:< Organization/Repository >:pull-request
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Testing",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:octo-org/octo-repo:environment:Production",
"description": "Testing",
"audiences": [
"api://AzureADTokenExchange"
]
}
Exemple Kubernetes
L’émetteur est l’URL de l’émetteur de votre compte de service (URL de l’émetteur OIDC pour le cluster géré ou l’URL de l' émetteur OIDC pour un cluster autogéré).
sujet est le nom du sujet dans les jetons émis au compte de service. Kubernetes utilise le format suivant pour les noms de sujet : system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
.
name est le nom des informations d’identification fédérées, qui ne peuvent pas être changées ultérieurement.
audiences liste les audiences qui peuvent apparaître dans le jeton externe. Ce champ est obligatoire. La valeur recommandée est « api://AzureADTokenExchange ».
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Kubernetes-federated-credential",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa",
"description": "Kubernetes service account federated credential",
"audiences": [
"api://AzureADTokenExchange"
]
}
Exemple d’autres fournisseurs d’identité
Vous pouvez configurer les informations d’identification de l’identité fédérée sur une application et créer une relation d’approbation avec d’autres fournisseurs d’identité externes. L’exemple suivant utilise une charge de travail logicielle s’exécutant dans Google Cloud :
name est le nom des informations d’identification fédérées, qui ne peuvent pas être changées ultérieurement.
id : ID d’objet, ID d’application (client) ou URI d’identificateur de l’application.
sujet : doit correspondre à la revendication sub
dans le jeton émis par le fournisseur d’identité externe. Dans cet exemple utilisant Google Cloud, Sujet est l’ID unique du compte de service que vous prévoyez d’utiliser.
Émetteur : doit correspondre à la revendication iss
dans le jeton émis par le fournisseur d’identité externe. URL conforme à la spécification de découverte OIDC. Microsoft Entra ID utilise cette URL d’émetteur pour récupérer les clés nécessaires à la validation du jeton. Pour Google Cloud, l’émetteur est « https://accounts.google.com".
audiences : liste les audiences qui peuvent apparaître dans le jeton externe. Ce champ est obligatoire. La valeur recommandée est « api://AzureADTokenExchange ».
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "GcpFederation",
"issuer": "https://accounts.google.com",
"subject": "112633961854638529490",
"description": "Test GCP federation",
"audiences": [
"api://AzureADTokenExchange"
]
}
Affichage de la liste des informations d’identification des identités fédérées sur une application
Exécutez la commande az ad app federated-credential list pour lister les informations d’identification de l’identité fédérée sur votre application.
Le paramètre id spécifie l’URI d’identificateur, l’ID d’application ou l’ID d’objet de l’application.
az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444
Récupérer les informations d’identification d’une identité fédérée sur une application
Exécutez la commande az ad app federated-credential show pour afficher les informations d’identification d’une identité fédérée sur votre application.
Le paramètre id spécifie l’URI d’identificateur, l’ID d’application ou l’ID d’objet de l’application.
federated-credential-id spécifie l’ID ou le nom des informations d’identification de l’identité fédérée.
az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Supprimer les informations d’identification d’une identité fédérée d’une application
Exécutez la commande az ad app federated-credential delete pour supprimer les informations d’identification d’une identité fédérée de votre application.
Le paramètre id spécifie l’URI d’identificateur, l’ID d’application ou l’ID d’objet de l’application.
federated-credential-id spécifie l’ID ou le nom des informations d’identification de l’identité fédérée.
az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Prérequis
- Pour exécuter les exemples de scripts, vous avez deux options :
- Utiliser Azure Cloud Shell, que vous pouvez ouvrir en utilisant le bouton Essayer dans le coin supérieur droit des blocs de code.
- Exécutez les scripts localement avec Azure PowerShell, comme décrit dans la section suivante.
- Créez une inscription d’application dans Microsoft Entra ID. Accordez à votre application l’accès aux ressources Azure ciblées par votre charge de travail logicielle externe.
- Recherchez l’ID d’objet de l’application (et non l’ID de l’application (client)) dont vous aurez besoin lors des étapes suivantes. Vous trouverez l’ID d’objet de l’application dans le centre d’administration Microsoft Entra. Accédez à la liste des applications inscrites, puis sélectionnez l’inscription de votre application. Dans Vue d’ensemble->Services essentiels, recherchez l’ID d’objet.
- Procurez-vous les informations subject et issuer pour votre fournisseur d’identité et votre charge de travail logicielle externe, dont vous aurez besoin lors des étapes suivantes.
Configurer Azure PowerShell localement
Pour utiliser Azure PowerShell localement dans cet article au lieu d’utiliser Cloud Shell :
Installez la dernière version d’Azure PowerShell si ce n’est déjà fait.
Connectez-vous à Azure.
Connect-AzAccount
Installez la dernière version de PowerShellGet.
Install-Module -Name PowerShellGet -AllowPrerelease
Vous devrez peut-être quitter (
Exit
) la session PowerShell en cours après avoir exécuté cette commande, pour l’étape suivante.Installez la préversion du module
Az.Resources
afin d’effectuer les opérations d’informations d’identification d’identité fédérée dans cet article.Install-Module -Name Az.Resources -AllowPrerelease
Configuration des informations d’identification d’une identité fédérée sur une application
Exécutez l’applet de commande New-AzADAppFederatedCredential pour créer des informations d’identification d’identité fédérée sur une application.
Exemple GitHub Actions
- ApplicationObjectId : ID d’objet de l’application (et non de l’ID de l’application (cliente)) que vous avez enregistré dans Microsoft Entra ID.
- Issuer identifie GitHub comme l’émetteur du jeton externe.
- Subject indique l’organisation, le dépôt et l’environnement GitHub de votre flux de travail GitHub Actions. Quand le workflow GitHub Actions demande à la plateforme d’identités Microsoft d’échanger un jeton GitHub contre un jeton d’accès, les valeurs des informations d’identification de l’identité fédérée sont comparées au jeton GitHub fourni.
- Pour les travaux liés à un environnement :
repo:< Organization/Repository >:environment:< Name >
. - Pour les travaux non liés à un environnement, incluez le chemin de référence de la branche ou de l’étiquette en fonction de celui utilisé pour déclencher le flux de travail (
repo:< Organization/Repository >:ref:< ref path>
). Par exemple,repo:n-username/ node_express:ref:refs/heads/my-branch
ourepo:n-username/ node_express:ref:refs/tags/my-tag
. - Pour les flux de travail déclenchés par un événement de demande de tirage (pull request) :
repo:< Organization/Repository >:pull-request
.
- Pour les travaux liés à un environnement :
- Name est le nom des informations d’identification fédérées, qui ne peuvent pas être changées ultérieurement.
- Audience liste les audiences qui peuvent apparaître dans le jeton externe. Ce champ est obligatoire. La valeur recommandée est « api://AzureADTokenExchange ».
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://token.actions.githubusercontent.com/' -Name 'GitHub-Actions-Test' -Subject 'repo:octo-org/octo-repo:environment:Production'
Exemple Kubernetes
- ApplicationObjectId : ID d’objet de l’application (et non de l’ID de l’application (cliente)) que vous avez enregistré dans Microsoft Entra ID.
- Issuer est l’URL de l’émetteur de votre compte de service (URL de l’émetteur OIDC pour le cluster géré ou l’URL de l’émetteur OIDC pour un cluster autogéré).
- Subject est le nom du sujet dans les jetons émis au compte de service. Kubernetes utilise le format suivant pour les noms de sujet :
system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. - Name est le nom des informations d’identification fédérées, qui ne peuvent pas être changées ultérieurement.
- Audience liste les audiences qui peuvent apparaître dans la revendication
aud
du jeton externe.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/' -Name 'Kubernetes-federated-credential' -Subject 'system:serviceaccount:erp8asle:pod-identity-sa'
Exemple d’autres fournisseurs d’identité
Spécifiez les paramètres suivants (à l’aide d’une charge de travail logicielle s’exécutant dans Google Cloud à titre d’exemple) :
- ObjectID : ID d’objet de l’application (et non de l’ID de l’application (cliente)) que vous avez enregistré dans Microsoft Entra ID.
- Name est le nom des informations d’identification fédérées, qui ne peuvent pas être changées ultérieurement.
- Subject : doit correspondre à la revendication
sub
dans le jeton émis par le fournisseur d’identité externe. Dans cet exemple utilisant Google Cloud, Sujet est l’ID unique du compte de service que vous prévoyez d’utiliser. - Émetteur : doit correspondre à la revendication
iss
dans le jeton émis par le fournisseur d’identité externe. URL conforme à la spécification de découverte OIDC. Microsoft Entra ID utilise cette URL d’émetteur pour récupérer les clés nécessaires à la validation du jeton. Pour Google Cloud, l’émetteur est « https://accounts.google.com". - Audiences : doit correspondre à la revendication
aud
dans le jeton externe. Pour des raisons de sécurité, vous devez choisir une valeur unique pour les jetons destinés à Microsoft Entra ID. La valeur recommandée est « api://AzureADTokenExchange ».
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'
Affichage de la liste des informations d’identification des identités fédérées sur une application
Exécutez l’applet de commande Get-AzADAppFederatedCredential pour lister les informations d’identification d’identité fédérée pour une application.
Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential
Récupérer les informations d’identification d’une identité fédérée sur une application
Exécutez l’applet de commande Get-AzADAppFederatedCredential pour obtenir les informations d’identification d’identité fédérée par ID à partir d’une application.
Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Supprimer les informations d’identification d’une identité fédérée d’une application
Exécutez l’applet de commande Remove-AzADAppFederatedCredential pour supprimer les informations d’identification d’une identité fédérée d’une application.
Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Prérequis
Créez une inscription d’application dans Microsoft Entra ID. Accordez à votre application l’accès aux ressources Azure ciblées par votre charge de travail logicielle externe.
Recherchez l’ID d’objet de l’application (et non l’ID de l’application (client)) dont vous aurez besoin lors des étapes suivantes. Vous trouverez l’ID d’objet de l’application dans le centre d’administration Microsoft Entra. Accédez à la liste des applications inscrites, puis sélectionnez l’inscription de votre application. Dans Vue d’ensemble->Services essentiels, recherchez l’ID d’objet.
Procurez-vous les informations subject et issuer pour votre fournisseur d’identité et votre charge de travail logicielle externe, dont vous aurez besoin lors des étapes suivantes.
Le point de terminaison Microsoft Graph (https://graph.microsoft.com
) expose les API REST pour créer, mettre à jour et supprimer federatedIdentityCredentials dans les applications. Lancez Azure Cloud Shell et connectez-vous à votre locataire pour exécuter des commandes Microsoft Graph à partir de la commande AZ CLI.
Configuration des informations d’identification d’une identité fédérée sur une application
GitHub Actions
Exécutez la méthode suivante pour créer les informations d’identification d’une nouvelle identité fédérée sur votre application (spécifiée par son ID objet). issuer identifie GitHub comme émetteur de jeton externe. subject identifie l’organisation, le dépôt et l’environnement GitHub pour votre workflow GitHub Actions. Quand le workflow GitHub Actions demande à la plateforme d’identités Microsoft d’échanger un jeton GitHub contre un jeton d’accès, les valeurs des informations d’identification de l’identité fédérée sont comparées au jeton GitHub fourni.
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Testing","issuer":"https://token.actions.githubusercontent.com","subject":"repo:octo-org/octo-repo:environment:Production","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
Vous recevez la réponse suivante :
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
name : nom de votre application Azure.
issuer : chemin du fournisseur GitHub OIDC (https://token.actions.githubusercontent.com
). Cet émetteur sera approuvé par votre application Azure.
subject : la demande doit correspondre aux conditions définies ici pour qu’Azure accorde un jeton d’accès.
- Pour les travaux liés à un environnement :
repo:< Organization/Repository >:environment:< Name >
. - Pour les travaux non liés à un environnement, incluez le chemin de référence de la branche ou de l’étiquette en fonction de celui utilisé pour déclencher le flux de travail (
repo:< Organization/Repository >:ref:< ref path>
). Par exemple,repo:n-username/ node_express:ref:refs/heads/my-branch
ourepo:n-username/ node_express:ref:refs/tags/my-tag
. - Pour les flux de travail déclenchés par un événement de demande de tirage (pull request) :
repo:< Organization/Repository >:pull-request
.
audiences liste les audiences qui peuvent apparaître dans le jeton externe. Ce champ est obligatoire. La valeur recommandée est « api://AzureADTokenExchange ».
Exemple Kubernetes
Exécutez la méthode suivante pour configurer les informations d’identification de l’identité fédérée sur une application et créer une relation d’approbation avec un compte de service Kubernetes. Spécifiez les paramètres suivants :
- L’émetteur est l’URL de l’émetteur de votre compte de service (URL de l’émetteur OIDC pour le cluster géré ou l’URL de l' émetteur OIDC pour un cluster autogéré).
- sujet est le nom du sujet dans les jetons émis au compte de service. Kubernetes utilise le format suivant pour les noms de sujet :
system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. - name est le nom des informations d’identification fédérées, qui ne peuvent pas être changées ultérieurement.
- audiences liste les audiences qui peuvent apparaître dans le jeton externe. Ce champ est obligatoire. La valeur recommandée est « api://AzureADTokenExchange ».
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/","subject":"system:serviceaccount:erp8asle:pod-identity-sa","description":"Kubernetes service account federated credential","audiences":["api://AzureADTokenExchange"]}'
Vous recevez la réponse suivante :
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Kubernetes service account federated credential",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"name": "Kubernetes-federated-credential",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa"
}
Exemple d’autres fournisseurs d’identité
Exécutez la méthode suivante pour configurer les informations d’identification de l’identité fédérée sur une application et créer une relation d’approbation avec un fournisseur d’identité externe. Spécifiez les paramètres suivants (à l’aide d’une charge de travail logicielle s’exécutant dans Google Cloud à titre d’exemple) :
- name est le nom des informations d’identification fédérées, qui ne peuvent pas être changées ultérieurement.
- ObjectID : ID d’objet de l’application (et non de l’ID de l’application (cliente)) que vous avez enregistré dans Microsoft Entra ID.
- sujet : doit correspondre à la revendication
sub
dans le jeton émis par le fournisseur d’identité externe. Dans cet exemple utilisant Google Cloud, Sujet est l’ID unique du compte de service que vous prévoyez d’utiliser. - Émetteur : doit correspondre à la revendication
iss
dans le jeton émis par le fournisseur d’identité externe. URL conforme à la spécification de découverte OIDC. Microsoft Entra ID utilise cette URL d’émetteur pour récupérer les clés nécessaires à la validation du jeton. Pour Google Cloud, l’émetteur est « https://accounts.google.com". - audiences liste les audiences qui peuvent apparaître dans le jeton externe. Ce champ est obligatoire. La valeur recommandée est « api://AzureADTokenExchange ».
az rest --method POST --uri 'https://graph.microsoft.com/applications/<ObjectID>/federatedIdentityCredentials' --body '{"name":"GcpFederation","issuer":"https://accounts.google.com","subject":"112633961854638529490","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
Et vous recevez la réponse :
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://accounts.google.com"",
"name": "GcpFederation",
"subject": "112633961854638529490"
}
Lister les informations d’identification d’identité fédérée sur une application
Exécutez la méthode suivante pour lister les informations d’identification de la ou des identités fédérées d’une application (spécifiée par son ID objet) :
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'
Et vous recevez une réponse semblable à la suivante :
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": [
{
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
]
}
Récupérer les informations d’identification d’une identité fédérée sur une application
Exécutez la méthode suivante pour obtenir les informations d’identification d’une identité fédérée d’une application (spécifiée par son ID objet) :
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Et vous recevez une réponse semblable à la suivante :
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": {
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials('00001111-aaaa-2222-bbbb-3333cccc4444')/00001111-aaaa-2222-bbbb-3333cccc4444",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
}
Supprimer les informations d’identification d’une identité fédérée d’une application
Exécutez la méthode suivante pour supprimer les informations d’identification d’une identité fédérée d’une application (spécifiée par son ID objet) :
az rest -m DELETE -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Étapes suivantes
- Pour savoir comment utiliser la fédération d’identités de charge de travail pour Kubernetes, consultez Identité de charge de travail Microsoft Entra ID pour un projet Kubernetes open source.
- Pour savoir comment utiliser la fédération d’identités de charge de travail pour GitHub Actions, consultez Configurer un workflow d’actions GitHub pour obtenir un jeton d’accès.
- Lisez la documentation de GitHub Actions pour en savoir plus sur la configuration de votre workflow GitHub Actions afin d’obtenir un jeton d’accès auprès du fournisseur d’identité Microsoft et d’accéder à des ressources Azure.
- Pour plus d’informations, découvrez comment Microsoft Entra ID utilise l’octroi d’informations d’identification du client OAuth 2.0 et une assertion du client émise par un autre fournisseur d’identité pour obtenir un jeton.
- Pour des informations sur le format requis des jetons JWT créés par des fournisseurs d’identité externes, lisez l’article sur le format d’assertion.