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 et subject 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 revendications issuer et subject 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 revendication issuer 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 :

  1. 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.

  2. Dans la zone déroulante Scénario Informations d’identification fédérées, sélectionnez Actions GitHub de déploiement de ressources Azure.

  3. Spécifiez l’Organisation et le Référentiel de votre flux de travail GitHub Actions.

  4. 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.

  5. Donnez un Nom aux informations d’identification fédérées.

  6. Les champs Émetteur, Audiences et Identificateur de l’objet sont remplis automatiquement à partir des valeurs entrées.

  7. Sélectionnez Ajouter pour configurer les informations d’identification fédérées.

    Screenshot of the Add a credential window, showing sample values.

Utilisez les valeurs suivantes de l’inscription de votre application Microsoft Entra pour votre workflow GitHub :

  • AZURE_CLIENT_IDID d’application (client)

  • AZURE_TENANT_IDID d’annuaire (locataire)

    La capture d’écran suivante montre comment copier l’ID d’application et l’ID de locataire.

    Screenshot that demonstrates how to copy the application ID and tenant ID from Microsoft Entra admin center.

  • 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

  • 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 ou repo: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 f6475511-fd81-4965-a00e-41e7792b7b9c --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 f6475511-fd81-4965-a00e-41e7792b7b9c --parameters credential.json
("credential.json" contains the following content)
{
    "name": "Kubernetes-federated-credential",
    "issuer": "https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/",
    "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 f6475511-fd81-4965-a00e-41e7792b7b9c --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 f6475511-fd81-4965-a00e-41e7792b7b9c

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 f6475511-fd81-4965-a00e-41e7792b7b9c --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 f6475511-fd81-4965-a00e-41e7792b7b9c --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 :

  1. Installez la dernière version d’Azure PowerShell si ce n’est déjà fait.

  2. Connectez-vous à Azure.

    Connect-AzAccount
    
  3. 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.

  4. 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 ou repo: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.
  • 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/9d80a3e1-2a87-46ea-ab16-e629589c541c/' -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/f6475511-fd81-4965-a00e-41e7792b7b9c/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('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Testing",
  "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
  "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 ou repo: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/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/","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('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
  "audiences": [
    "api://AzureADTokenExchange"
  ],
  "description": "Kubernetes service account federated credential",
  "id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
  "issuer": "https://aksoicwesteurope.blob.core.windows.net/9d80a3e1-2a87-46ea-ab16-e629589c541c/",
  "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('f6475511-fd81-4965-a00e-41e7792b7b9c')/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/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials'

Et vous recevez une réponse semblable à la suivante :

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials",
  "value": [
    {
      "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
      "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/f6475511-fd81-4965-a00e-41e7792b7b9c//federatedIdentityCredentials/1aa3e6a7-464c-4cd2-88d3-90db98132755'

Et vous recevez une réponse semblable à la suivante :

{
  "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials",
  "value": {
      "@odata.context": "https://graph.microsoft.com/$metadata#applications('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials/$entity",
      "@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('f6475511-fd81-4965-a00e-41e7792b7b9c')/federatedIdentityCredentials('f6475511-fd81-4965-a00e-41e7792b7b9c')/f6475511-fd81-4965-a00e-41e7792b7b9c",
    "audiences": [
        "api://AzureADTokenExchange"
      ],
      "description": "Testing",
      "id": "1aa3e6a7-464c-4cd2-88d3-90db98132755",
      "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/f6475511-fd81-4965-a00e-41e7792b7b9c/federatedIdentityCredentials/1aa3e6a7-464c-4cd2-88d3-90db98132755'

Étapes suivantes