Rôles IAM
Lors de la création d'un groupe d'identités, vous êtes invité à mettre à jour les rôles IAM qu'assument vos utilisateurs. Les rôles IAM fonctionnent de la manière suivante : quand un utilisateur se connecte à votre application, Amazon Cognito génère des informations d'identification AWS temporaires pour celui-ci. Ces informations d'identification temporaires sont associées à un rôle IAM spécifique. Ce rôle IAM vous permet de définir un ensemble d'autorisations pour accéder à vos ressources AWS.
Vous pouvez spécifier des rôles IAM par défaut pour les utilisateurs authentifiés et ceux qui ne le sont pas. Vous pouvez également définir des règles pour choisir le rôle pour chaque utilisateur en fonction de demandes dans le jeton d'identification de l'utilisateur. Pour de plus amples informations, veuillez consulter Contrôle d'accès basé sur les rôles.
Par défaut, la console Amazon Cognito crée des rôles IAM donnant accès à Amazon Mobile Analytics et à Amazon Cognito Sync. Vous pouvez également choisir d'utiliser des rôles IAM existants.
Modifiez les rôles IAM pour autoriser ou restreindre l'accès à d'autres services. Pour cela, connectez-vous à la console IAM
Note
La bonne pratique consiste à définir des politiques qui suivent le principe du moindre privilège. En d'autres termes, les politiques incluent uniquement les autorisations dont les utilisateurs ont besoin pour effectuer leurs tâches. Pour plus d'informations, consultez Accorder le privilège le plus faible dans le Guide de l'utilisateur IAM.
N'oubliez pas que les identités non authentifiées sont assumées par des utilisateurs qui ne se connectent pas à votre application. En général, les autorisations que vous attribuez pour les identités non authentifiées doivent être plus restrictives que celles créées pour les identités authentifiées.
Configurer une politique d'approbation
Amazon Cognito utilise des rôles IAM pour générer des informations d'identification temporaires pour les utilisateurs de votre application. L'accès aux autorisations est contrôlé par les relations d'approbation d'un rôle. En savoir plus sur Autorisations et approbation de rôle.
Réutilisation des rôles entre les groupes d'identités
Pour réutiliser un rôle dans plusieurs groupes d'identités qui partagent un jeu d'autorisations commun, procédez comme suit afin d'inclure les groupes d'identités requis :
"StringEquals": { "cognito-identity.amazonaws.com:aud": [ "us-east-1:12345678-abcd-abcd-abcd-123456790ab", "us-east-1:98765432-dcba-dcba-dcba-123456790ab" ] }
Restriction de l'accès à des identités spécifiques
Pour créer une politique limitée à un ensemble spécifique d'utilisateurs de l'application, vérifiez la valeur :cognito-identity.amazonaws.com:sub
"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" ] }
Restriction de l'accès à des fournisseurs spécifiques
Pour créer une politique limitée aux utilisateurs qui se sont connectés avec un fournisseur spécifique (votre propre fournisseur de connexion, par exemple), vérifiez la valeur :cognito-identity.amazonaws.com:amr
"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "login.myprovider.myapp" }
Par exemple, une application qui n'autorise que Facebook présente la clause AMR suivante :
"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "graph.facebook.com" }
politiques d'accès
Les autorisations que vous attachez à un rôle s'appliquent à tous les utilisateurs qui assument ce rôle. Pour partitionner l'accès de vos utilisateurs, utilisez des conditions et des variables de politique. Pour en savoir plus, consultez Éléments des politiques IAM : variables et balises. Vous pouvez utiliser la condition sub
pour limiter les actions aux ID d'identité Amazon Cognito dans vos stratégies d'accès. Utilisez cette option avec prudence, surtout avec les identités non authentifiées, qui ne disposent pas d'un ID d'utilisateur constant. Pour en savoir plus sur les variables de politique IAM pour la fédération web avec Amazon Cognito, consultez Clés de contexte de condition IAM et AWS STS dans le Guide de l'utilisateur AWS Identity and Access Management.
Pour une sécurité accrue, Amazon Cognito applique une politique de limitation de portée aux informations d'identification que vous attribuez à vos utilisateurs non authentifiés dans le flux amélioré, à l'aide de GetCredentialsForIdentity
. La politique de limitation de portée ajoute une Politique de session en ligne aux politiques IAM que vous appliquez à votre rôle non authentifié. Puisque vous devez accorder l'accès à la fois dans les politiques IAM de votre rôle et dans les politiques de session, la politique de limitation de portée limite l'accès des utilisateurs aux services autres que ceux figurant dans la liste suivante.
Note
Dans le flux de base (classique), vous créez votre propre demande d'API AssumeRoleWithWebIdentity, et vous pouvez appliquer ces restrictions à la demande. Pour être en phase avec les bonnes pratiques de sécurité, évitez d'attribuer à des utilisateurs non authentifiés des autorisations supérieures à celles de cette politique de limitation de portée.
Dans le cas d'une demande réussie avec le flux amélioré, Amazon Cognito effectue une demande d'API AssumeRoleWithWebIdentity
en arrière-plan. Parmi les paramètres de cette demande, voici ceux qu'Amazon Cognito inclut.
-
L'ID d'identité de votre utilisateur.
-
L'ARN du rôle IAM que votre utilisateur souhaite assumer.
-
Un paramètre
policy
qui ajoute une politique de session en ligne.
La politique de session en ligne
La politique de session en ligne limite les autorisations effectives de votre utilisateur qui ne peut pas inclure d'accès aux Services AWS en dehors de ceux figurant dans la liste suivante. Vous devez également accorder des autorisations à ces Services AWS dans les politiques que vous appliquez au rôle IAM de l'utilisateur. Les autorisations effectives d'un utilisateur pour une session avec rôle assumé se trouvent à l'intersection des politiques attribuées à son rôle et de sa politique de session. Pour en savoir plus, consultez Politiques de session dans le Guide de l'utilisateur AWS Identity and Access Management.
Services auxquels les utilisateurs du flux amélioré non authentifiés peuvent accéder
Catégorie | Service |
---|---|
Analyse |
Amazon Kinesis Data Firehose Amazon Kinesis Data Analytics |
Intégration des applications |
Amazon Simple Queue Service |
AR et VR |
Amazon Sumerian¹ |
Applications métier |
Amazon Mobile Analytics Amazon Simple Email Service |
Calcul |
AWS Lambda |
Chiffrement et PKI |
AWS Key Management Service¹ |
Database (Base de données) |
Amazon DynamoDB Amazon SimpleDB |
Web et mobile front-end |
AWS AppSync Amazon Location Service Amazon Simple Notification Service |
Développement de jeux |
Amazon GameLift |
Internet des objets (IoT) |
AWS IoT |
Machine Learning (apprentissage automatique) |
Amazon CodeWhisperer Amazon Comprehend Amazon Lex Amazon Machine Learning Amazon Personalize Amazon Polly Amazon Rekognition Amazon SageMaker¹ Amazon Textract¹ Amazon Transcribe Amazon Translate |
Gestion et gouvernance |
Amazon CloudWatch Amazon CloudWatch Logs |
Réseaux et diffusion de contenu |
Amazon API Gateway |
Sécurité, identité et conformité |
Amazon Cognito Identity Groupes d'utilisateurs Amazon Cognito Amazon Cognito Sync |
Stockage |
Amazon Simple Storage Service |
¹ Pour les Services AWS qui figurent dans le tableau suivant, la politique en ligne accorde un sous-ensemble d'actions. Le tableau affiche les actions disponibles pour chaque politique.
Service AWS | Autorisations maximales pour les utilisateurs du flux amélioré non authentifiés |
---|---|
AWS Key Management Service |
|
Amazon SageMaker |
|
Amazon Textract |
|
Amazon Sumerian |
|
Pour accorder l'accès aux Services auxquels les utilisateurs du flux amélioré non authentifiés peuvent accéder, activez le flux d'authentification de base (classique) dans votre groupe d'identités. Si vos utilisateurs obtiennent des erreurs NotAuthorizedException
de Services AWS autorisés par les politiques affectées au rôle IAM pour les utilisateurs non authentifiés, déterminez si vous pouvez éliminer ces services de votre cas d'utilisation ou passez au flux de base.
Exemples de politiques d'accès
Dans cette section, vous trouverez des exemples de stratégies d'accès Amazon Cognito qui accordent uniquement les autorisations dont vos identités ont besoin pour effectuer une opération spécifique. Vous pouvez limiter davantage les autorisations pour un ID d'identité donné en utilisant des variables de politique dans la mesure du possible. Par exemple, avec ${cognito-identity.amazonaws.com:sub}. Pour plus d'informations, consultez Présentation de l'authentification Amazon Cognito 3e partie : Rôles et politiques
Note
La bonne pratique en matière de sécurité consiste à inclure uniquement les autorisations dont les utilisateurs ont besoin pour exécuter leurs tâches. Cela signifie que vous devez toujours essayer de définir l'accès à une identité individuelle pour les objets dans la mesure du possible.
Octroi à une identité d'un accès en lecture à un objet individuel dans Amazon S3
La stratégie d'accès suivante accorde des autorisations de lecture à une identité pour récupérer un seul objet à partir d'un compartiment S3 donné.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket/assets/my_picture.jpg"] } ] }
Octroi à une identité d'un accès en lecture et en écriture à des chemins spécifiques à l'identité dans Amazon S3
La stratégie d'accès suivante accorde des autorisations de lecture et d'écriture pour accéder à un préfixe spécifique « folder » d'un compartiment S3 en mappant le préfixe à la variable ${cognito-identity.amazonaws.com:sub}
.
Avec cette stratégie, une identité telle que us-east-1:12345678-1234-1234-1234-123456790ab
insérée via ${cognito-identity.amazonaws.com:sub}
est en mesure d'obtenir, de placer et de répertorier des objets dans arn:aws:s3:::mybucket/us-east-1:12345678-1234-1234-1234-123456790ab
. Toutefois, l'identité ne se verra pas accorder l'accès à d'autres objets dans arn:aws:s3:::mybucket
.
{ "Version": "2012-10-17", "Statement": [ { "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket"], "Condition": {"StringLike": {"s3:prefix": ["${cognito-identity.amazonaws.com:sub}/*"]}} }, { "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket/${cognito-identity.amazonaws.com:sub}/*"] } ] }
Attribution à des identités d'un accès précis à Amazon DynamoDB
La stratégie d'accès suivante fournit un contrôle précis des accès aux ressources DynamoDB à l'aide de variables d'environnement Amazon Cognito. Ces variables accordent l'accès aux éléments dans DynamoDB par ID d'identité. Pour de plus amples informations, veuillez consulter Utilisation des conditions de politique IAM pour un contrôle précis des accès dans le Manuel du développeur Amazon DynamoDB.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012:table/MyTable" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": ["${cognito-identity.amazonaws.com:sub}"] } } } ] }
Octroi à une identité de l'autorisation d'invoquer une fonction Lambda
La stratégie d'accès suivante accorde à une identité les autorisations nécessaires pour appeler une fonction Lambda.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-west-2:123456789012:function:MyFunction" ] } ] }
Octroi à une identité de l'autorisation de publier des enregistrements dans Kinesis Data Streams
La stratégie d'accès suivante permet à une identité d'utiliser l'opération PutRecord
avec n'importe lequel des Kinesis Data Streams. Elle peut être appliquée aux utilisateurs qui ont besoin d'ajouter des enregistrements de données à tous les flux d'un compte. Pour de plus amples informations, veuillez consulter Contrôle de l'accès aux ressources Amazon Kinesis Data Streams à l'aide d'IAM dans le Manuel du développeur Amazon Kinesis Data Streams.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] } ] }
Octroi à une identité de l'accès à ses données dans le magasin de synchronisation Amazon Cognito
La stratégie d'accès suivante accorde à une identité les autorisations d'accéder uniquement à ses propres données dans le magasin Amazon Cognito Sync.
{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":"cognito-sync:*", "Resource":["arn:aws:cognito-sync:us-east-1:123456789012:identitypool/${cognito-identity.amazonaws.com:aud}/identity/${cognito-identity.amazonaws.com:sub}/*"] }] }