Configurer une application pour approuver 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 identifiants fédérés créent une relation de confiance 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 protégées de Microsoft Entra sans avoir à gérer les secrets (dans les scénarios pris en charge). Pour plus d’informations sur le flux de travail d’échange de jetons, consultez Fédération des identités de charge de travail.
Dans cet article, vous allez apprendre à créer, répertorier et supprimer des informations d’identification d’identité fédérées sur une application dans l’ID Microsoft Entra.
Considérations et restrictions importantes
Pour créer, mettre à jour ou supprimer des informations d’identification d’identité fédérée, le compte effectuant l’action doit être le propriétaire de l’application ou avoir l’un des rôles Entra suivants : Administrateur d’application, Administrateur d’application cloud, Administrateur généralou Administrateur d’identité hybride. L’autorisation microsoft.directory/applications/credentials/update est nécessaire pour mettre à jour des informations d’identification d’identité fédérée.
Un maximum de 20 informations d’identification d’identité fédérée peuvent être ajoutées à une application ou à une identité managée affectée par l’utilisateur.
Lorsque vous configurez des informations d’identification d’identité fédérée, il existe plusieurs informations importantes à fournir :
issuer et sujet sont les éléments clés nécessaires à la configuration de la relation de confiance. La combinaison de
issuer
et desubject
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 cette vérification de validation réussit, la plateforme d’identités Microsoft émet 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 revendicationissuer
a un espace blanc de début ou de fin dans la valeur, 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 créées avec succès, sans erreur. L’erreur n’apparaît pas tant que l’échange de jetons n’a pas échoué.
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. Optionnel. La description n’est pas validée ou vérifiée par l’ID Microsoft Entra. Ce champ a une limite de 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ée.
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.
Conditions préalables
- Créez une inscription d’application ou une identité managée 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 avez besoin dans les é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 et sélectionnez votre inscription d’application. Dans Vue d’ensemble, vous trouverez 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 des informations d’identification d’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 & secrets dans le volet de navigation 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 votre enregistrement d'application Microsoft Entra pour votre flux de travail 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.
Exemples de types d’entité
Exemple de branche
Pour un workflow déclenché par un événement de push ou une pull request 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 & secrets dans le volet de navigation 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.
- Namespace 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 & secrets dans le volet de navigation 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 déclaration
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 esthttps://accounts.google.com
.
Répertorier les informations d’identification d’identité fédérée 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 & secrets dans le volet de navigation gauche, puis sélectionnez l’onglet informations d’identification fédérées. Les informations d’identification fédérées configurées sur votre application sont répertoriées.
Supprimer des informations d’identification d’identité fédérées 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 & secrets dans le volet de navigation gauche, puis sélectionnez l’onglet informations d’identification fédérées. Les informations d’identification fédérées 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.
Configurer des informations d’identification fédérées flexibles (préversion)
- Accédez à Microsoft Entra ID et sélectionnez l’application dans laquelle vous souhaitez configurer les informations d’identification de l’identité fédérée.
- Dans le menu de navigation de gauche, sélectionnez Certificats et secrets.
- Sous l’onglet informations d’identification fédérées, sélectionnez + Ajouter des informations d’identification.
- Dans la fenêtre Ajouter des informations d’identification qui s’affiche, dans le menu déroulant à côté du scénario d’informations d’identification fédérées, sélectionnez Autre émetteur.
- Dans valeur entrez l’expression correspondante de revendication que vous souhaitez utiliser.
Conditions préalables
- 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 de Bash dans Azure Cloud Shell.
Si vous préférez exécuter des commandes de référence CLI localement, installez l'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 Comment 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 terminer le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour d'autres options de connexion, consultez Connectez-vous 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 version az 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éer un enregistrement 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 avez besoin dans les étapes suivantes. Vous trouverez ces valeurs dans le centre d’administration Microsoft Entra. Accédez à la liste des applications inscrites et sélectionnez votre inscription d’application. Dans Vue d’ensemble->Essentials, obtenez l’ID d’objet , l’ID d’application (client) ou valeur d’URI d’ID d’application dont vous avez 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.
Configurer des informations d’identification d’identité fédérée sur une application
Exécutez la commande az ad app federated-credential create pour créer un identifiant d’identité fédérée dans 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 de GitHub Actions
name spécifie le nom des informations d’identification de l’identité fédérée.
L'émetteur identifie le chemin d’accès au fournisseur GitHub OIDC : https://token.actions.githubusercontent.com/
. Cet émetteur devient approuvé par votre application Azure.
Le sujet identifie l’organisation, le dépôt et l’environnement GitHub pour votre flux de travail GitHub Actions. Lorsque le flux de travail GitHub Actions demande à la plateforme d’identités Microsoft d’échanger un jeton GitHub pour un jeton d’accès, les valeurs des informations d’identification de l’identité fédérée sont vérifiées par rapport au jeton GitHub fourni. Avant d’accorder un jeton d’accès, la demande doit correspondre aux conditions définies ici.
- Pour les travaux liés à un environnement :
repo:< Organization/Repository >:environment:< Name >
- Pour les tâches non liées à un environnement, incluez le chemin de référence (ref path) de la branche/étiquette en fonction du chemin de référence utilisé pour déclencher le workflow :
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 workflows déclenchés par un événement de 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 (l’URL de l’émetteur OIDC pour le cluster managé ou l’URL de l’émetteur OIDC pour un cluster auto-géré).
Le sujet est le nom du sujet dans les jetons émis au compte de service. Kubernetes utilise le format suivant pour les noms d’objet : system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
.
Le nom est le nom des informations d’identification fédérées, qui ne peuvent pas être modifiées ultérieurement.
Les audiences listent les audiences qui peuvent apparaître dans le jeton externe. Ce champ est obligatoire. api://AzureADTokenExchange
est la valeur recommandée.
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 des informations d’identification d’identité fédérées 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 comme exemple :
name
est le nom des informations d’identification fédérées, qui ne peuvent pas être modifiées ultérieurement.id
: ID d’objet, ID d’application (client) ou URI d’identificateur de l’application.subject
: doit correspondre à la revendicationsub
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.issuer
: doit correspondre à la revendicationiss
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 esthttps://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"
]
}
Répertorier les informations d’identification d’identité fédérée 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
Obtenir des informations d’identification d’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 de l'identifiant d’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 des informations d’identification d’identité fédérées 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.
L'federated-credential-id
spécifie l’ID ou le nom des identifiants d'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
Conditions préalables
- 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éer 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 avez besoin dans les é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 et sélectionnez votre inscription d’application. Dans Vue d’ensemble->Essentials, 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 version préliminaire du module
Az.Resources
pour effectuer les opérations liées aux informations d'identification d'identité fédérée dans cet article.Install-Module -Name Az.Resources -AllowPrerelease
Configurer des informations d’identification d’identité fédérée sur une application
Exécutez l'applet de commande New-AzADAppFederatedCredential pour créer un justificatif d'identité fédéré sur une application.
Un exemple des GitHub Actions
- ApplicationObjectId: l’ID d’objet de l’application (et non l’ID client) que vous avez précédemment inscrit dans l’ID Microsoft Entra.
- Issuer identifie GitHub comme l’émetteur du jeton externe.
- objet identifie l’organisation, le dépôt et l’environnement GitHub pour votre workflow GitHub Actions. Lorsque le flux de travail GitHub Actions demande à la plateforme d’identités Microsoft d’échanger un jeton GitHub pour un jeton d’accès, les valeurs des informations d’identification de l’identité fédérée sont vérifiées par rapport au jeton GitHub fourni.
- Pour les travaux liés à un environnement :
repo:< Organization/Repository >:environment:< Name >
- Pour les tâches non liées à un environnement, incluez le chemin de référence (ref path) de la branche/étiquette en fonction du chemin de référence utilisé pour déclencher le workflow :
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.
api://AzureADTokenExchange
est la valeur recommandée.
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: l’ID d’objet de l’application (et non l’ID client) que vous avez précédemment inscrit dans l’ID Microsoft Entra.
- issuer est votre URL d’émetteur de compte de service (l’URL de l’émetteur OIDC pour le cluster managé ou l’URL de l’émetteur OIDC pour un cluster auto-géré).
- Subject est le nom du sujet dans les jetons émis au compte de service. Kubernetes utilise le format suivant pour les noms d’objet :
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 comme exemple) :
- ObjectID: ID d’objet de l’application (et non l’ID client) que vous avez précédemment inscrit dans l’ID Microsoft Entra.
- 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 esthttps://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'
Répertorier les informations d’identification d’identité fédérée sur une application
Exécutez la cmdlet Get-AzADAppFederatedCredential pour répertorier les informations d’identification d’identité fédérée d’une application.
Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential
Obtenir des informations d’identification d’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 des informations d’identification d’identité fédérées d’une application
Exécutez la cmdlet Remove-AzADAppFederatedCredential pour supprimer des informations d’identification d’identité fédérées d’une application.
Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Conditions préalables
Créer 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 avez besoin dans les é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 et sélectionnez votre inscription d’application. Dans Vue d’ensemble->Essentials, 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, supprimer federatedIdentityCredentials sur les applications. Lancez Azure Cloud Shell et connectez-vous à votre client pour exécuter des commandes Microsoft Graph à partir d’Azure CLI.
Configurer des informations d’identification d’identité fédérée sur une application
GitHub Actions
Exécutez la méthode suivante pour créer une nouvelle référence d'identité fédérée pour votre application (spécifiée par l'ID d'objet de l'application). Le 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. Lorsque le flux de travail GitHub Actions demande à la plateforme d’identités Microsoft d’échanger un jeton GitHub pour un jeton d’accès, les valeurs des informations d’identification de l’identité fédérée sont vérifiées par rapport 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"]}'
Et vous obtenez la réponse :
{
"@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"
}
Dans l’extrait de code, les paramètres sont les suivants :
name
: nom de votre application Azure.issuer
: chemin d’accès au fournisseur GitHub OIDC :https://token.actions.githubusercontent.com
. Cet émetteur devient approuvé par votre application Azure.subject
: avant qu’Azure n’accorde un jeton d’accès, la demande doit correspondre aux conditions définies ici.- Pour les travaux liés à un environnement :
repo:< Organization/Repository >:environment:< Name >
- Pour les tâches non liées à un environnement, incluez le chemin de référence (ref path) de la branche/étiquette en fonction du chemin de référence utilisé pour déclencher le workflow :
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 :
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 des informations d’identification d’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 :
issuer
est l’URL de l’émetteur de votre compte de service (l’URL de l’émetteur OIDC pour le cluster managé ou l’URL de l’émetteur OIDC pour un cluster auto-géré).subject
est le nom du sujet dans les jetons émis au compte de service. Kubernetes utilise le format suivant pour les noms d’objet :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 modifié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"]}'
Et vous obtenez la réponse :
{
"@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 des informations d’identification d’identité fédérées 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 comme exemple) :
- nom est le nom des informations d’identification fédérées, qui ne peuvent pas être modifiées ultérieurement.
- ObjectID: ID d’objet de l’application (et non l’ID client) que vous avez précédemment inscrit dans l’ID Microsoft Entra.
- 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 obtenez 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"
}
Répertorier 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 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 obtenez une réponse similaire à :
{
"@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"
}
]
}
Obtenir des informations d’identification d’identité fédérée sur une application
Exécutez la méthode suivante pour obtenir des informations d’identification d’identité fédérées pour une application (spécifiée par l’ID d’objet de l’application) :
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Et vous obtenez une réponse similaire à :
{
"@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 des informations d’identification d’identité fédérées 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'
Voir aussi
- Pour savoir comment utiliser la fédération des identités de charge de travail pour Kubernetes, consultez le projet open source Microsoft Entra Workload ID for Kubernetes.
- Pour savoir comment utiliser la fédération des identités de charge de travail pour GitHub Actions, consultez Configurer un flux de travail GitHub Actions pour obtenir un jeton d’accès.
- Lisez la documentation GitHub Actions pour en savoir plus sur la configuration de votre workflow GitHub Actions pour obtenir un jeton d’accès auprès du fournisseur d’identité Microsoft et accéder aux 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.