Clés de contexte de condition IAM et AWS STS
Vous pouvez utiliser l'élément Condition
dans une politique JSON pour tester la valeur des clés qui figurent dans le contexte de toutes les demandes AWS. 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 préfixe iam:
) et le service AWS Security Token Service (AWS STS) (avec un préfixe sts:
). Plusieurs autres services AWS fournissent également des clés spécifiques au service applicables aux actions et aux ressources définies par ce service. Pour plus d'informations, consultez Actions, ressources et clés de condition pour les services AWS. 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.
Rubriques
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'action PassRole dans 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
ouus-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
Les services AWS qui prennent en charge iam:PassedToService prennent également en charge cette clé de condition.
- iam:AWSServiceName
-
Fonctionne avec des opérateurs de chaîne.
Spécifie le service AWS 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
ouActivate
.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'ID AWS Organizations 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'action PassRole dans 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 autorise CloudWatch à écrire des données de journal en son nom dans un compartiment Amazon S3. 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écifiercloudwatch.amazonaws.com
dans l'élémentPrincipal
. Pour afficher une politique qui permet à l'utilisateur de transmettre le rôle à CloudWatch, consultez IAM : 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, veuillez consulter Contrôle de l'accès aux politiques.
- iam:ResourceTag/
key-name
-
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 prennent en charge à la fois la clé de condition IAM
iam:ResourceTag
et la clé de condition globaleaws:ResourceTag
.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 letexte 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 fédération d'identité web AWS
Vous pouvez utiliser la fédération d'identité web pour donner des informations d'identification temporaires aux utilisateurs qui ont été authentifiés via un fournisseur d'identité OpenID Connect (OP) compatible OpenID Connect à un fournisseur d'identité IAM OpenID Connect (OIDC) dans votre compte AWS. Ces fournisseurs sont notamment Login with Amazon, Amazon Cognito, Google ou Facebook. Les jetons d'identité (id_tokens) de votre propre OP OpenID peuvent être utilisés, ainsi que les id_tokens émis sur les comptes de service des clusters Amazon Elastic Kubernetes Service. Dans ce cas, des clés de condition supplémentaires sont disponibles lors de l'utilisation des informations d'identification de sécurité temporaires pour la création d'une demande. Vous pouvez utiliser ces clés pour créer 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 suivi de la demande (:aud
, :azp
, :amr
, sub
). 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.
- amr
-
Fonctionne avec des opérateurs de chaîne.
Exemple :
cognito-identity.amazonaws.com:amr
Si vous utilisez Amazon Cognito pour la fédération d'identité web, la clé
cognito-identity.amazonaws.com:amr
(Authentication Methods Reference) inclut les informations de connexion de l'utilisateur. 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. 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 connexions utilisé dans l'appel (graph.facebook.com
,accounts.google.com
ouwww.amazon.com
).
Par exemple, la condition suivante de la politique d'approbation d'un rôle Amazon Cognito détermine 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.
Utilisez la clé de condition
aud
pour vérifier que l'ID de client Google ou l'ID du groupe d'identités Amazon Cognito correspond à celui spécifié dans la politique. Vous pouvez utiliser la cléaud
avec la clésub
pour le même fournisseur d'identité.Exemples :
-
graph.facebook.com:app_id
-
accounts.google.com:aud
-
cognito-identity.amazonaws.com:aud
Le champ
graph.facebook.com:app_id
fournit le contexte d'audience qui correspond au champ « aud » utilisé par d'autres fournisseurs d'identité.La clé de condition
accounts.google.com:aud
correspond aux champs de jeton d'ID Google suivants.-
aud
pour les ID de client Google OAuth 2.0 de votre application, lorsque le champazp
n'est pas défini. Lorsque le champazp
est défini, le champaud
correspond à la clé de condition accounts.google.com:oaud. -
azp
lorsque le champazp
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.
Pour de plus amples informations sur les champs Google
aud
etazp
, veuillez consulter le guide Google Identity Platform OpenID Connect. 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 champazp
.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 Googleaud
correspond à la fois aux valeurs de clé de conditionaccounts.google.com:aud
etaccounts.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 Googleaud
correspond uniquement à la valeur de clé de conditionaccounts.google.com:oaud
. La valeur du champazp
correspond à la valeur de clé de conditionaccounts.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" } } } ] }
-
- id
-
Fonctionne avec des opérateurs de chaîne.
Exemples :
-
graph.facebook.com:id
-
www.amazon.com:app_id
-
www.amazon.com:user_id
Utilisez ces clés pour vérifier que l'ID de l'application (ou du site) ou l'ID utilisateur de l'application correspond à celui spécifié dans la politique. Cela fonctionne pour Facebook ou Login with Amazon. Vous pouvez utiliser la clé
app_id
avec la cléid
pour le même fournisseur d'identité. -
- oaud
-
Fonctionne avec des opérateurs de chaîne.
Exemple :
accounts.google.com:oaud
Si vous utilisez Google pour la fédération d'identités web, cette clé spécifie l'audience Google (
aud
) à laquelle ce jeton d'ID 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
-
cognito-identity.amazonaws.com:sub
Utilisez ces clés pour vérifier que l'ID utilisateur correspond à celui spécifié dans la politique. Vous pouvez utiliser la clé
sub
avec la cléaud
pour le même fournisseur d'identité.{ "Version": "2012-10-17", "Statement": [ "Condition": { "StringEquals": { "oidc.eks.us-east-1.amazonaws.com/id/111122223333:aud": "sts.amazonaws.com", "oidc.eks.us-east-1.amazonaws.com/id/111122223333:sub": "system:serviceaccount:default:assumer" } } ] }
-
- Plus d'informations sur la fédération d'identité web
-
Pour plus d'information sur la fédération d'identité web, consultez la documentation suivante :
Clés de contexte inter-services pour la fédération d'identité web AWS
Certaines clés de condition pour la fédération d'identité web peuvent être utilisées dans les stratégies d'approbation des rôles afin de définir les éléments auxquels les utilisateurs peuvent accéder dans d'autres services AWS. Il s'agit des clés de condition suivantes qui peuvent être utilisées dans les stratégies d'approbation des rôles lorsque les principaux fédérés endossent un autre rôle, ainsi que dans les stratégies de ressources d'autres services AWS pour autoriser l'accès aux ressources par les principaux fédérés. Si vous utilisez Amazon Cognito pour la fédération d'identité web, ces clés sont disponibles lorsque l'utilisateur est authentifié.
Sélectionnez une clé de condition pour voir la description.
Note
Aucune autre clé de condition pour la fédération basée sur l'identité web n'est disponible à l'utilisation après l'authentification et l'autorisation du fournisseur d'identité (IdP) externe pour l'opération AssumeRoleWithWebIdentity initiale.
Clés disponibles pour la fédération SAML AWS STS
Si vous utilisez la fédération SAML avec 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 champAudience
. - 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
ID compte
/nom convivial fournisseur
, par exemple123456789012/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 '/' :
-
Valeur de la réponse
Issuer
(saml:iss
) -
ID du compte
AWS
. -
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'URIFormat
complet des élémentsSubject
etNameID
utilisés dans votre assertion SAML. La valeurpersistent
indique que la valeur desaml:sub
reste la même pour l'utilisateur entre les sessions. Si la valeur esttransient
, l'utilisateur a une valeursaml:sub
différente pour chaque session. Pour plus d'informations sur l'attributNameID
de l'élémentFormat
, consultez Configuration des 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:x500UniqueIdentifier[]
-
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 WikieduPerson
, 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 inter-services pour la fédération AWS STS basée sur SAML
Certaines clés de condition pour la fédération basée sur SAML peuvent être utilisées dans des demandes ultérieures pour autoriser des opérations AWS dans d'autres services et les appels AssumeRole
. Il s'agit des clés de condition suivantes qui peuvent être utilisées dans les stratégies d'approbation des rôles lorsque les principaux fédérés endossent un autre rôle, ainsi que dans les stratégies de ressources d'autres services AWS pour autoriser l'accès aux ressources par les 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 des politiques d'approbation de rôle IAM pour des rôles qui sont endossé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
). - sts: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
est le principal du service AWS CodeArtifact.Certains services AWS nécessitent que vous ayez l'autorisation d'obtenir un jeton porteur du service AWS STS avant de pouvoir accéder à leurs ressources par programmation. Par exemple, AWS CodeArtifact exige des entités qu'elles 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 opérations AWS CodeArtifact. Pour de plus amples informations sur les jetons porteurs, veuillez consulter Utilisation des jetons porteurs.Availability (Disponibilité) : cette clé est présente dans les demandes qui obtiennent un jeton porteur. Vous ne pouvez pas faire un appel direct vers l’interface AWS STS pour obtenir un jeton 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.
- sts:DurationSeconds
-
Fonctionne avec des opérateurs numériques.
Utilisez cette clé pour spécifier la durée (en secondes) qu'un principal peut utiliser lors de l'obtention d'un jeton porteur AWS STS.
Certains services AWS nécessitent que vous ayez l'autorisation d'obtenir un jeton porteur du service AWS STS avant de pouvoir accéder à leurs ressources par programmation. Par exemple, AWS CodeArtifact exige des entités qu'elles 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 opérations AWS CodeArtifact. Pour de plus amples informations sur les jetons porteurs, veuillez consulter Utilisation des jetons porteurs.Availability (Disponibilité) : cette clé est présente dans les demandes qui obtiennent un jeton porteur. Vous ne pouvez pas faire un appel direct vers l’interface AWS STS pour obtenir un jeton 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.
- sts: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.
Availability (Disponibilité) : cette clé est présente dans la demande lorsque le principal fournit un ID externe tout en endossant un rôle à l'aide de la AWS CLI ou de l'API AWS.
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: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.
Availability (Disponibilité) : cette clé est présente dans la demande lorsque le principal endosse le rôle à l'aide de la Console de gestion AWS Management Console, de la commande de CLI assume-role ou de l'opération d'API AWS STS
AssumeRole
.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 conditionaws: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 variableusername
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 affiche le journal AWS CloudTrail d'une action, il peut comparer le nom de session aux noms d'utilisateurs 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 estmatjac
."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 endossé répertorié dans CloudTrail inclut le compte où 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 journaux CloudTrail uniquement pour les rôles endossés par les utilisateurs dans les comptes que vous administrez. Vos utilisateurs peuvent utiliser le même nom d'utilisateur dans plusieurs comptes.
- sts: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 lorsqu'il endosse un rôle au moyen d'une commande de la CLI assume-role AWS STS ou d'une opération d'API
AssumeRole
AWS STS.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 sous forme d'attribut dans les assertions ou revendications qu'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 globale aws:SourceIdentity pour renforcer le contrôle de l'accès aux ressources AWS en fonction de la valeur de l'identité source dans les demandes suivantes.
La politique de confiance de rôle suivante autorise l'utilisateur IAM
AdminUser
à endosser un rôle dans le compte111122223333
. Elle octroie également l'autorisation à l'interfaceAdminUser
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.
- sts: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.