Utilisation d'attributs pour le contrôle d'accès - Amazon Cognito

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 d'attributs pour le contrôle d'accès

Les attributs pour le contrôle d'accès sont l'implémentation du contrôle d'accès basé sur les attributs () dans les pools d'identités Amazon Cognito. ABAC Vous pouvez utiliser des IAM politiques pour contrôler l'accès aux AWS ressources via les pools d'identités Amazon Cognito en fonction des attributs des utilisateurs. Ces attributs peuvent être tirés de fournisseurs d'identités sociale et d'entreprise. Vous pouvez associer les attributs des jetons ou SAML assertions d'accès et d'identification des fournisseurs à des balises pouvant être référencées dans les IAM politiques d'autorisation.

Vous pouvez choisir des mappages par défaut ou créer vos propres mappages personnalisés dans des groupes d'identités Amazon Cognito. Les mappages par défaut vous permettent d'écrire IAM des politiques basées sur un ensemble fixe d'attributs utilisateur. Les mappages personnalisés vous permettent de sélectionner un ensemble personnalisé d'attributs utilisateur référencés dans les politiques IAM d'autorisation. Les noms d'attributs dans la console Amazon Cognito sont mappés à la clé Tag pour le principal, qui sont les balises référencées dans la IAM politique d'autorisation.

Par exemple, supposons que vous disposez d'un service de streaming multimédia avec des formules d'adhésion gratuite et payante. Vous stockez les fichiers multimédias dans Amazon S3 et les étiquetez avec des étiquettes Free ou Premium. Vous pouvez utiliser des attributs pour le contrôle d'accès afin d'autoriser l'accès au contenu gratuit et payant en fonction du niveau d'adhésion de l'utilisateur spécifié dans le profil de ce dernier. Vous pouvez associer l'attribut membership à une clé de balise pour que le principal soit transmis à la politique IAM d'autorisation. Vous pouvez ainsi créer une stratégie d'autorisations uniques et autoriser conditionnellement l'accès au contenu premium en fonction de la valeur du niveau d'adhésion et de l'étiquette sur les fichiers de contenu.

L'utilisation d'attributs pour contrôler l'accès présente plusieurs avantages :

  • La gestion des autorisations est plus efficace lorsque vous utilisez des attributs pour le contrôle d'accès. Vous pouvez créer une stratégie d'autorisations de base qui utilise des attributs utilisateur au lieu de créer plusieurs stratégies pour différentes fonctions professionnelles.

  • Vous n'avez pas besoin de mettre à jour vos stratégies chaque fois que vous ajoutez ou supprimez des ressources ou des utilisateurs pour votre application. La stratégie d'autorisations n'accorde l'accès qu'aux utilisateurs titulaires des attributs utilisateur appropriés. Par exemple, il se peut que vous deviez contrôler l'accès à certains compartiments S3 en fonction du titre professionnel des utilisateurs. Dans ce cas, vous pouvez créer une stratégie d'autorisations afin de n'autoriser l'accès à ces fichiers qu'aux utilisateurs titulaires du titre professionnel défini. Pour plus d'informations, consultez IAMTutoriel : Utiliser des balises de SAML session pour ABAC.

  • Les attributs peuvent être transmis en tant qu'étiquettes de mandataires à une stratégie qui autorise ou refuse des autorisations en fonction des valeurs de ces attributs.

Utilisation d'attributs pour le contrôle d'accès avec des groupes d'identités Amazon Cognito

Avant d'utiliser des attributs pour le contrôle d'accès, assurez-vous que les prérequis suivants sont réunis :

Pour utiliser des attributs pour le contrôle d'accès, la demande que vous définissez comme source de données définit la valeur de la clé de balise que vous choisissez. Amazon Cognito applique la clé et la valeur de balise à la session de votre utilisateur. Vos IAM politiques peuvent évaluer l'accès de votre utilisateur à partir de ${aws:PrincipalTag/tagkey} cette condition. IAMévalue la valeur du tag de votre utilisateur par rapport à la politique.

Vous devez préparer IAM les rôles dont vous souhaitez transmettre les informations d'identification à vos utilisateurs. La politique d'approbation de ces rôles doit autoriser Amazon Cognito à endosser le rôle pour votre utilisateur. Pour les attributs de contrôle d'accès, vous devez également autoriser Amazon Cognito à appliquer des balises relatives au principal à la session temporaire de votre utilisateur. Accordez l'autorisation d'assumer le rôle dans l'action AssumeRoleWithWebIdentity. Accordez l'autorisation afin de baliser les sessions des utilisateurs avec l'action avec autorisation uniquement sts:TagSession. Pour plus d'informations, consultez Transmission des balises de session dans  AWS Security Token Service, dans le Guide de l'utilisateur AWS Identity and Access Management . Pour obtenir un exemple de politique d'approbation qui accorde les autorisations sts:AssumeRoleWithWebIdentity et sts:TagSession au principal du service Amazon Cognito cognito-identity.amazonaws.com, consultez Exemple d'utilisation d'attributs pour une stratégie de contrôle d'accès.

Pour configurer les attributs pour le contrôle d'accès dans la console
  1. Connectez-vous à la console Amazon Cognito et sélectionnez Groupes d'identités. Sélectionnez une réserve d'identités.

  2. Choisissez l'onglet Accès utilisateur.

  3. Localisez Fournisseurs d'identité. Choisissez le fournisseur d'identité que vous souhaitez modifier. Si vous souhaitez ajouter un nouveau fournisseur d'identité, sélectionnez Ajouter un fournisseur d'identité.

  4. Pour modifier les balises de principal qu'Amazon Cognito attribue lorsqu'il délivre des informations d'identification aux utilisateurs qui se sont authentifiés auprès de ce fournisseur, choisissez Modifier dans Attributs de contrôle d'accès.

    1. Pour n'appliquer aucune balise de principal, choisissez Inactif.

    2. Pour appliquer les balises de principal en fonction des champs standard sub et aud, choisissez Utiliser les mappages par défaut.

    3. Pour créer votre propre schéma personnalisé d'attributs pour les balises de principal, choisissez Utiliser des mappages personnalisés. Saisissez ensuite une clé de balise que vous souhaitez obtenir à partir de chaque demande que vous souhaitez représenter dans une balise.

  5. Sélectionnez Enregistrer les modifications.

Exemple d'utilisation d'attributs pour une stratégie de contrôle d'accès

Découvrez un scénario dans lequel un employé du service juridique d'une société doit répertorier tous les fichiers figurant dans des compartiments appartenant à son département, qui sont classés en fonction de leur niveau de sécurité. Supposons que le jeton que cet employé reçoit du fournisseur d'identité contient les revendications suivantes.

Revendications

{ . . "sub" : "57e7b692-4f66-480d-98b8-45a6729b4c88", "department" : "legal", "clearance" : "confidential", . . }

Ces attributs peuvent être mappés à des balises et référencés dans les politiques d'IAMautorisation en tant que balises principales. Vous pouvez désormais gérer l'accès en modifiant le profil utilisateur du côté fournisseur d'identité. Vous pouvez également modifier les attributs du côté ressource en utilisant des noms ou des étiquettes sans modifier la stratégie elle-même.

La stratégie d'autorisations suivante fait deux choses :

  • Elle permet de répertorier l'accès à tous les compartiments S3 qui se terminent par un préfixe correspondant au nom de service de l'utilisateur.

  • Elle permet d'accéder en lecture aux fichiers figurant dans ces compartiments pour autant que l'étiquette d'autorisation sur le fichier corresponde à l'attribut d'autorisation de l'utilisateur.

Politique d'autorisations

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:List*", "Resource": "arn:aws:s3:::*-${aws:PrincipalTag/department}" }, { "Effect": "Allow", "Action": "s3:GetObject*", "Resource": "arn:aws:s3:::*-${aws:PrincipalTag/department}/*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/clearance": "${aws:PrincipalTag/clearance}" } } } ] }

La stratégie d'approbation détermine qui peut assumer ce rôle. La stratégie de relation d'approbation permet d'utiliser sts:AssumeRoleWithWebIdentity et sts:TagSession pour autoriser l'accès. Elle ajoute des conditions pour limiter la politique à la réserve d'identités que vous avez créée, et elle garantit que la politique est destinée à un rôle authentifié.

Politique d’approbation

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": [ "sts:AssumeRoleWithWebIdentity", "sts:TagSession" ], "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "IDENTITY-POOL-ID" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }

Désactiver les attributs pour le contrôle d'accès (console)

Suivez cette procédure pour désactiver les attributs pour le contrôle d'accès.

Pour désactiver les attributs pour le contrôle d'accès dans la console
  1. Connectez-vous à la console Amazon Cognito et sélectionnez Groupes d'identités. Sélectionnez une réserve d'identités.

  2. Choisissez l'onglet Accès utilisateur.

  3. Localisez Fournisseurs d'identité. Choisissez le fournisseur d'identité que vous souhaitez modifier.

  4. Choisissez Modifier dans Attributs pour le contrôle d'accès.

  5. Pour n'appliquer aucune balise de principal, choisissez Inactif.

  6. Sélectionnez Enregistrer les modifications.

Mappages de fournisseurs par défaut

Le tableau suivant contient les informations de mappage par défaut pour les fournisseurs d'authentification qu'Amazon Cognito prend en charge.

Fournisseur Type de jeton Valeurs d'étiquette de mandataire Exemple

Groupe d’utilisateurs Amazon Cognito

Jeton d’identification

aud(client ID) et sub(user ID)

"6jk8ltokc7ac9es6jrtg9q572f", "57e7b692-4f66-480d-98b8-45a6729b4c88"

Facebook

Jeton d’accès

aud(app_id), sub(user_id)

"492844718097981", "112177216992379"

Google

Jeton d’identification

aud(client ID) et sub(user ID)

"620493171733-eebk7c0hcp5lj3e1tlqp1gntt3k0rncv.apps.googleusercontent.com", "109220063452404746097"

SAML

Assertions

« http://schemas.xmlsoap. org/ws/2005/05/identity/claims/nameidentifier" , "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name»

"auth0|5e28d196f8f55a0eaaa95de3", "user123@gmail.com"

Apple

Jeton d’identification

aud(client ID) et sub (user ID)

"com.amazonaws.ec2-54-80-172-243.compute-1.client", "001968.a6ca34e9c1e742458a26cf8005854be9.0733"

Amazon

Jeton d’accès

aud (Client ID on Amzn Dev Ac), user_id(user ID)

« amzn1.application-oa2-client.9d70d9382d3446108aaee3dd763a0fa6 », « amzn1.account. AGHNIFJQMFSBG3G6XCPVB35ORQAA»

OIDCFournisseurs standards

Jetons d'identification et d'accès

aud (as client_id), sub (as user ID)

"620493171733-eebk7c0hcp5lj3e1tlqp1gntt3k0rncv.apps.googleusercontent.com", "109220063452404746097"

Twitter

Jeton d’accès

aud (app ID; app Secret), sub (user ID)

«“DfwifTtKEX1FiIBRnOTlR0CFK;Xgj5xb8xIrIVCPjXgLIdkW7fXmwcJJrFvnoK9gwZkLexo1y5z1", “1269003884292222976"»

DevAuth

Map

Ne s’applique pas

"tag1", "tag2"

Note

L'option de mappages d'attributs par défaut est automatiquement renseignée pour les champs Tag Key for Principal (Clé d'étiquette pour mandataire) et Attribute Names (Noms d'attribut). Vous ne pouvez pas modifier les mappages par défaut.