Partager via


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 de 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 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 revendication issuer 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 :

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

  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.

    Capture d’écran de la fenêtre Ajouter des informations d’identification, montrant des exemples de valeurs.

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.

    Capture d’écran montrant comment copier l’ID d’application et l’ID de locataire à partir du Centre d’administration Microsoft Entra.

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 est https://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)

  1. 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.
  2. Dans le menu de navigation de gauche, sélectionnez Certificats et secrets.
  3. Sous l’onglet informations d’identification fédérées, sélectionnez + Ajouter des informations d’identification.
  4. 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.
  5. Dans valeur entrez l’expression correspondante de revendication que vous souhaitez utiliser.

Conditions préalables

  • 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 ou repo: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 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.
  • issuer : 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"
    ]
}

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 :

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

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