Considérations et restrictions importantes pour les informations d’identification d’identité fédérée

Cet article décrit les considérations importantes, les restrictions et les limitations relatives aux informations d’identification d’identité fédérée sur les applications Microsoft Entra et les identités managées affectées par l’utilisateur.

Pour plus d’informations sur les scénarios rendus possibles par les informations d’identité fédérée, consultez Présentation de la fédération d’identité de charge de travail.

Considérations générales relatives aux informations d’identification d’identité fédérée

S’applique aux : applications et identités managées affectées par l’utilisateur

Toute personne disposant de l’autorisation de créer une inscription d’application et d’ajouter un secret ou un certificat a la possibilité d’ajouter les informations d’identification d’une identité fédérée à une application. Toutefois, si le commutateur Les utilisateurs peuvent inscrire des applications est défini sur Non dans le panneau Utilisateurs ->Paramètres utilisateur du centre d’administration Microsoft Entra, vous n’êtes pas en mesure de créer une inscription d’application ni de configurer les informations d’identification de l’identité fédérée. Recherchez un administrateur pour configurer les informations d’identification d’identité fédérée en votre nom, quelqu’un dans les rôles Administrateur d’application ou Propriétaire d’application.

Les informations d’identification d’identité fédérée ne consomment pas le quota d’objets du principal du service client Microsoft Entra.

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.

Régions non prises en charge (identités managées affectées par l’utilisateur)

S’applique aux : identités managées par l’utilisateur

La création d’informations d’identification d’identité fédérée n’est pas prise en charge actuellement sur les identités managées affectées par l’utilisateur créées dans les régions suivantes :

  • Asie Est
  • Qatar Central
  • Malaisie Sud
  • Italie Nord
  • Israël Central

La prise en charge de la création d’informations d’identification d’identité fédérée sur les identités affectées par l’utilisateur dans ces régions sera progressivement déployée. Les ressources de cette région qui doivent utiliser des informations d’identification d’identité fédérée peuvent le faire en tirant parti d’une identité managée affectée par l’utilisateur créée dans une région prise en charge.

Algorithmes de signature et émetteurs pris en charge

S’applique aux : applications et identités managées affectées par l’utilisateur

Seuls les émetteurs qui fournissent des jetons signés à l’aide de l’algorithme RS256 sont pris en charge pour l’échange de jetons à l’aide de la fédération d’identité de charge de travail. L’échange de jetons signés avec d’autres algorithmes peut fonctionner, mais cela n’a pas été testé.

Les émetteurs Microsoft Entra ne sont pas pris en charge

S’applique aux : applications et identités managées affectées par l’utilisateur

La création d’une fédération entre deux identités Microsoft Entra provenant des mêmes locataires ou de locataires différents n’est pas prise en charge. Lors de la création d’informations d’identification d’identité fédérée, la configuration de l’émetteur (URL du fournisseur d’identité externe) avec les valeurs suivantes n’est pas prise en charge :

  • *.login.microsoftonline.com
  • *.login.windows.net
  • *.login.microsoft.com
  • *.sts.windows.net

Bien qu’il soit possible de créer des informations d’identification d’identité fédérée avec un émetteur Microsoft Entra, les tentatives d’utilisation pour l’autorisation échouent avec une erreur AADSTS700222: AAD-issued tokens may not be used for federated identity flows.

Temps de propagation des modifications d’informations d’identification fédérée

S’applique aux : applications et identités managées affectées par l’utilisateur

Il faut du temps pour que les informations d’identification d’identité fédérée soient propagées dans une région après avoir été initialement configurées. Une demande de jeton effectuée plusieurs minutes après la configuration des informations d’identification d’identité fédérée peut échouer, car le cache est rempli dans l’annuaire avec d’anciennes données. Pendant cette fenêtre de temps, une demande d’autorisation peut échouer avec un message d’erreur AADSTS70021: No matching federated identity record found for presented assertion.

Pour éviter ce problème, patientez un peu après l’ajout des informations d’identification d’identité fédérée avant de demander un jeton pour garantir que la réplication se termine sur tous les nœuds du service d’autorisation. Nous vous recommandons également d’ajouter une logique de nouvelle tentative pour les demandes de jeton. Les nouvelles tentatives doivent être effectuées pour chaque requête même après l’obtention d’un jeton. Une fois que les données sont entièrement répliquées, le pourcentage d’échecs chute.

Les mises à jour simultanées ne sont pas prises en charge (identités managées affectées par l’utilisateur)

S’applique aux : identités managées par l’utilisateur

La création de plusieurs informations d’identification d’identité fédérée sous la même identité managée affectée par l’utilisateur déclenche simultanément une logique de détection d’accès concurrentiel, ce qui provoque l’échec des requêtes avec le code d’état HTTP de conflit 409.

Le fournisseur Terraform pour Azure (Resource Manager) version 3.40.0 introduit une mise à jour qui crée plusieurs informations d’identification d’identité fédérée de manière séquentielle plutôt que simultanée. Les versions antérieures à la version 3.40.0 peuvent entraîner des échecs dans les pipelines lorsque plusieurs identités fédérées sont créées. Nous vous recommandons d’utiliser le fournisseur Terraform pour Azure (Resource Manager) version 3.40.0 ou ultérieure afin que les informations d’identification d’identité fédérée soient créées de façon séquentielle, s’il y en a plusieurs.

Lorsque vous utilisez l’automatisation ou des modèles Azure Resource Manager (modèles ARM) pour créer des informations d’identification d’identité fédérée sous la même identité parente, créez les informations d’identification fédérée de façon séquentielle. Les informations d’identification d’identité fédérées sous différentes identités managées peuvent être créées en parallèle sans aucune restriction.

Si les informations d’identification d’identité fédérée sont provisionnées dans une boucle, vous pouvez les provisionner en série en définissant « mode » : « série ».

Vous pouvez également provisionner plusieurs nouvelles informations d’identification d’identité fédérée de façon séquentielle à l’aide de la propriété dependsOn. L’exemple suivant de modèle Azure Resource Manager (modèle ARM) crée trois nouvelles références d’identité fédérée de manière séquentielle sur une identité managée affectée par l’utilisateur en utilisant la propriété dependsOn :

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
        "userAssignedIdentities_parent_uami_name": { 
            "defaultValue": "parent_uami", 
            "type": "String" 
        } 
    }, 
    "variables": {}, 
    "resources": [ 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[parameters('userAssignedIdentities_parent_uami_name')]", 
            "location": "eastus" 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic01')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic01", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic02')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]", 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials', parameters('userAssignedIdentities_parent_uami_name'), 'fic01')]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic02", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic03')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]", 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials', parameters('userAssignedIdentities_parent_uami_name'), 'fic02')]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic03", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        } 
    ] 
} 

Stratégie Azure

S’applique aux : applications et identités managées affectées par l’utilisateur

Il est possible d’utiliser une stratégie Azure de refus comme dans l’exemple de modèle ARM suivant :

{ 
"policyRule": { 
            "if": { 
                "field": "type", 
                "equals": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials" 
            }, 
            "then": { 
                "effect": "deny" 
            } 
        } 
}

Limites de la limitation

S’applique aux : identités managées par l’utilisateur

Le tableau suivant décrit les limites des requêtes adressées aux identités managées affectées par l’utilisateur. Si vous dépassez un seuil de limitation, vous recevez une erreur HTTP 429.

Opération Requêtes par seconde par locataire Microsoft Entra Requêtes par seconde par abonnement Requêtes par seconde par ressource
Requêtes de création ou mise à jour 10 2 0,25
Requêtes Get 30 10 0.5
Requêtes de Liste par groupe de ressources ou Liste par abonnement 15 5 0,25
Requêtes Delete 10 2 0,25

Erreurs

S’applique aux : applications et identités managées affectées par l’utilisateur

Les codes d’erreur suivants peuvent être retournés lors de la création, de la mise à jour, de l’obtention, de la description ou de la suppression des informations d’identification d’identité fédérée.

Code HTTP Message d’erreur Commentaires
405 Le format de la requête était inattendu : la prise en charge des informations d’identification d’identité fédérée n’est pas activée. Les informations d’identification d’identité fédérée ne sont pas activées dans cette région. Consultez « Régions actuellement prises en charge ».
400 Les informations d’identification d’identité fédérée doivent avoir exactement une audience. Actuellement, les informations d’identification d’identité fédérée prennent en charge une audience unique « api://AzureADTokenExchange ».
400 Les informations d’identification de l’identité fédérée du corps HTTP ont des propriétés vides Toutes les propriétés d’informations d’identification de l’identité fédérée sont obligatoires.
400 Le nom des informations d’identification de l’identité fédérée « {ficName} » n’est pas valide. Caractères alphanumériques, tiret, trait de soulignement, 3 à 120 symboles. Le premier symbole doit être un caractère alphanumérique.
404 L’identité affectée par l’utilisateur parente n’existe pas. Vérifiez le nom de l’identité affectée par l’utilisateur dans le chemin de ressource des informations d’identification de l’identité fédérée.
400 La combinaison émetteur et objet existe déjà pour cette identité managée. Il s’agit d’une contrainte. Répertoriez toutes les informations d’identification d’identité fédérée associées à l’identité affectée par l’utilisateur pour rechercher les informations d’identification d’identité fédérée existantes.
409 Conflit Une requête d’écriture simultanée sur des ressources d’informations d’identification d’identité fédérée sous la même identité affectée par l’utilisateur a été refusée.