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.
Utilisation du contrôle d'accès basé sur les rôles
Les groupes d'identités Amazon Cognito attribuent à vos utilisateurs authentifiés un ensemble d'informations d'identification temporaires à privilèges limités pour accéder à vos ressources. AWS Les autorisations de chaque utilisateur sont contrôlées par le biais IAMdes rôles que vous créez. Vous pouvez définir des règles pour choisir le rôle pour chaque utilisateur en fonction de demandes dans le jeton d'ID de l'utilisateur. Vous pouvez définir un rôle par défaut pour les utilisateurs authentifiés. Vous pouvez également définir un IAM rôle distinct avec des autorisations limitées pour les utilisateurs invités qui ne sont pas authentifiés.
Création de rôles pour le mappage de rôles
Il est important d'ajouter la politique d'approbation appropriée pour chaque rôle afin que celui-ci puisse uniquement être assumé par Amazon Cognito pour les utilisateurs authentifiés dans votre groupe d'identités. Voici un exemple d'une telle politique d'approbation :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-corner-cafe-123456790ab" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }
Cette politique autorise les utilisateurs fédérés à partir de cognito-identity.amazonaws.com
(diffuseur du jeton OpenID Connect) à assumer ce rôle. En outre, la politique restreint le paramètre aud
du jeton (dans ce cas, l'ID du groupe d'identités) pour qu'il corresponde au groupe d'identités. Enfin, la politique précise que l'un des membres du tableau de la amr
réclamation à valeurs multiples du jeton émis par l'action Amazon GetOpenIdToken
API Cognito possède la valeur. authenticated
Octroi d'une autorisation de transmission de rôle
Pour permettre à un utilisateur de définir des rôles avec des autorisations supérieures aux autorisations existantes de l'utilisateur sur un pool d'identités, accordez-lui l'iam:PassRole
autorisation de transmettre le rôle au set-identity-pool-roles
API. Par exemple, si l'utilisateur ne peut pas écrire sur Amazon S3, mais que le IAM rôle qu'il définit dans le pool d'identités accorde une autorisation d'écriture à Amazon S3, l'utilisateur ne peut définir ce rôle que si iam:PassRole
l'autorisation est accordée pour le rôle. L'exemple de politique suivant montre comment accorder l'autorisation iam:PassRole
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myS3WriteAccessRole" ] } ] }
Dans cet exemple de politique, l'autorisation iam:PassRole
est accordée pour le rôle myS3WriteAccessRole
. Le rôle est spécifié à l'aide du nom de ressource Amazon du rôle (ARN). Vous devez également attacher cette politique à votre utilisateur. Pour plus d'informations, consultez Utilisation des politiques gérées.
Note
Les fonctions Lambda utilisent des politiques basées sur des ressources, où la politique est attachée directement à la fonction Lambda. Lorsque vous créez une règle qui appelle une fonction Lambda, vous ne transmettez pas de rôle, et l'utilisateur qui crée la règle n'a donc pas besoin de l'autorisation iam:PassRole
. Pour plus d'informations sur l'autorisation de fonctions Lambda, consultez Gestion des autorisations : utilisation d'une politique de fonction Lambda.
Utilisation de jetons pour attribuer des rôles aux utilisateurs
Pour les utilisateurs qui se connectent via les groupes d'utilisateurs Amazon Cognito, des rôles peuvent être transmis dans le jeton d'identification qui a été affecté par le groupe d'utilisateurs. Les rôles apparaissent dans les demandes suivantes dans le jeton d'ID :
-
La
cognito:preferred_role
revendication, c'est le rôleARN. -
La
cognito:roles
réclamation est une chaîne séparée par des virgules contenant un ensemble de rôles autorisés. ARNs
Les demandes sont définies comme suit :
-
La demande
cognito:preferred_role
est définie sur le rôle du groupe avec la meilleure valeur pourPrecedence
(la valeur la plus faible). S'il n'existe qu'un seul rôle autorisé,cognito:preferred_role
est défini sur ce rôle. S'il existe plusieurs rôles et qu'aucun rôle ne dispose de la meilleure priorité, cette demande n'est pas définie. -
La demande
cognito:roles
est définie, s'il existe a au moins un rôle.
Lorsque des jetons sont utilisés pour attribuer des rôles, s'il existe plusieurs rôles pouvant être affectés à l'utilisateur, la fonctionnalité de Groupes d'identités Amazon Cognito (identités fédérées) choisit le rôle comme suit :
-
Utilisez le GetCredentialsForIdentity
CustomRoleArn
paramètre s'il est défini et qu'il correspond à un rôle dans lacognito:roles
réclamation. Si ce paramètre ne correspond pas à un rôle danscognito:roles
, l'accès est refusé. -
Si la demande
cognito:preferred_role
est définie, elle est utilisée. -
Si la
cognito:preferred_role
réclamation n'est pas définie, lacognito:roles
réclamation est définie et n'CustomRoleArn
est pas spécifiée dans l'appel àGetCredentialsForIdentity
, puis le paramètre de résolution des rôles dans la console ou dans leAmbiguousRoleResolution
champ (dans leRoleMappings
paramètre du SetIdentityPoolRolesAPI) est utilisé pour déterminer le rôle à attribuer.
Utilisation du mappage basé sur des règles pour attribuer des rôles aux utilisateurs
Les règles vous permettent de mapper les demandes provenant d'un jeton de fournisseur d'identité à IAM des rôles.
Chaque règle spécifie une demande de jeton (comme un attribut utilisateur dans le jeton d'identification d'un groupe d'utilisateurs Amazon Cognito), un type de correspondance, une valeur et un IAM rôle. Le type de correspondance peut être Equals
, NotEqual
, StartsWith
ou Contains
. Si un utilisateur a une valeur correspondante pour la demande, il peut assumer ce rôle lorsqu'il obtient les informations d'identification. Par exemple, vous pouvez créer une règle qui attribue un IAM rôle spécifique aux utilisateurs avec une valeur d'attribut custom:dept
personnalisée deSales
.
Note
Dans les paramètres de la règle, les attributs personnalisés ont besoin du préfixe custom:
pour se distinguer des attributs standard.
Les règles sont évaluées dans l'ordre et le IAM rôle de la première règle correspondante est utilisé, sauf si CustomRoleArn
cela est spécifié pour remplacer l'ordre. Pour plus d'informations sur les attributs utilisateur dans les groupes d'utilisateurs Amazon Cognito, consultez Utilisation des attributs utilisateur.
Vous pouvez définir plusieurs règles pour un fournisseur d'authentification dans la console de groupe d'identités (Identités fédérées). Les règles sont appliquées dans l'ordre. Vous pouvez faire glisser les règles pour changer leur ordre. La première règle correspondante a la priorité. Si le type de correspondance est NotEqual
et que la demande n'existe pas, la règle n'est pas évaluée. Si aucune règle ne correspond, le paramètre Résolution de rôle est appliqué à Utiliser le rôle authentifié par défaut ou Refuser la demande.
Dans le API etCLI, vous pouvez spécifier le rôle à attribuer lorsqu'aucune règle ne correspond dans le AmbiguousRoleResolution
champ du RoleMappingtype, qui est spécifié dans le RoleMappings
paramètre du SetIdentityPoolRolesAPI.
Pour ajouter un mappage basé sur des règles à un fournisseur d'identité dans la console Amazon Cognito, ajoutez ou mettez à jour un IdP et sélectionnez Choisir un rôle avec des règles sous Sélection du rôle. À partir de là, vous pouvez ajouter des règles que le fournisseur de cartes prétend appliquer aux IAM rôles.
Vous pouvez configurer un mappage basé sur des règles pour les fournisseurs d'identité dans AWS CLI ou API avec le RulesConfiguration
champ du RoleMappingtype. Vous pouvez spécifier ce champ dans le RoleMappings
paramètre du SetIdentityPoolRolesAPI.
Par exemple, la AWS CLI commande suivante ajoute une règle qui attribue le rôle arn:aws:iam::123456789012:role/Sacramento_team_S3_admin
aux utilisateurs de votre site de Sacramento qui ont été authentifiés par l'OIDCIdP : arn:aws:iam::123456789012:oidc-provider/myOIDCIdP
aws cognito-identity set-identity-pool-roles --region us-east-1 --cli-input-json file://role-mapping.json
Contenu de role-mapping.json
:
{ "IdentityPoolId": "us-east-1:12345678-corner-cafe-123456790ab", "Roles": { "authenticated": "arn:aws:iam::123456789012:role/myS3WriteAccessRole", "unauthenticated": "arn:aws:iam::123456789012:role/myS3ReadAccessRole" }, "RoleMappings": { "arn:aws:iam::123456789012:oidc-provider/myOIDCIdP": { "Type": "Rules", "AmbiguousRoleResolution": "AuthenticatedRole", "RulesConfiguration": { "Rules": [ { "Claim": "locale", "MatchType": "Equals", "Value": "Sacramento", "RoleARN": "arn:aws:iam::123456789012:role/Sacramento_team_S3_admin" } ] } } } }
Pour chaque groupe d'utilisateurs ou autre fournisseur d'authentification que vous configurez pour un groupe d'identités, vous pouvez créer jusqu'à 25 règles. Cette limite n'est pas réglable. Pour plus d'informations, consultez Quotas dans Amazon Cognito.
Demandes de jetons à utiliser dans le mappage basé sur des règles
Amazon Cognito
Un jeton d'identification Amazon Cognito est représenté sous la forme d'un jeton JSON Web ()JWT. Il contient les demandes sur l'identité de l'utilisateur authentifié, par exemple name
, family_name
et phone_number
. Pour plus d'informations sur les demandes standard, consultez la spécification OpenID Connect
-
cognito:groups
-
cognito:roles
-
cognito:preferred_role
Amazon
Les demandes suivantes, ainsi que les valeurs possibles pour ces demandes, peuvent être utilisées avec Login with Amazon :
-
iss
: www.amazon.com -
aud
: ID d'application -
sub
:sub
du jeton Login with Amazon
Les demandes suivantes, ainsi que les valeurs possibles pour ces demandes, peuvent être utilisées avec Facebook :
-
iss
: graph.facebook.com -
aud
: ID d'application -
sub
:sub
du jeton Facebook
Jeton Google contenant les demandes standard émanant de la spécification OpenID Connect
Apple
Jeton Apple contenant les demandes standards émanant de la spécification OpenID Connectemail
.
OpenID
Toutes les demandes contenues dans le jeton Open Id sont disponibles pour le mappage basé sur des règles. Pour plus d'informations sur les demandes standard, consultez la spécification OpenID Connect
SAML
Les demandes sont analysées à partir de l'SAMLassertion reçue. Toutes les revendications disponibles dans l'SAMLassertion peuvent être utilisées dans le mappage basé sur des règles.
Bonnes pratiques pour le contrôle d'accès basé sur les rôles
Important
Si la demande qui vous mappez à un rôle peut être modifiée par l'utilisateur final, tout utilisateur final peut assumer votre rôle et définir la politique en conséquence. Mappez uniquement les demandes qui ne peuvent pas être définies directement par l'utilisateur final à des rôles avec des autorisations de niveau élevé. Dans un groupe d'utilisateurs Amazon Cognito, vous pouvez définir des autorisations de lecture et d'écriture par application pour chaque attribut utilisateur.
Important
Si vous définissez des rôles pour des groupes dans un groupe d'utilisateurs Amazon Cognito, ces rôles sont transmis via le jeton d'identification de l'utilisateur. Pour utiliser ces rôles, vous devez également définir Choose role from token (Choisir un rôle à partir d'un jeton) pour la sélection de rôle authentifié pour le groupe d'identités.
Vous pouvez utiliser le paramètre de résolution des rôles de la console et le RoleMappings
paramètre du SetIdentityPoolRolesAPIpour spécifier le comportement par défaut lorsque le rôle correct ne peut pas être déterminé à partir du jeton.