Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Roles de IAM
Al crear un grupo de identidades, se le solicitará que actualice las IAM funciones que asumen sus usuarios. IAMLos roles funcionan así: cuando un usuario inicia sesión en su aplicación, Amazon Cognito genera AWS credenciales temporales para el usuario. Estas credenciales temporales están asociadas a un IAM rol específico. Con el IAM rol, puede definir un conjunto de permisos para acceder a sus AWS recursos.
Puede especificar los IAM roles predeterminados para los usuarios autenticados y no autenticados. Asimismo, puede definir reglas para elegir el rol de cada usuario en función de las notificaciones contenidas en el token de ID. Para obtener más información, consulte Uso del control de acceso basado en roles.
De forma predeterminada, la consola de Amazon Cognito crea IAM funciones que proporcionan acceso a Amazon Mobile Analytics y a Amazon Cognito Sync. Como alternativa, puede optar por utilizar los roles existentesIAM.
Modifique IAM los roles para permitir o restringir el acceso a otros servicios. Para ello, inicie sesión en la IAM consola
nota
Como práctica recomendada, defina políticas que sigan el principio de concesión de privilegios mínimos. En otras palabras, las políticas incluyen solo los permisos que los usuarios necesitan para llevar a cabo sus tareas. Para obtener más información, consulte Concesión de privilegios mínimos en la Guía del IAM usuario.
Recuerde que las identidades sin autenticar las asumen los usuarios que no inician sesión en su aplicación. Normalmente, los permisos que asigna para las identidades sin autenticar deben ser más restrictivas que los de las identidades autenticadas.
Configuración de una política de confianza
Amazon Cognito usa IAM roles para generar credenciales temporales para los usuarios de la aplicación. El acceso a los permisos se controla mediante las relaciones de confianza de un rol. Obtener más información sobre Confianza y permisos de rol.
El token que se presenta lo genera un grupo de identidades, que traduce un token de grupo de usuarios, una red social o de un OIDC proveedor, o una SAML afirmación, en su propio token. AWS STS El token del grupo de identidades contiene una reclamación aud
que es el ID del grupo de identidades.
El siguiente ejemplo de política de confianza de roles permite al director del servicio federado llamar cognito-identity.amazonaws.com
al. AWS STS API AssumeRoleWithWebIdentity
La solicitud solo tendrá éxito si el token del grupo de identidades de la API solicitud contiene las siguientes afirmaciones.
-
Una reclamación
aud
del ID del grupo de identidadesus-west-2:abcdefg-1234-5678-910a-0e8443553f95
. -
Esta reclamación de
amr
deauthenticated
que se agrega cuando el usuario ha iniciado sesión y no es un usuario invitado.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-west-2:abcdefg-1234-5678-910a-0e8443553f95" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }
Políticas de confianza para IAM los roles en la autenticación básica (clásica)
Debe aplicar al menos una condición que limite las políticas de confianza para los roles que utilice con los grupos de identidades. Al crear o actualizar políticas de confianza de roles para grupos de identidades, IAM devuelve un error si intenta guardar los cambios sin al menos una clave de condición que limite las identidades de origen. AWS STS no permite AssumeRoleWithWebIdentityrealizar operaciones entre cuentas desde grupos de identidades hasta IAM roles que carezcan de una condición de este tipo.
En este tema se incluyen varias condiciones que limitan las identidades de origen de los grupos de identidades. Para obtener una lista completa, consulte Claves disponibles para la federación de identidades AWS web.
En la autenticación básica o clásica con un grupo de identidades, puede asumir cualquier IAM función AWS STS si cuenta con la política de confianza adecuada. IAMlos roles de los grupos de identidades de Amazon Cognito confían en que el director cognito-identity.amazonaws.com
del servicio asuma el rol. Esta configuración no es suficiente para proteger sus IAM funciones contra el acceso no deseado a los recursos. Las funciones de este tipo deben aplicar una condición adicional a la política de confianza de funciones. No puede crear ni modificar roles para grupos de identidades sin al menos una de las siguientes condiciones.
cognito-identity.amazonaws.com:aud
-
Restringe la función a las operaciones de uno o más grupos de identidades. Amazon Cognito indica el conjunto de identidades de origen en la
aud
declaración del token del grupo de identidades. cognito-identity.amazonaws.com:amr
-
Restringe la función a uno de los usuarios
authenticated
o a losunauthenticated
usuarios (invitados). Amazon Cognito indica el estado de autenticación en laamr
declaración del token del grupo de identidades. cognito-identity.amazonaws.com:sub
-
Restringe la función a uno o más usuarios mediante. UUID UUIDEs el identificador de identidad del usuario en el grupo de identidades. Este valor no es el
sub
valor del proveedor de identidad original del usuario. Amazon Cognito lo indica UUID en lasub
declaración del token del conjunto de identidades.
La autenticación de flujo mejorado requiere que la IAM función esté en la Cuenta de AWS misma posición que el grupo de identidades, pero este no es el caso de la autenticación básica.
Se aplican consideraciones adicionales a los grupos de identidades de Amazon Cognito que asumen funciones entre IAM cuentas. Las políticas de confianza de esos roles deben aceptar el principio del cognito-identity.amazonaws.com
servicio y deben contener la condición específicacognito-identity.amazonaws.com:aud
. Para evitar el acceso no deseado a AWS los recursos, la clave de aud
condición restringe la función a los usuarios de los grupos de identidades del valor de la condición.
El token que un grupo de identidades emite para una identidad contiene información sobre el origen del grupo Cuenta de AWS de identidades. Cuando presentas un token de grupo de identidades en una AssumeRoleWithWebIdentityAPIsolicitud, AWS STS comprueba si el grupo de identidades de origen es el Cuenta de AWS mismo que el IAM rol. Si AWS STS determina que la solicitud es multicuenta, comprueba si la política de confianza de roles tiene alguna aud
condición. La llamada a asumir un rol falla si no se dan tales condiciones en la política de confianza del rol. Si la solicitud no es multicuenta, AWS STS no aplica esta restricción. Como práctica recomendada, aplique siempre una condición de este tipo a las políticas de confianza de las funciones de su grupo de identidades.
Condiciones adicionales de la política de confianza
Reutilización de roles en los grupos de identidades
Para reutilizar un rol en varios grupos de identidades que comparten un conjunto de permisos comunes, puede incluir varios grupos de identidades, como se indica a continuación:
"StringEquals": { "cognito-identity.amazonaws.com:aud": [ "us-east-1:12345678-abcd-abcd-abcd-123456790ab", "us-east-1:98765432-dcba-dcba-dcba-123456790ab" ] }
Restricción del acceso a identidades concretas
Para crear una política limitada a un conjunto específico de usuarios de la aplicación, compruebe el valor de 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" ] }
Restricción del acceso a proveedores concretos
Para crear una política limitada a los usuarios que han iniciado sesión con un proveedor específico (quizás su propio proveedor de inicios de sesión), compruebe el valor de cognito-identity.amazonaws.com:amr
:
"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "login.myprovider.myapp" }
Por ejemplo, una aplicación que solo confía en Facebook tendría la siguiente cláusula amr:
"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "graph.facebook.com" }
Políticas de acceso
Los permisos que adjunte a un rol se aplican a todos los usuarios que asuman ese rol. Para particionar el acceso de sus usuarios, utilice condiciones y variables de política. Para obtener más información, consulte los elementos IAM de la política: variables y etiquetas. Puede utilizar la sub
condición para restringir las acciones a la identidad de Amazon Cognito IDs en sus políticas de acceso. Utilice esta opción con precaución, sobre todo en el caso de las identidades no autenticadas, que carecen de un ID de usuario coherente. Para obtener más información sobre las variables IAM de política para la federación web con Amazon Cognito, consulte IAMy AWS STS condicione las claves de contexto en la Guía del AWS Identity and Access Management usuario.
Para ofrecer protección de seguridad adicional, Amazon Cognito aplica una política de ámbito reducido a las credenciales que asigna a sus usuarios no autenticados en el flujo mejorado, mediante GetCredentialsForIdentity
. La política de alcance reducido añade una Política de sesión en línea y una AWS política de sesiones gestionadas a las IAM políticas que usted aplica a su función no autenticada. Como debe conceder el acceso tanto a las IAM políticas de su rol como a las políticas de sesión, la política de reducción limita el acceso de los usuarios a los servicios distintos de los de la lista siguiente.
nota
En el flujo básico (clásico), usted hace su propia AssumeRoleWithWebIdentityAPIsolicitud y puede aplicar estas restricciones a la solicitud. Como práctica recomendada de seguridad, no asigne ningún permiso por encima de esta política de ámbito reducido a usuarios no autenticados.
Amazon Cognito también impide que los usuarios autenticados y no autenticados realicen solicitudes a los grupos de identidades de API Amazon Cognito y a Amazon Cognito Sync. Otros AWS services podrían imponer restricciones al acceso al servicio desde las identidades web.
Si una solicitud se realiza correctamente con el flujo mejorado, Amazon Cognito realiza una AssumeRoleWithWebIdentity
API solicitud en segundo plano. Entre los parámetros de esta solicitud, Amazon Cognito incluye los siguientes.
-
El ID de identidad de su usuario.
-
El ARN IAM rol que el usuario quiere asumir.
-
Un parámetro
policy
que agrega una política de sesión en línea. -
PolicyArns.member.N
Parámetro cuyo valor es una política AWS gestionada que concede permisos adicionales en Amazon CloudWatch.
Servicios a los que pueden acceder los usuarios no autenticados
Cuando utiliza el flujo mejorado, las políticas de ámbito reducido que Amazon Cognito aplica a la sesión del usuario impiden que utilice otros servicios que no sean los que se muestran en la siguiente tabla. Para un subconjunto de servicios, solo se permiten acciones específicas.
Categoría | Servicio |
---|---|
Análisis |
Amazon Data Firehose Amazon Managed Service para Apache Flink |
Integración de aplicaciones |
Amazon Simple Queue Service |
Realidad aumentada y realidad virtual |
Amazon Sumerian¹ |
Aplicaciones empresariales |
Amazon Mobile Analytics Amazon Simple Email Service |
Cálculo |
AWS Lambda |
Criptografía y PKI |
AWS Key Management Service¹ |
Base de datos |
Amazon DynamoDB Amazon SimpleDB |
Web y móvil front-end |
AWS AppSync Amazon Location Service Amazon Simple Notification Service Amazon Pinpoint |
Desarrollo de juegos |
Amazon GameLift |
Internet de las cosas (IoT) |
AWS IoT |
Machine Learning |
Amazon CodeWhisperer Amazon Comprehend Amazon Lex Amazon Machine Learning Amazon Personalize Amazon Polly Amazon Rekognition Amazon SageMaker ¹ Amazon Textract¹ Amazon Transcribe Amazon Translate |
Administración y gobernanza |
Amazon CloudWatch Amazon CloudWatch Logs |
Redes y entrega de contenido |
Amazon API Gateway |
Seguridad, identidad y conformidad |
Grupos de usuarios de Amazon Cognito |
Almacenamiento |
Amazon Simple Storage Service |
¹ AWS services En el caso de la siguiente tabla, la política en línea concede un subconjunto de acciones. En la tabla se muestran las acciones disponibles en cada uno.
AWS service | Permisos máximos para usuarios de flujo mejorado no autenticados |
---|---|
AWS Key Management Service |
|
Amazon SageMaker |
|
Amazon Textract |
|
Amazon Sumerian |
|
Para conceder acceso AWS services más allá de esta lista, active el flujo de autenticación básico (clásico) en su grupo de identidades. Si sus usuarios ven NotAuthorizedException
errores permitidos por las políticas asignadas a la IAM función para los usuarios no autenticados, evalúe si puede eliminar ese servicio de su caso de uso. AWS services Si no puede, cambie al flujo básico.
La política de sesión en línea
La política de sesión integrada impide que los permisos efectivos de tu usuario incluyan el acceso a otros permisos AWS services ajenos a los de la siguiente lista. También debe concederles permisos AWS services en las políticas que aplique a la función del IAM usuario. Los permisos efectivos de un usuario para una sesión de rol asumido son la intersección de las políticas asignadas a su rol y su política de sesión. Para obtener más información, consulte Políticas de sesión en la Guía del usuario de AWS Identity and Access Management .
Amazon Cognito agrega la siguiente política insertada en las sesiones de los usuarios en Regiones de AWS que están habilitadas de forma predeterminada.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:*", "logs:*", "dynamodb:*", "kinesis:*", "mobileanalytics:*", "s3:*", "ses:*", "sns:*", "sqs:*", "lambda:*", "machinelearning:*", "execute-api:*", "iot:*", "gamelift:*", "scs:*", "cognito-identity:*", "cognito-idp:*", "lex:*", "polly:*", "comprehend:*", "translate:*", "transcribe:*", "rekognition:*", "mobiletargeting:*", "firehose:*", "appsync:*", "personalize:*", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "sagemaker:InvokeEndpoint", "cognito-sync:*", "sumerian:View*", "codewhisperer:*", "textract:DetectDocumentText", "textract:AnalyzeDocument", "sdb:*" ], "Resource": [ "*" ] } ] }
Para todas las demás regiones, la política de ámbito reducido insertada incluye todo lo que se muestra en las regiones predeterminadas, excepto las siguientes instrucciones Action
.
"cognito-sync:*", "sumerian:View*", "codewhisperer:*", "textract:DetectDocumentText", "textract:AnalyzeDocument", "sdb:*"
La política de sesiones AWS administradas
Amazon Cognito también limita el alcance de los permisos de los usuarios no autenticados con la política administrada de AWS AmazonCognitoUnAuthedIdentitiesSessionPolicy
a los usuarios no autenticados en el flujo mejorado. También debe conceder este permiso en las políticas que asocie a su función no autenticada. IAM
La política administrada por AmazonCognitoUnAuthedIdentitiesSessionPolicy
contiene los permisos siguientes.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "rum:PutRumEvents", "polly:*", "comprehend:*", "translate:*", "transcribe:*", "rekognition:*", "mobiletargeting:*", "firehose:*", "personalize:*", "sagemaker:InvokeEndpoint" ], "Resource": "*" }] }
Ejemplos de políticas de acceso
En esta sección, puede encontrar políticas de acceso de Amazon Cognito de ejemplo que conceden a los usuarios los permisos mínimos necesarios para realizar operaciones específicas. Puede limitar aún más los permisos de un determinado ID de identidad utilizando variables de política siempre que sea posible. Por ejemplo, utilizando ${cognito-identity.amazonaws.com:sub}. Para obtener más información, consulte Información sobre la parte 3 de la autenticación de Amazon Cognito: roles y políticas
nota
Como práctica recomendada de seguridad, las políticas deben incluir únicamente los permisos que los usuarios necesitan para realizar sus tareas. Esto significa que debe intentar siempre el acceso a una identidad individual para objetos cuando sea posible.
Otorgar a una identidad acceso de lectura a un único objeto en Amazon S3
La siguiente política de acceso concede permisos de lectura a una identidad para recuperar un único objeto de un determinado bucket de S3.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket/assets/my_picture.jpg"] } ] }
Otorgar a una identidad acceso de lectura y escritura a rutas específicas de identidad en Amazon S3
La siguiente política de acceso concede permisos de lectura y escritura para obtener acceso a una "carpeta" de prefijo específico en un bucket de S3 mapeando el prefijo a la variable ${cognito-identity.amazonaws.com:sub}
.
Con esta política, una identidad como us-east-1:12345678-1234-1234-1234-123456790ab
insertada a través de ${cognito-identity.amazonaws.com:sub}
puede obtener, colocar y enumerar objetos en arn:aws:s3:::mybucket/us-east-1:12345678-1234-1234-1234-123456790ab
. Sin embargo, la identidad no concedería acceso a otros objetos en 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}/*"] } ] }
Asignar a identidades acceso detallado a Amazon DynamoDB
La siguiente política de acceso proporciona un control de acceso minucioso a los recursos de DynamoDB mediante variables de entorno de Amazon Cognito. Estas variables otorgan acceso a los elementos de DynamoDB por ID de identidad: Para obtener más información, consulte Uso de condiciones IAM de política para un control de acceso detallado en la Guía para desarrolladores de 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}"] } } } ] }
Otorgar a una identidad permiso para llamar a una función de Lambda
La siguiente política de acceso concede un permiso de identidad para invocar una función de Lambda.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-west-2:123456789012:function:MyFunction" ] } ] }
Otorgar a una identidad permiso para publicar registros en Kinesis Data Streams
La siguiente política de acceso permite a una identidad utilizar la operación PutRecord
con cualquiera de los Kinesis Data Streams. Se puede aplicar a los usuarios que necesitan añadir registros de datos a todos los flujos de una cuenta. Para obtener más información, consulte Control del acceso a los recursos de Amazon Kinesis Data Streams IAM mediante la Guía para desarrolladores de Amazon Kinesis Data Streams.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] } ] }
Otorgar a una identidad acceso a sus datos en el almacén de Amazon Cognito Sync
La siguiente política de acceso solo concede permisos de identidad para acceder a sus propios datos en el almacén de 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}/*"] }] }