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.
Uso del control de acceso basado en roles
Los grupos de identidades de Amazon Cognito asignan a los usuarios autenticados un conjunto de credenciales temporales con privilegios limitados para acceder a sus recursos. AWS Los permisos de cada usuario se controlan mediante los IAMroles que usted crea. Puede definir reglas para elegir el rol de cada usuario en función de las notificaciones contenidas en el token de ID. Puede definir un rol predeterminado para los usuarios autenticados. También puede definir un IAM rol independiente con permisos limitados para los usuarios invitados que no estén autenticados.
Creación de roles para la asignación de roles
Es importante agregar la política de confianza adecuada para cada rol de forma que Amazon Cognito solo lo pueda asumir para los usuarios autenticados del grupo de identidades. A continuación se muestra un ejemplo de política de confianza:
{ "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" } } } ] }
Con esta política, los usuarios federados de cognito-identity.amazonaws.com
(el emisor del token de OpenID Connect) pueden asumir este rol. Además, la política restringe el aud
del token, en este caso, el ID del grupo de identidades para adaptarse al grupo de identidades. Por último, la política especifica que uno de los miembros de la matriz de la amr
reclamación de valores múltiples del token emitida por la acción de Amazon GetOpenIdToken
API Cognito tiene el valor. authenticated
Concesión del permiso para transmitir roles
Para permitir que un usuario establezca roles con permisos superiores a los permisos existentes del usuario en un grupo de identidades, concédale iam:PassRole
permiso para transferir el rol a. set-identity-pool-roles
API Por ejemplo, si el usuario no puede escribir en Amazon S3, pero el IAM rol que el usuario establece en el grupo de identidades concede permiso de escritura a Amazon S3, el usuario solo podrá establecer este rol si se le concede iam:PassRole
permiso para el rol. En el ejemplo de política siguiente se muestra cómo conceder el permiso iam:PassRole
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myS3WriteAccessRole" ] } ] }
En este ejemplo de política, se concede el permiso iam:PassRole
para el rol myS3WriteAccessRole
. El rol se especifica mediante el nombre de recurso de Amazon del rol (ARN). También debe adjuntar esta política a su usuario. Para obtener más información, consulte Uso de políticas administradas.
nota
Las funciones de Lambda utilizan una política basada en recursos. Esta política está directamente asociada a la función de Lambda en sí. Cuando crea una regla que invoca una función de Lambda, no transmite un rol, por lo que el usuario que crea la regla no necesita el permiso iam:PassRole
. Para obtener más información sobre las autorizaciones de funciones de Lambda, consulte Administración de permisos: uso de una política de funciones de Lambda.
Uso de tokens para asignar roles a usuarios
En el caso de los usuarios que inicien sesión mediante los grupos de usuarios de Amazon Cognito, los roles se pueden pasar en el token de ID que asignó el grupo de usuarios. Los roles aparecen en las siguientes notificaciones del token de ID:
-
El
cognito:preferred_role
reclamo es el rolARN. -
La
cognito:roles
afirmación es una cadena separada por comas que contiene un conjunto de funciones permitidas. ARNs
Las notificaciones se establecen como sigue:
-
La notificación
cognito:preferred_role
se establece en el rol del grupo con el mejor valorPrecedence
(menor). Si solo se permite un rol,cognito:preferred_role
se establece en dicho rol. Si hay varios roles y ninguno tiene la mejor prioridad, esta notificación no se establece. -
La notificación
cognito:roles
se establece si hay al menos un rol.
Cuando se utilizan tokens para asignar roles, si hay varios roles que se pueden asignar al usuario, el grupo de identidades de Amazon Cognito (identidades federadas) elige el rol de la siguiente manera:
-
Utilice el GetCredentialsForIdentity
CustomRoleArn
parámetro si está establecido y coincide con un rol de lacognito:roles
notificación. Si este parámetro no coincide con un rol decognito:roles
, deniegue el acceso. -
Si la notificación
cognito:preferred_role
está establecida, utilícela. -
Si la
cognito:preferred_role
afirmación no está establecida, se establece y noCustomRoleArn
se especifica en la llamada aGetCredentialsForIdentity
, se utiliza la configuración de resolución de roles de la consola o delAmbiguousRoleResolution
campo (en elRoleMappings
parámetro de SetIdentityPoolRolesAPI) para determinar la función que se va a asignar.cognito:roles
Uso de la asignación basada en reglas para la asignación de roles a los usuarios
Las reglas te permiten asignar las reclamaciones de un token de proveedor de identidad a IAM los roles.
Cada regla especifica una afirmación de token (como un atributo de usuario en el token de ID de un grupo de usuarios de Amazon Cognito), un tipo de coincidencia, un valor y un IAM rol. El tipo de asociación puede ser Equals
, NotEqual
, StartsWith
o Contains
. Si un usuario tiene un valor coincidente con la notificación, dicho usuario puede asumir ese rol cuando obtenga las credenciales. Por ejemplo, puede crear una regla que asigne un IAM rol específico a los usuarios con un valor de atributo custom:dept
personalizado de. Sales
nota
En la configuración de una regla, los atributos personalizados deben tener el prefijo custom:
para diferenciarse de los atributos estándar.
Las reglas se evalúan en orden y se usa la IAM función de la primera regla coincidente, a menos que CustomRoleArn
se especifique que anule el orden. Para obtener más información sobre los atributos de usuario en los grupos de usuarios de Amazon Cognito, consulte Trabajar con atributos de usuario.
Puede configurar varias reglas para un proveedor de autenticación en la consola del grupo de identidades (identidades federadas). Las reglas se aplican en orden. Si quiere cambiar el orden, puede arrastrar las reglas. La primera regla coincidente tiene prioridad. Si el tipo de asociación es NotEqual
y la notificación no existe, no se evaluará la regla. Si no hay reglas que coincidan, el ajuste de Resolución de rol se aplica a Usar rol autenticado predeterminado o Denegar solicitud.
En API yCLI, puede especificar la función que se va a asignar cuando ninguna regla coincida en el AmbiguousRoleResolution
campo del RoleMappingtipo, que se especifica en el RoleMappings
parámetro de. SetIdentityPoolRolesAPI
Para añadir un mapeo basado en reglas a un proveedor de identidad en la consola de Amazon Cognito, añada o actualice un IdP y seleccione Elegir rol con reglas en Selección de roles. Desde allí, puede añadir reglas que asignen las pretensiones del proveedor a los roles. IAM
Puede configurar un mapeo basado en reglas para los proveedores de identidad en el campo AWS CLI o API con el RulesConfiguration
campo del RoleMappingtipo. Puede especificar este campo en el RoleMappings
parámetro del. SetIdentityPoolRolesAPI
Por ejemplo, el siguiente AWS CLI comando agrega una regla que asigna la función arn:aws:iam::123456789012:role/Sacramento_team_S3_admin
a los usuarios de su ubicación de Sacramento que fueron autenticados por el OIDC IdP: 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
Contenido 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" } ] } } } }
Por cada grupo de usuarios u otro proveedor de autenticación que configure para un grupo de identidades, se pueden crear hasta 25 reglas. Este límite no se puede ajustar. Para obtener más información, consulte el tema sobre cuotas de Amazon Cognito.
Notificaciones de token para usarlas en una asignación basada en reglas
Amazon Cognito
Un token de Amazon Cognito ID se representa como un token JSON web ()JWT. El token contiene notificaciones sobre la identidad del usuario autenticado, como por ejemplo name
, family_name
y phone_number
. Para obtener más información acerca de las notificaciones estándar, consulte la especificación OpenID Connect
-
cognito:groups
-
cognito:roles
-
cognito:preferred_role
Amazon
Las notificaciones siguientes, junto con los valores posibles de dichas notificaciones, se pueden utilizar con Login with Amazon:
-
iss
: www.amazon.com -
aud
: ID de aplicación -
sub
:sub
desde el token de Login with Amazon
Las notificaciones siguientes, junto con los valores posibles de dichas notificaciones, se pueden utilizar con Facebook:
-
iss
: graph.facebook.com -
aud
: ID de aplicación -
sub
:sub
del token de Facebook
Un token de Google contiene notificaciones estándar de la especificación OpenID Connect
Apple
Un token de Apple contiene notificaciones estándar de la Especificación OpenID Connectemail
.
OpenID
Todas las notificaciones del token de Open ID están disponibles para el mapeo basado en reglas. Para obtener más información acerca de las notificaciones estándar, consulte la especificación OpenID Connect
SAML
Las reclamaciones se analizan a partir de la afirmación recibidaSAML. Todas las afirmaciones que están disponibles en la SAML afirmación se pueden utilizar en un mapeo basado en reglas.
Prácticas recomendadas para el control de acceso basado en roles
importante
Si la notificación que está mapeando a un rol la puede modificar el usuario final, cualquier usuario final puede asumir su rol y definir la política en consecuencia. Asigne únicamente las notificaciones que el usuario final no puede establecer directamente a los roles con permisos elevados. En un grupo de usuarios de Amazon Cognito, puede establecer permisos de lectura y escritura por aplicación para cada atributo de usuario.
importante
Si establece roles para grupos en un grupo de usuarios de Amazon Cognito, estos roles se transfieren por medio del token de ID del usuario. Para utilizar estos roles, también debe establecer Choose role from token (Elegir rol a partir de un token) para la selección de roles autenticados para el grupo de identidades.
Puede utilizar la configuración de resolución de roles de la consola y el RoleMappings
parámetro del SetIdentityPoolRolesAPIpara especificar cuál es el comportamiento predeterminado cuando no se puede determinar el rol correcto a partir del token.