Clés de contexte IAM et de AWS STS condition - AWS Identity and Access Management

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Clés de contexte IAM et de AWS STS condition

Vous pouvez utiliser Condition cet élément dans une politique JSON pour tester la valeur des clés incluses dans le contexte de toutes les AWS demandes. Ces clés fournissent des informations sur la demande elle-même ou les ressources référencées par cette dernière. Vous pouvez vérifier que les clés disposent de valeurs spécifiées avant d'autoriser l'action demandée par l'utilisateur. Vous bénéficiez ainsi d'un contrôle détaillé sur la correspondance ou non de vos instructions de politique JSON avec une demande entrante. Pour plus d'informations sur l'utilisation de l'élément Condition dans une politique JSON, consultez Éléments de politique JSON IAM : Condition.

Cette rubrique décrit les clés définies et fournies par le service IAM (avec un iam: préfixe) et le service AWS Security Token Service (AWS STS) (avec un sts: préfixe). Plusieurs autres AWS services fournissent également des clés spécifiques au service qui sont pertinentes pour les actions et les ressources définies par ce service. Pour plus d'informations, consultez Actions, ressources et clés de condition pour les AWS services. La documentation pour un service qui prend en charge des clés de condition possède généralement des informations supplémentaires. Par exemple, pour obtenir des informations sur les clés que pouvez utiliser dans les politiques relatives aux ressources Amazon S3, veuillez consulter clés de politique Amazon S3 dans le guide de l'utilisateur service de stockage simple Amazon.

Clés disponibles pour IAM

Vous pouvez utilisez les clés de condition suivantes dans des politiques qui contrôlent l'accès aux ressources IAM :

iam : AssociatedResourceArn

Fonctionne avec des opérateurs ARN.

Spécifie l'ARN de la ressource à laquelle ce rôle sera associé dans le service de destination. La ressource appartient généralement au service auquel le principal transmet le rôle. Parfois, la ressource peut appartenir à un troisième service. Par exemple, vous pouvez transmettre à Amazon EC2 Auto Scaling un rôle qui sera utilisé sur une instance Amazon EC2. Dans ce cas, la condition correspondrait à l'ARN de l'instance Amazon EC2.

Cette clé de condition s'applique uniquement à l'PassRoleaction d'une politique. Elle ne peut pas être utilisée pour limiter une autre action.

Utilisez cette clé de condition dans une politique pour permettre à une entité de transmettre un rôle, mais uniquement si ce rôle est associé à la ressource spécifiée. Vous pouvez utiliser des caractères génériques (*) pour autoriser des opérations effectuées sur un type spécifique de ressource sans restreindre la région ou l'ID de ressource. Par exemple, vous pouvez autoriser un utilisateur ou un rôle IAM à transmettre n'importe quel rôle au service Amazon EC2 à utiliser avec des instances de la région us-east-1 ou us-west-1. L'utilisateur ou le rôle IAM ne serait pas autorisé à transmettre des rôles à d'autres services. De plus, Amazon EC2 n'est pas autorisé à utiliser le rôle avec des instances situées dans d'autres régions.

{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": {"iam:PassedToService": "ec2.amazonaws.com"}, "ArnLike": { "iam:AssociatedResourceARN": [ "arn:aws:ec2:us-east-1:111122223333:instance/*", "arn:aws:ec2:us-west-1:111122223333:instance/*" ] } } }
Note

AWS services compatibles avec iam : prennent PassedToService également en charge cette clé de condition.

iam : AWSServiceName

Fonctionne avec des opérateurs de chaîne.

Spécifie le AWS service auquel ce rôle est attaché.

Dans cet exemple, vous autorisez une entité à créer un rôle lié à un service si le nom de service est access-analyzer.amazonaws.com.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": "access-analyzer.amazonaws.com" } } }] }
iam:FIDO-certification

Fonctionne avec des opérateurs de chaîne.

Vérifie le niveau de certification FIDO de l'appareil MFA au moment de l'enregistrement d'une clé de sécurité FIDO. La certification de l'appareil est extraite du FIDO Alliance Metadata Service (MDS). Si le statut ou le niveau de certification de votre clé de sécurité FIDO change, celui-ci ne sera pas mis à jour à moins que l'appareil ne soit désenregistré et enregistré de nouveau pour récupérer les informations de certification mises à jour.

Valeurs possibles de L1, L1plus, L2, L2plus, L3, L3plus

Dans cet exemple, vous enregistrez une clé de sécurité et récupérez la certification FIDO de niveau 1 plus pour votre appareil.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-certification": "L1plus" } } } ] }
iam:FIDO-FIPS-140-2-certification

Fonctionne avec des opérateurs de chaîne.

Vérifie le niveau de certification de la validation FIPS-140-2 de l'appareil MFA au moment de l'enregistrement d'une clé de sécurité FIDO. La certification de l'appareil est extraite du FIDO Alliance Metadata Service (MDS). Si le statut ou le niveau de certification de votre clé de sécurité FIDO change, celui-ci ne sera pas mis à jour à moins que l'appareil ne soit désenregistré et enregistré de nouveau pour récupérer les informations de certification mises à jour.

Valeurs possibles de L1, L2, L3, L4

Dans cet exemple, vous enregistrez une clé de sécurité et récupérez la certification FIPS-140-2 de niveau 2 pour votre appareil.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-2-certification": "L2" } } } ] }
iam:FIDO-FIPS-140-3-certification

Fonctionne avec des opérateurs de chaîne.

Vérifie le niveau de certification de la validation FIPS-140-3 de l'appareil MFA au moment de l'enregistrement d'une clé de sécurité FIDO. La certification de l'appareil est extraite du FIDO Alliance Metadata Service (MDS). Si le statut ou le niveau de certification de votre clé de sécurité FIDO change, celui-ci ne sera pas mis à jour à moins que l'appareil ne soit désenregistré et enregistré de nouveau pour récupérer les informations de certification mises à jour.

Valeurs possibles de L1, L2, L3, L4

Dans cet exemple, vous enregistrez une clé de sécurité et récupérez la certification FIPS-140-3 de niveau 3 pour votre appareil.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-3-certification": "L3" } } } ] }
iam : RegisterSecurityKey

Fonctionne avec des opérateurs de chaîne.

Vérifie l'état actuel de l'activation de l'appareil MFA.

Valeurs possibles de Create ou Activate.

Dans cet exemple, vous enregistrez une clé de sécurité et récupérez la certification FIPS-140-3 de niveau 1 pour votre appareil.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-3-certification": "L1" } } } ] }
iam : OrganizationsPolicyId

Fonctionne avec des opérateurs de chaîne.

Vérifie que la politique avec l' AWS Organizations ID spécifié correspond à la politique utilisée dans la demande. Pour voir un exemple de politique IAM qui utilise cette clé de condition, veuillez consulter IAM : afficher les dernières informations consultées relatives au service pour une politique Organizations.

iam : PassedToService

Fonctionne avec des opérateurs de chaîne.

Spécifie le principal du service auquel un rôle peut être transmis. Cette clé de condition s'applique uniquement à l'PassRoleaction d'une politique. Elle ne peut pas être utilisée pour limiter une autre action.

Lorsque vous utilisez cette clé de condition dans une politique, spécifiez le service à l'aide d'un principal service. Un principal de service est le nom d'un service qui peut être spécifié dans l'élément Principal d'une politique. Il s'agit du format habituel :SERVICE_NAME_URL.amazonaws.com.

Vous pouvez utiliser iam:PassedToService pour limiter vos utilisateurs de sorte qu'ils puissent transmettre des rôles uniquement à des services spécifiques. Par exemple, un utilisateur peut créer un rôle de service qui l'autorise CloudWatch à écrire des données de journal dans un compartiment Amazon S3 en son nom. Ensuite, l'utilisateur doit attacher une politique d'autorisation et une politique d'approbation au nouveau rôle de service. Dans ce cas, la politique d'approbation doit spécifier cloudwatch.amazonaws.com dans l'élément Principal. Pour consulter une politique qui permet à l'utilisateur de transmettre le rôle CloudWatch, consultezIAM : transmettre un rôle IAM à un service AWS spécifique.

En utilisant cette clé de condition, vous pouvez vous assurer que les utilisateurs créent des rôles de service uniquement pour les services que vous spécifiez. Par exemple, si un utilisateur de la politique précédente tente de créer un rôle de service pour Amazon EC2, l'opération échouera. L'échec se produit, car l'utilisateur n'est pas autorisé à transmettre le rôle à Amazon EC2.

Parfois, vous transmettez un rôle à un service, qui le transmet ensuite à un service différent. iam:PassedToService inclut uniquement le service final qui endosse le rôle, et non le service intermédiaire qui transmet le rôle.

Note

Certains services ne prennent pas en charge cette clé de condition.

iam : PermissionsBoundary

Fonctionne avec des opérateurs ARN.

Vérifie que la politique spécifiée est attachée en tant que limite d'autorisations sur la ressource du principal IAM. Pour plus d'informations, veuillez consulter Limites d'autorisations pour les entités IAM

iam:PolicyARN

Fonctionne avec des opérateurs ARN.

Vérifie l'ARN (Amazon Resource Name) d'une politique gérée dans les demandes qui impliquent ce type de politique. Pour plus d’informations, consultez Contrôle de l'accès aux politiques.

iam :ResourceTag//nom-clé

Fonctionne avec des opérateurs de chaîne.

Vérifie que l'étiquette attachée à la ressource d'identité (utilisateur ou rôle) correspond aux nom et valeur de la clé spécifiée.

Note

IAM et AWS STS supporte à la fois la clé de condition iam:ResourceTag IAM et la clé de condition aws:ResourceTag globale.

Vous pouvez ajouter des attributs personnalisés à des ressources IAM sous la forme d'une paire clé-valeur. Pour plus d'informations sur les balises pour les ressources IAM, consultez Balisage des ressources IAM. Vous pouvez utiliser ResourceTag pour contrôler l'accès aux ressources AWS , y compris les ressources IAM. Cependant, comme IAM ne prend pas en charge les balises pour les groupes, vous ne pouvez pas utiliser de balises pour contrôler l'accès aux groupes.

Cet exemple montre comment vous pouvez créer une politique basée sur l'identité qui autorise la suppression des utilisateurs avec la balise status=terminated. Pour utiliser cette politique, remplacez le texte de l'espace réservé en italique dans l'exemple de politique par vos propres informations de ressource. Ensuite, suivez les instructions fournies dans create a policy (créer une politique) ou edit a policy (modifier une politique).

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:DeleteUser", "Resource": "*", "Condition": {"StringEquals": {"iam:ResourceTag/status": "terminated"}} }] }

Clés disponibles pour la AWS fédération OIDC

Vous pouvez utiliser la fédération OIDC pour fournir des informations de sécurité temporaires aux utilisateurs authentifiés via un fournisseur d'identité compatible OpenID Connect (IdP) auprès d'un fournisseur d'identité IAM OpenID Connect (OIDC) dans votre compte. AWS Amazon Cognito GitHub, Login with Amazon et Google sont des exemples de tels fournisseurs. Des jetons d'identité et des jetons d'accès provenant de votre propre IdP peuvent être utilisés, ainsi que des jetons de compte de service accordés aux charges de travail Amazon Elastic Kubernetes Service.

Vous pouvez utiliser les clés contextuelles de condition AWS OIDC pour rédiger des politiques qui limitent l'accès des utilisateurs fédérés aux ressources associées à un fournisseur, une application ou un utilisateur spécifique. Ces clés sont généralement utilisées dans la politique d'approbation d'un rôle. Définissez les clés de condition en utilisant le nom du fournisseur OIDC (token.actions.githubusercontent.com) suivi d'une réclamation (:aud) :token.actions.githubusercontent.com:aud.

Certaines clés de condition de fédération OIDC peuvent être utilisées dans la session de rôle pour autoriser l'accès aux ressources. Si la valeur est Oui dans la colonne Disponible dans la session, vous pouvez utiliser ces clés de condition dans les politiques pour définir les accès des utilisateurs dans d'autres AWS services. Lorsqu'une réclamation n'est pas disponible en session, la clé contextuelle de condition OIDC ne peut être utilisée que dans le cadre d'une politique de confiance des rôles pour l'AssumeRoleWithWebIdentityauthentification initiale.

Sélectionnez votre IdP pour voir comment les réclamations de votre IdP sont associées au contexte des conditions IAM entrent en ligne de compte. AWS

Default

La valeur par défaut répertorie les revendications OIDC standard et la manière dont elles sont mappées aux clés de contexte de AWS STS condition. AWS Vous pouvez utiliser ces clés pour contrôler l'accès à un rôle. Pour ce faire, comparez les clés de AWS STS condition aux valeurs de la colonne de réclamation IdP JWT. Utilisez ce mappage si votre IdP n'est pas répertorié dans les options de l'onglet.

GitHub Les workflows Actions et Google en sont quelques exemples IdPs qui utilisent l'implémentation par défaut dans leur jeton d'identification OIDC JWT.

AWS STS clé de condition Réclamation IdP JWT Disponible en cours de session

amr

amr

Oui

aud

azp

Si aucune valeur n'est définieazp, la clé de aud condition correspond à la aud réclamation.

Oui

e-mail

e-mail

Non

oaud

aud

Non

sub

sub

Oui

Pour plus d'informations sur l'utilisation des clés contextuelles de condition OIDC avec GitHub, consultezConfiguration d'un rôle pour le fournisseur d'identité GitHub OIDC. Pour de plus amples informations sur les champs Google aud et azp, veuillez consulter le guide Google Identity Platform OpenID Connect.

amr

Fonctionne avec des opérateurs de chaîne. La clé comporte plusieurs valeurs, ce qui signifie que vous l'analysez dans une politique à l'aide d'opérateurs de définition de condition.

Exemple : token.actions.githubusercontent.com:amr

La référence des méthodes d'authentification inclut les informations de connexion de l'utilisateur. Elle contient les valeurs suivantes :

  • Si l'utilisateur n'est pas authentifié, la clé contient uniquement unauthenticated.

  • Si l'utilisateur est authentifié, la clé contient la valeur authenticated et le nom du fournisseur de connexion utilisé dans l'appel (accounts.google.com).

aud

Fonctionne avec des opérateurs de chaîne.

Exemples :

  • accounts.google.com:aud

  • token.actions.githubusercontent.com:aud

Utilisez la clé de aud condition pour vérifier que le public correspond à celui que vous spécifiez dans la politique. Vous pouvez utiliser la clé aud avec la sous-clé du même fournisseur d'identité.

Cette clé de condition est définie à partir des champs de jeton suivants :

  • aud pour les ID de client Google OAuth 2.0 de votre application, lorsque le champ azp n'est pas défini. Lorsque le champ azp est défini, le champ aud correspond à la clé de condition accounts.google.com:oaud.

  • azp lorsque le champ azp est défini. Cela peut se produire pour les applications hybrides au sein desquelles une application web et une application Android ont un ID de client Google OAuth 2.0 différent mais partagent le même projet d'API Google.

Lorsque vous écrivez une politique à l'aide de la clé de condition accounts.google.com:aud, vous devez savoir si l'application est une application hybride qui définit le champ azp.

Champ non défini azp

L'exemple de politique suivant fonctionne pour les applications non hybrides qui ne définissent pas le champ azp. Dans ce cas, la valeur du champ de jeton d'ID Google aud correspond à la fois aux valeurs de clé de condition accounts.google.com:aud et accounts.google.com:oaud.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "aud-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }

Champ défini azp

L'exemple de politique suivant fonctionne pour les applications hybrides qui définissent le champ azp. Dans ce cas, la valeur du champ de jeton d'ID Google aud correspond uniquement à la valeur de clé de condition accounts.google.com:oaud. La valeur du champ azp correspond à la valeur de clé de condition accounts.google.com:aud.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "azp-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }
email

Fonctionne avec des opérateurs de chaîne.

Exemple : accounts.google.com:email

Cette clé de condition valide l'adresse e-mail de l'utilisateur. La valeur de cette réclamation n'est peut-être pas propre à ce compte et peut changer au fil du temps. Par conséquent, vous ne devez pas utiliser cette valeur comme identifiant principal pour vérifier votre dossier d'utilisateur.

oaud

Fonctionne avec des opérateurs de chaîne.

Exemple : accounts.google.com:oaud

Cette clé indique à quel autre public (aud) ce jeton d'identification est destiné. Il doit s'agir de l'un des ID client OAuth 2.0 de votre application.

sub

Fonctionne avec des opérateurs de chaîne.

Exemples :

  • accounts.google.com:sub

  • token.actions.githubusercontent.com : sub

Utilisez ces clés pour vérifier que le sujet correspond à celui que vous spécifiez dans la politique. Vous pouvez utiliser la clé sub avec la clé aud pour le même fournisseur d'identité.

Dans la politique de confiance des rôles suivante, la clé de sub condition limite le rôle à la GitHib branche nomméedemo.

{ "Version": "2012-10-17", "Statement": [ "Condition": { "StringEquals": { "token.actions.githubusercontent.com:aud": "sts.amazonaws.com", "token.actions.githubusercontent.com:sub": "repo:octo-org/octo-repo:ref:refs/heads/demo" } } ] }
Amazon Cognito

Cet onglet explique comment Amazon Cognito mappe les allégations OIDC pour AWS STS conditionner les clés contextuelles. AWS Vous pouvez utiliser ces clés pour contrôler l'accès à un rôle. Pour ce faire, comparez les clés de AWS STS condition aux valeurs de la colonne de réclamation IdP JWT.

Pour les rôles utilisés par Amazon Cognito, les clés sont définies par l'URL cognito-identity.amazonaws.com suivie de la demande.

Pour plus d'informations sur le mappage des demandes relatives au pool d'identités, consultez la section Mappages des fournisseurs par défaut dans le manuel Amazon Cognito Developer Guide. Pour plus d'informations sur le mappage des réclamations du pool d'utilisateurs, consultez la section Utilisation du jeton d'identification dans le manuel Amazon Cognito Developer Guide.

AWS STS clé de condition Réclamation IdP JWT Disponible en cours de session

amr

amr

Oui

aud

aud

Oui

oaud

aud

Non

sub

sub

Oui

amr

Fonctionne avec des opérateurs de chaîne. La clé comporte plusieurs valeurs, ce qui signifie que vous l'analysez dans une politique à l'aide d'opérateurs de définition de condition.

Exemplecognito-identity.amazonaws.com:amr

La référence des méthodes d'authentification inclut les informations de connexion de l'utilisateur. Elle contient les valeurs suivantes :

  • Si l'utilisateur n'est pas authentifié, la clé contient uniquement unauthenticated.

  • Si l'utilisateur est authentifié, la clé contient la valeur authenticated et le nom du fournisseur de connexion utilisé dans l'appel (cognito-identity.amazonaws.com).

Par exemple, la condition suivante de la politique de confiance pour un rôle Amazon Cognito vérifie si l'utilisateur n'est pas authentifié.

"Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-2:identity-pool-id" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } }
aud

Fonctionne avec des opérateurs de chaîne.

Exemplecognito-identity.amazonaws.com:aud

Client d'application du groupe d'utilisateurs qui a authentifié l'utilisateur. Amazon Cognito affiche la même valeur dans le champ standard client_id du jeton d'accès.

oaud

Fonctionne avec des opérateurs de chaîne.

Exemplecognito-identity.amazonaws.com:oaud

Client d'application du groupe d'utilisateurs qui a authentifié l'utilisateur. Amazon Cognito affiche la même valeur dans le champ standard client_id du jeton d'accès.

sub

Fonctionne avec des opérateurs de chaîne.

Exemplecognito-identity.amazonaws.com:sub

Identifiant unique (UUID), ou sujet, de l'utilisateur authentifié. Le nom d'utilisateur n'est peut-être pas unique dans votre groupe d'utilisateurs. La sous-réclamation est le meilleur moyen d'identifier un utilisateur donné. Vous pouvez utiliser la clé sub avec la clé aud pour le même fournisseur d'identité.

{ "Version": "2012-10-17", "Statement": [ "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-abcd-abcd-abcd-123456790ab", "cognito-identity.amazonaws.com:sub": [ "us-east-1:12345678-1234-1234-1234-123456790ab", "us-east-1:98765432-1234-1234-1243-123456790ab" ] } } ] }
Login with Amazon

Cet onglet explique comment Login with Amazon mappe les affirmations de l'OIDC visant à AWS STS conditionner les clés contextuelles. AWS Vous pouvez utiliser ces clés pour contrôler l'accès à un rôle. Pour ce faire, comparez les clés de AWS STS condition aux valeurs de la colonne de réclamation IdP JWT.

AWS STS clé de condition Réclamation IdP JWT Disponible en cours de session

app_id

ID d'application

Oui

sub

ID de l'utilisateur

Oui

user_id

ID de l'utilisateur

Oui

identifiant de l'application

Fonctionne avec des opérateurs de chaîne.

Exemplewww.amazon.com:app_id

Cette clé indique le contexte d'audience qui correspond au aud champ utilisé par les autres fournisseurs d'identité.

sub

Fonctionne avec des opérateurs de chaîne.

Exemplewww.amazon.com:sub

Cette clé vérifie que l'ID utilisateur correspond à celui que vous spécifiez dans la politique. Vous pouvez utiliser la clé sub avec la clé aud pour le même fournisseur d'identité.

identifiant_utilisateur

Fonctionne avec des opérateurs de chaîne.

Exemplewww.amazon.com:user_id

Cette clé indique le contexte d'audience qui correspond au aud champ utilisé par les autres fournisseurs d'identité. Vous pouvez utiliser la user_id clé avec la id clé du même fournisseur d'identité.

Facebook

Cet onglet explique comment Facebook mappe les affirmations de l'OIDC pour AWS STS conditionner les clés contextuelles. AWS Vous pouvez utiliser ces clés pour contrôler l'accès à un rôle. Pour ce faire, comparez les clés de AWS STS condition aux valeurs de la colonne de réclamation IdP JWT.

AWS STS clé de condition Réclamation IdP JWT Disponible en cours de session

app_id

ID d'application

Oui

id

id

Oui

identifiant de l'application

Fonctionne avec des opérateurs de chaîne.

Exemplegraph.facebook.com:app_id

Cette clé vérifie que le contexte d'audience correspond au aud champ utilisé par les autres fournisseurs d'identité.

id

Fonctionne avec des opérateurs de chaîne.

Exemplegraph.facebook.com:id

Cette clé a vérifié que l'identifiant de l'application (ou du site) correspond à celui que vous spécifiez dans la politique.

Plus d'informations sur la fédération OIDC

Clés disponibles pour la fédération SAML AWS STS

Si vous utilisez une fédération basée sur SAML à l'aide de AWS Security Token Service (AWS STS), vous pouvez inclure des clés de condition supplémentaires dans la politique.

Politiques d'approbation de rôle SAML

Dans la politique d'approbation d'un rôle, vous pouvez inclure les clés suivantes afin d'établir si le principal est autorisé à endosser le rôle. Hormis saml:doc, toutes les valeurs sont dérivées de l'assertion SAML. Tous les éléments de la liste sont disponibles dans l'éditeur visuel de la console IAM lorsque vous créez ou modifiez une politique avec des conditions. Les éléments marqués d'un [[] peuvent avoir une valeur qui est une liste du type spécifié.

saml:aud

Fonctionne avec des opérateurs de chaîne.

L'URL d'un point de terminaison auquel les assertions SAML sont présentées. La valeur de cette clé provient du champ SAML Recipient de l'assertion, non du champ Audience.

saml:commonName[]

Fonctionne avec des opérateurs de chaîne.

Attribut commonName.

saml:cn[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduOrg.

saml:doc

Fonctionne avec des opérateurs de chaîne.

Représente le principal utilisé pour endosser le rôle. Le format est Account-ID/provider-friendly-name, tel que. 123456789012/SAMLProviderName La valeur ID compte fait référence au compte qui est propriétaire du fournisseur SAML.

saml:edupersonaffiliation[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduPerson.

saml:edupersonassurance[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduPerson.

saml:edupersonentitlement[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduPerson.

saml:edupersonnickname[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduPerson.

saml:edupersonorgdn

Fonctionne avec des opérateurs de chaîne.

Attribut eduPerson.

saml:edupersonorgunitdn[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduPerson.

saml:edupersonprimaryaffiliation

Fonctionne avec des opérateurs de chaîne.

Attribut eduPerson.

saml:edupersonprimaryorgunitdn

Fonctionne avec des opérateurs de chaîne.

Attribut eduPerson.

saml:edupersonprincipalname

Fonctionne avec des opérateurs de chaîne.

Attribut eduPerson.

saml:edupersonscopedaffiliation[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduPerson.

saml:edupersontargetedid[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduPerson.

saml:eduorghomepageuri[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduOrg.

saml:eduorgidentityauthnpolicyuri[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduOrg.

saml:eduorglegalname[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduOrg.

saml:eduorgsuperioruri[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduOrg.

saml:eduorgwhitepagesuri[]

Fonctionne avec des opérateurs de chaîne.

Attribut eduOrg.

saml:givenName[]

Fonctionne avec des opérateurs de chaîne.

Attribut givenName.

saml:iss

Fonctionne avec des opérateurs de chaîne.

Auteur, représenté par un URN.

saml:mail[]

Fonctionne avec des opérateurs de chaîne.

Attribut mail.

saml:name[]

Fonctionne avec des opérateurs de chaîne.

Attribut name.

saml:namequalifier

Fonctionne avec des opérateurs de chaîne.

Valeur de hachage basée sur le nom convivial du fournisseur SAML. La valeur est la concaténation des valeurs suivantes, dans l'ordre et séparées par le caractère '/' :

  1. Valeur de la réponse Issuer (saml:iss)

  2. ID du compte AWS.

  3. Nom convivial (dernière partie de l'ARN) du fournisseur SAML dans IAM

La concaténation de l'ID de compte et du nom convivial du fournisseur SAML est disponible dans les politiques IAM en tant que clé saml:doc. Pour plus d’informations, veuillez consulterIdentification unique des utilisateurs dans la fédération SAML.

saml:organizationStatus[]

Fonctionne avec des opérateurs de chaîne.

Attribut organizationStatus.

saml:primaryGroupSID[]

Fonctionne avec des opérateurs de chaîne.

Attribut primaryGroupSID.

saml:sub

Fonctionne avec des opérateurs de chaîne.

Objet de la demande, qui inclut une valeur qui identifie de manière unique un utilisateur individuel au sein d'une organisation (par exemple, _cbb88bf52c2510eabe00c1642d4643f41430fe25e3).

saml:sub_type

Fonctionne avec des opérateurs de chaîne.

Cette clé peut avoir la valeur persistent, transient, ou consister en l'URI Format complet des éléments Subject et NameID utilisés dans votre assertion SAML. La valeur persistent indique que la valeur de saml:sub reste la même pour l'utilisateur entre les sessions. Si la valeur est transient, l'utilisateur a une valeur saml:sub différente pour chaque session. Pour plus d'informations sur l'attribut NameID de l'élément Format, consultez Configurer les assertions SAML pour la réponse d'authentification.

saml:surname[]

Fonctionne avec des opérateurs de chaîne.

Attribut surnameuid.

saml:uid[]

Fonctionne avec des opérateurs de chaîne.

Attribut uid.

saml:x500 [] UniqueIdentifier

Fonctionne avec des opérateurs de chaîne.

Attribut x500UniqueIdentifier.

Pour obtenir des informations générales sur les attributs eduPerson et eduOrg, accédez au site Web EFEDS Wiki. Pour obtenir la liste des attributs eduPerson, consultez Spécifications des classes d'objets eduPerson (201602).

Les clés de condition dont le type est une liste peuvent inclure plusieurs valeurs. Pour créer des conditions dans la politique pour des valeurs de liste, vous pouvez utiliser des opérateurs de définition (ForAllValues, ForAnyValue). Par exemple, pour autoriser un utilisateur dont l'affiliation est « faculté » ou « personnel » (mais pas « étudiant »), vous pouvez utiliser la condition suivante :

"Condition": { "ForAllValues:StringLike": { "saml:edupersonaffiliation":[ "faculty", "staff"] } }

Clés de contexte de fédération basées sur le protocole SAML AWS STS interservices

Certaines clés de condition de fédération basées sur SAML peuvent être utilisées dans des demandes ultérieures pour autoriser AWS des opérations dans d'autres services et AssumeRole appels. Il s'agit des clés de condition suivantes qui peuvent être utilisées dans les politiques de confiance des rôles lorsque les principaux fédérés assument un autre rôle, et dans les politiques de ressources d'autres AWS services pour autoriser l'accès aux ressources par des principaux fédérés. Pour plus d'informations sur l'utilisation de ces clés, consultez la section À propos de la fédération SAML 2.0.

Sélectionnez une clé de condition pour voir la description.

Note

Aucune autre clé de condition pour la fédération basée sur SAML n'est disponible à l'utilisation après la réponse d'authentification initiale du fournisseur d'identité (IdP) externe.

Clés disponibles pour AWS STS

Vous pouvez utiliser les clés de condition suivantes dans les politiques de confiance des rôles IAM pour les rôles assumés à l'aide d'opérations AWS Security Token Service (AWS STS).

saml:sub

Fonctionne avec des opérateurs de chaîne.

Objet de la demande, qui inclut une valeur qui identifie de manière unique un utilisateur individuel au sein d'une organisation (par exemple, _cbb88bf52c2510eabe00c1642d4643f41430fe25e3).

sets : AWSServiceName

Fonctionne avec des opérateurs de chaîne.

Utilisez cette clé pour spécifier un service dans lequel un jeton porteur fonctionne. Lorsque vous utilisez cette clé de condition dans une politique, spécifiez le service à l'aide d'un principal service. Un principal de service est le nom d'un service qui peut être spécifié dans l'élément Principal d'une politique. Par exemple, codeartifact.amazonaws.com c'est le principal du AWS CodeArtifact service.

Certains AWS services nécessitent que vous soyez autorisé à obtenir un jeton de support de AWS STS service avant de pouvoir accéder à leurs ressources par programmation. Par exemple, AWS CodeArtifact exige des principaux qu'ils utilisent des jetons porteurs pour effectuer certaines opérations. La commande aws codeartifact get-authorization-token renvoie un jeton porteur. Vous pouvez ensuite utiliser le jeton porteur pour effectuer des AWS CodeArtifact opérations. Pour de plus amples informations sur les jetons porteurs, veuillez consulter Utilisation des jetons porteurs.

Disponibilité : cette clé est présente dans les demandes qui obtiennent un jeton porteur. Vous ne pouvez pas appeler directement pour AWS STS obtenir un jeton au porteur. Lorsque vous effectuez certaines opérations dans d'autres services, le service demande le jeton au porteur en votre nom.

Vous pouvez utiliser cette clé de condition pour permettre aux entités d'obtenir un jeton porteur à utiliser avec un service spécifique.

sets : DurationSeconds

Fonctionne avec des opérateurs numériques.

Utilisez cette clé pour spécifier la durée (en secondes) que le principal peut utiliser pour obtenir un jeton au AWS STS porteur.

Certains AWS services nécessitent que vous soyez autorisé à obtenir un jeton de support de AWS STS service avant de pouvoir accéder à leurs ressources par programmation. Par exemple, AWS CodeArtifact exige des principaux qu'ils utilisent des jetons porteurs pour effectuer certaines opérations. La commande aws codeartifact get-authorization-token renvoie un jeton porteur. Vous pouvez ensuite utiliser le jeton porteur pour effectuer des AWS CodeArtifact opérations. Pour de plus amples informations sur les jetons porteurs, veuillez consulter Utilisation des jetons porteurs.

Disponibilité : cette clé est présente dans les demandes qui obtiennent un jeton porteur. Vous ne pouvez pas appeler directement pour AWS STS obtenir un jeton au porteur. Lorsque vous effectuez certaines opérations dans d'autres services, le service demande le jeton au porteur en votre nom. La clé n'est pas présente pour les opérations AWS STS assume-role.

sets : ExternalId

Fonctionne avec des opérateurs de chaîne.

Utilisez cette clé pour exiger qu'un principal fournisse un identifiant spécifique lors de la prise en charge d'un rôle IAM.

Disponibilité — Cette clé est présente dans la demande lorsque le principal fournit un identifiant externe tout en assumant un rôle à l'aide de l' AWS API AWS CLI or.

Identifiant unique qui peut être requis lorsque vous endossez un rôle dans un autre compte. Si l'administrateur du compte auquel appartient le rôle vous a fourni un ID externe, indiquez cette valeur dans le paramètre ExternalId. Cette valeur peut être n'importe quelle chaîne, comme une phrase de passe ou un numéro de compte. La fonction principale de l'ID externe consiste à traiter et à prévenir le problème du député confus. Pour de plus amples informations sur l'ID externe et le problème du député confus, veuillez consulter Procédure d'utilisation d'un ID externe lorsque vous accordez l'accès à vos ressources AWS à un tiers.

La valeur ExternalId peut avoir un minimum de 2 caractères et un maximum de 1 224 caractères. La valeur doit être alphanumérique sans espaces. Elle peut également inclure les symboles suivants : signe plus (+), signe égal (=), virgule (,), point (.), arobase (@), deux points (:), barre oblique (/) et tiret (-).

sts :RequestContext/touche contextuelle

Fonctionne avec des opérateurs de chaîne.

Utilisez cette clé pour comparer les paires clé-valeur du contexte de session intégrées dans l'assertion contextuelle signée par l'émetteur du jeton sécurisé transmise dans la demande avec les paires clé-valeurs spécifiées dans la politique de confiance des rôles.

Disponibilité — Cette clé est présente dans la demande lorsqu'une assertion de contexte est fournie dans le paramètre de ProvidedContexts demande tout en assumant un rôle à l'aide de l'opération AWS STS AssumeRole API.

Cette clé de contexte a le format suivant : "sts:RequestContext/context-key":"context-value"context-key et context-value constituent une paire clé-valeur de contexte. Lorsque plusieurs clés de contexte sont intégrées dans l'assertion de contexte signée transmise dans la demande, il y a une clé de contexte pour chaque paire clé-valeur. Vous devez autoriser l'action sts:SetContext dans la politique de confiance des rôles afin de permettre à un principal de définir des clés de contexte dans le jeton de session obtenu. Pour en savoir plus sur les clés contextuelles IAM Identity Center prises en charge qui peuvent être utilisées avec cette clé, consultez la section clés de AWS STS condition pour IAM Identity Center dans le guide de l'AWS IAM Identity Center utilisateur.

Vous pouvez utiliser cette clé dans une politique de confiance des rôles pour appliquer un contrôle d'accès précis basé sur l'utilisateur ou ses attributs lorsqu'il endosse un rôle. Par exemple, vous pouvez configurer Amazon Redshift en tant qu'application IAM Identity Center pour accéder aux ressources Amazon S3 au nom de votre personnel ou des identités fédérées.

La politique de confiance des rôles suivante autorise le principal du service Amazon Redshift à endosser un rôle dans le compte 111122223333. Il autorise également le principal du service Amazon Redshift à définir des clés de contexte dans la demande, à condition que la valeur de la clé de contexte identitystore:UserId soit définie sur 1111-22-3333-44-5555. Une fois le rôle assumé, l'activité apparaît dans les AWS CloudTrail journaux de l'AdditionalEventDataélément, contenant les paires clé-valeur du contexte de session définies par le fournisseur de contexte dans la demande d'attribution du rôle. Cela permet aux administrateurs de différencier plus facilement les sessions de rôle lorsqu'un rôle est utilisé par différents principaux. Les paires clé-valeur sont définies par le fournisseur de contexte spécifié, et non par AWS CloudTrail ou. AWS STS Cela permet au fournisseur de contexte de contrôler le contexte inclus dans les CloudTrail journaux et les informations de session.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ], "Condition": { "ForAllValues:ArnEquals": { "sts:RequestContextProviders": [ "arn:aws:iam::aws:contextProvider/IdentityCenter" ] }, "StringEquals": { "aws:SourceAccount": "111122223333", "sts:RequestContext/identitystore:UserId": "1111-22-3333-44-5555" } } } ] }
sets : RequestContextProviders

Fonctionne avec des opérateurs ARN.

Utilisez cette clé pour comparer l'ARN du fournisseur de contexte dans la demande avec l'ARN du fournisseur de contexte spécifié dans la politique de confiance des rôles.

Disponibilité — Cette clé est présente dans la demande lorsqu'une assertion de contexte est fournie dans le paramètre de ProvidedContexts demande tout en assumant un rôle à l'aide de l'opération AWS STS AssumeRole API.

L'exemple de condition suivant vérifie que l'ARN du fournisseur de contexte transmis dans la demande correspond à l'ARN spécifié dans la condition de politique d'approbation des rôles.

"Condition": { "ForAllValues:ArnEquals": { "sts:RequestContextProviders": [ "arn:aws:iam::aws:contextProvider/IdentityCenter" ] } }
sets : RoleSessionName

Fonctionne avec des opérateurs de chaîne.

Utilisez cette clé pour comparer le nom de session spécifié par un principal lorsqu'il endosse un rôle avec la valeur spécifiée dans la politique.

Disponibilité — Cette clé est présente dans la demande lorsque le principal assume le rôle à l' AWS Management Console aide de toute commande CLI assume-role ou de toute opération d' AWS STS AssumeRoleAPI.

Vous pouvez utiliser cette clé dans une politique d'approbation de rôle pour exiger que vos utilisateurs fournissent un nom de session spécifique lorsqu'ils endossent un rôle. Par exemple, vous pouvez exiger que les utilisateurs IAM spécifient leur propre nom d'utilisateur comme nom de session. Une fois que l'utilisateur IAM endosse le rôle, l'activité apparaît dans les journaux AWS CloudTrail sous le nom de session correspondant à son nom d'utilisateur. Cela permet aux administrateurs de différencier plus facilement les sessions de rôle lorsqu'un rôle est utilisé par différents principaux.

La politique d'approbation de rôle suivante exige que les utilisateurs IAM dans le compte 111122223333 fournissent leur nom d'utilisateur IAM comme nom de session lorsqu'ils endossent le rôle. Cette exigence est appliquée à l'aide de la variable de condition aws:username dans la clé de condition. Cette politique permet aux utilisateurs IAM d'endosser le rôle auquel la politique est attachée. Cette politique empêche quiconque utilise des informations d'identification temporaires d'endosser le rôle, car la variable username est uniquement présente pour les utilisateurs IAM.

Important

Vous pouvez utiliser n'importe quelle clé de condition à valeur unique comme variable. Vous ne pouvez pas utiliser de clé de condition à valeurs multiples en tant que variable.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RoleTrustPolicyRequireUsernameForSessionName", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Condition": { "StringLike": {"sts:RoleSessionName": "${aws:username}"} } } ] }

Lorsqu'un administrateur consulte le AWS CloudTrail journal d'une action, il peut comparer le nom de session aux noms d'utilisateur de son compte. Dans l'exemple suivant, l'utilisateur appelé matjac a effectué l'opération en utilisant le rôle appelé MateoRole. L'administrateur peut alors contacter Mateo Jackson, dont le nom d'utilisateur est matjac.

"assumedRoleUser": { "assumedRoleId": "AROACQRSTUVWRAOEXAMPLE:matjac", "arn": "arn:aws:sts::111122223333:assumed-role/MateoRole/matjac" }

Si vous autorisez l'accès entre comptes à l'aide de rôles, les utilisateurs d'un compte peuvent endosser un rôle dans un autre compte. L'ARN de l'utilisateur du rôle assumé répertorié dans la liste CloudTrail inclut le compte sur lequel le rôle existe. Il n'inclut pas le compte de l'utilisateur qui a endossé le rôle. Les utilisateurs ne sont uniques qu'au sein d'un compte. Par conséquent, nous vous recommandons d'utiliser cette méthode pour vérifier les CloudTrail journaux uniquement pour les rôles assumés par les utilisateurs dans les comptes que vous administrez. Vos utilisateurs peuvent utiliser le même nom d'utilisateur dans plusieurs comptes.

sets : SourceIdentity

Fonctionne avec des opérateurs de chaîne.

Utilisez cette clé pour comparer l'identité source spécifiée par un principal lorsqu'il endosse un rôle avec la valeur spécifiée dans la politique.

Disponibilité — Cette clé est présente dans la demande lorsque le principal fournit une identité source tout en assumant un rôle à l'aide d'une commande AWS STS CLI assume-role ou d'une opération d' AWS STS AssumeRoleAPI.

Vous pouvez utiliser cette clé dans une politique d'approbation de rôle pour exiger que vos utilisateurs définissent une identité source spécifique lorsqu'ils endossent un rôle. Par exemple, vous pouvez exiger que votre main-d'œuvre ou vos identités fédérées spécifient une valeur pour l'identité source. Vous pouvez configurer votre fournisseur d'identité (IdP) de sorte qu'il utilise l'un des attributs associés à vos utilisateurs, un nom d'utilisateur ou un e-mail par exemple, comme identité source. L'IdP transmet ensuite l'identité source en tant qu'attribut dans les assertions ou les revendications auxquelles il envoie. AWS La valeur de l'attribut d'identité source identifie l'utilisateur ou l'application qui endosse le rôle.

Une fois que l'utilisateur endosse le rôle, l'activité apparaît dans les journaux AWS CloudTrail avec la valeur d'identité source qui a été définie. Cela permet aux administrateurs de déterminer plus facilement qui ou quoi a effectué des actions avec un rôle dans AWS. Vous devez octroyer des autorisations pour l'action sts:SetSourceIdentity afin d'autoriser une identité à définir une identité source.

Contrairement à sts:RoleSessionName, une fois l'identité source définie, la valeur ne peut plus être modifiée. Elle est présente dans le contexte de la demande pour toutes les actions effectuées avec le rôle par l'identité source. La valeur persiste dans les sessions de rôle suivantes lorsque vous utilisez les informations d'identification de session pour endosser un autre rôle. Le fait d'endosser un rôle à partir d'un autre est appelé chaînage des rôles.

Vous pouvez utiliser la clé de condition aws:SourceIdentityglobale pour contrôler davantage l'accès aux AWS ressources en fonction de la valeur de l'identité de la source dans les demandes suivantes.

La politique de confiance de rôle suivante autorise l'utilisateur IAM AdminUserà endosser un rôle dans le compte 111122223333. Elle octroie également l'autorisation à l'interface AdminUser de définir une identité source, dans la mesure où l'identité source définie correspond à DiegoRamirez.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAdminUserAssumeRole", "Effect": "Allow", "Principal": {"AWS": " arn:aws:iam::111122223333:user/AdminUser"}, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": {"sts:SourceIdentity": "DiegoRamirez"} } } ] }

Pour en savoir plus sur les informations relatives à l'identité source, veuillez consulter Surveiller et contrôler les actions prises avec les rôles endossés.

sets : TransitiveTagKeys

Fonctionne avec des opérateurs de chaîne.

Utilisez cette clé pour comparer les clés des balises de session transitoire de la demande avec celles spécifiées dans la politique.

Availability (Disponibilité) : cette clé est présente dans la demande lorsque vous effectuez une demande à l'aide d'informations d'identification de sécurité temporaires. Il s'agit notamment des informations d'identification créées à l'aide d'une opération assume-rôle, ou de l'opération GetFederationToken.

Lorsque vous effectuez une demande à l'aide d'informations d'identification de sécurité temporaires, le contexte de la demande inclut la clé de contexte aws:PrincipalTag. Cette clé inclut une liste de balises de session, de balises de session transitoire et de balises de rôle. Les balises de session transitoires sont des balises qui perdurent pendant toutes les sessions ultérieures lorsque vous utilisez les informations d'identification de session pour endosser un autre rôle. Le fait d'endosser un rôle à partir d'un autre est appelé chaînage des rôles.

Vous pouvez utiliser cette clé de condition dans une politique pour exiger la définition de balises de session spécifiques comme transitoires lorsque vous endossez un rôle ou fédérez un utilisateur.