Uso de atributos para el control de acceso - Amazon Cognito

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 de atributos para el control de acceso

Attributes for access control es la implementación de los grupos de identidades de Amazon Cognito del control de acceso basado en atributos (). ABAC Puede usar IAM políticas para controlar el acceso a AWS los recursos a través de los grupos de identidades de Amazon Cognito en función de los atributos de los usuarios. Estos atributos pueden extraerse de los proveedores de identidad social y corporativa. Puede asignar los atributos de los tokens o SAML aserciones de acceso e ID de los proveedores a etiquetas a las que se puede hacer referencia en las políticas de permisos. IAM

Puede elegir mapeos predeterminados o crear sus propios mapeos personalizados en grupos de identidades de Amazon Cognito. Las asignaciones predeterminadas le permiten escribir IAM políticas basadas en un conjunto fijo de atributos de usuario. Las asignaciones personalizadas le permiten seleccionar un conjunto personalizado de atributos de usuario a los que se hace referencia en las políticas de permisos. IAM Los nombres de los atributos de la consola de Amazon Cognito se asignan a la clave de etiqueta principal, que son las etiquetas a las que se hace referencia en la IAM política de permisos.

Por ejemplo, supongamos que tiene un servicio de streaming multimedia con una pertenencia gratuita y otra de pago. Almacena los archivos multimedia en Amazon S3 y los etiqueta con etiquetas gratuitas o prémium. Puede utilizar atributos de control de acceso para permitir el acceso a contenido gratuito y de pago basado en el nivel de pertenencia del usuario, que es parte del perfil del usuario. Puede asignar el atributo de membresía a una clave de etiqueta para que el principal se transfiera a la política de IAM permisos. De esta forma, puede crear una única política de permisos y permitir condicionalmente el acceso a los contenidos prémium en función del valor del nivel de membresía y de la etiqueta de los archivos de contenido.

El uso de atributos para controlar el acceso aporta varios beneficios:

  • La administración de permisos es más fácil cuando se utilizan atributos para el control de acceso. Puede crear una política de permisos básica en la que se utilicen atributos de usuario, en lugar de crear varias políticas para diferentes funciones de trabajo.

  • No es necesario que actualice las políticas cada vez que agregue o quite recursos o usuarios de la aplicación. La política de permisos solo concederá el acceso a los usuarios con los atributos de usuario coincidentes. Por ejemplo, es posible que deba controlar el acceso a determinados buckets de S3 en función del título de trabajo de los usuarios. En ese caso, puede crear una política de permisos para permitir que solo los usuarios dentro del título de trabajo definido accedan a estos archivos. Para obtener más información, consulte el IAMtutorial: Utilice etiquetas de SAML sesión para ABAC.

  • Los atributos se pueden pasar como etiquetas principales a una política que permite o rechaza los permisos en función de los valores de esos atributos.

Uso de atributos para el control de acceso con grupos de identidades de Amazon Cognito

Antes de utilizar atributos para el control de acceso, asegúrese de cumplir los siguientes requisitos previos:

Para utilizar los atributos para el control de acceso, la Reclamación que establece como origen de datos establece el valor de la Clave de etiqueta que elija. Amazon Cognito aplica la clave y el valor de la etiqueta a la sesión del usuario. Sus IAM políticas pueden evaluar el acceso de sus usuarios a partir de la ${aws:PrincipalTag/tagkey} condición. IAMevalúa el valor de la etiqueta de usuario en comparación con la política.

Debe preparar IAM los roles cuyas credenciales desee transmitir a sus usuarios. La política de confianza de estos roles debe permitir a Amazon Cognito asumir el rol para el usuario. Para los atributos para el control de acceso, también debe permitir que Amazon Cognito aplique las etiquetas de las entidades principales a la sesión temporal del usuario. Conceda permiso para asumir el rol con la acción AssumeRoleWithWebIdentity. Conceda permiso para etiquetar las sesiones de los usuarios con la acción de solo permiso sts:TagSession. Para obtener más información, consulte Transferencia de etiquetas de sesión en AWS Security Token Service en la Guía del usuario de AWS Identity and Access Management . Para una política de confianza de ejemplo que concede permisos sts:AssumeRoleWithWebIdentity y sts:TagSession a la entidad principal de servicio de Amazon Cognito cognito-identity.amazonaws.com, consulte Ejemplo de política de uso de atributos para el control de acceso.

Para configurar atributos para el control de acceso en la consola
  1. Inicie sesión en la consola de Amazon Cognito y seleccione Grupos de identidades. Seleccione un grupo de identidades.

  2. Elija la pestaña Acceso de usuario.

  3. Localice proveedores de identidades. Elija el proveedor de identidades que desea editar. Si quiere agregar un nuevo IdP, seleccione Agregar proveedor de identidades.

  4. Para cambiar las etiquetas de la entidad principal que Amazon Cognito asigna cuando emite credenciales a los usuarios que se han autenticado con este proveedor, elija Editar en Atributos para el control de acceso.

    1. Para no aplicar ninguna etiqueta de entidad principal, elija Inactivo.

    2. Para aplicar etiquetas de entidades principales en función de las reclamaciones sub y aud, elija Usar mapeos predeterminados.

    3. Para crear su propio esquema personalizado de atributos para las etiquetas de la entidades principales, elija Usar mapeos personalizados. A continuación, ingrese una Clave de etiqueta que desee obtener de cada Reclamación que desee representar en una etiqueta.

  5. Seleccione Guardar cambios.

Ejemplo de política de uso de atributos para el control de acceso

Piense en una situación en la que un empleado del departamento legal de una empresa necesita enumerar todos los archivos en buckets que pertenecen a su departamento y están clasificados con su nivel de seguridad. Supongamos que el token que este empleado obtiene del proveedor de identidad contiene las siguientes notificaciones.

Notificaciones

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

Estos atributos se pueden asignar a etiquetas y se puede hacer referencia a IAM ellos en las políticas de permisos como etiquetas principales. Ahora puede administrar el acceso si cambia el perfil de usuario al final del proveedor de identidades. Como alternativa, puede cambiar atributos en el lado del recurso mediante nombres o etiquetas sin cambiar la propia política.

La siguiente política de permisos realiza dos tareas:

  • Permite el acceso a la lista a todos los buckets de S3 que terminan con un prefijo que coincide con el nombre del departamento del usuario.

  • Permite el acceso de lectura en los archivos de estos buckets, siempre y cuando la etiqueta de autorización del archivo coincida con el atributo de autorización del usuario.

Política de permisos

{ "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 política de confianza determina quién puede asumir este rol. La política de relación de confianza permite el uso de sts:AssumeRoleWithWebIdentity y sts:TagSession para permitir el acceso. Agrega condiciones para restringir la política al grupo de identidades que ha creado y se asegura de que es para un rol autenticado.

Política de confianza

{ "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" } } } ] }

Desactivar atributos para el control de acceso (consola)

Siga este procedimiento para desactivar los atributos para el control de acceso.

Para desactivar atributos para el control de acceso en la consola
  1. Inicie sesión en la consola de Amazon Cognito y seleccione Grupos de identidades. Seleccione un grupo de identidades.

  2. Elija la pestaña Acceso de usuario.

  3. Localice proveedores de identidades. Elija el proveedor de identidades que desea editar.

  4. Elija Editar en Atributos para el control de acceso.

  5. Para no aplicar ninguna etiqueta de entidad principal, elija Inactivo.

  6. Seleccione Guardar cambios.

Mapeos de proveedores predeterminados

En la siguiente tabla, se encuentra la información de mapeo predeterminado para los proveedores de autenticación que admite Amazon Cognito.

Proveedor Tipo de token Valores de etiquetas del principal Ejemplo

Grupos de usuarios de Amazon Cognito

Token de ID

aud(ID de cliente) y sub(ID de usuario)

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

Facebook

Token de acceso

aud(app_id), sub(user_id)

"492844718097981", "112177216992379"

Google

Token de ID

aud(ID de cliente) y sub(ID de usuario)

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

SAML

Aserciones

"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

Token de ID

aud(ID de cliente) y sub(ID de usuario)

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

Amazon

Token de acceso

aud(ID de cliente en Amzn Dev Ac), user_id(ID de usuario)

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

OIDCProveedores estándar

Tokens de ID y de acceso

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

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

Twitter

Token de acceso

aud (ID de la aplicación; secreto de la aplicación), sub (ID de usuario)

«DfwifTtKEX1FiIBRnOTlR0CFK; XGJ5xB8 xIrIVCPjXgLIdkW7fXmwcJJrFvnoK9gwZkLexo1y5z1», «1269003884292222976"

DevAuth

Asignación

No aplicable

"tag1", "tag2"

nota

La opción de los mapeos de atributos predeterminados se completa de forma automática en los nombres Tag Key for Principal (Clave de etiquetas del principal) y Attribute (Atributo). No se pueden cambiar los mapeos predeterminados.