Autorización con Amazon Verified Permissions - 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.

Autorización con Amazon Verified Permissions

Amazon Verified Permissions es un servicio de autorización para las aplicaciones que crea. Al agregar un grupo de usuarios de Amazon Cognito como origen de identidad, la aplicación puede pasar tokens de acceso o identidad (ID) de grupo de usuarios a Verified Permissions para que tomen una decisión de permitir o denegar. Los permisos verificados consideran las propiedades del usuario y el contexto de la solicitud en función de las políticas que escriba en Lenguaje de política de Cedar. El contexto de la solicitud puede incluir un identificador del documento, la imagen u otro recurso que solicitaron y la acción que el usuario desea realizar en el recurso.

Tu aplicación puede proporcionar la identidad de tu usuario o los tokens de acceso a los permisos verificados IsAuthorizedWithTokeno a las solicitudes de BatchIsAuthorizedWithTokenAPI. Estas operaciones de la API aceptan a tus usuarios como usuarios Principal y toman decisiones de Action autorización para aquellos a los Resource que desean acceder. La personalización adicional Context puede contribuir a una decisión de acceso detallada.

Cuando la aplicación presenta un token en una solicitud de API IsAuthorizedWithToken, Verified Permissions realiza las siguientes validaciones.

  1. El grupo de usuarios es un origen de identidad de Verified Permissions configurado para el almacén de políticas solicitado.

  2. La reclamación client_idaud, en el token de acceso o identidad, respectivamente, coincide con el ID de cliente de la aplicación de un grupo de usuarios que proporcionó a Verified Permissions. Para verificar esta reclamación, debe configurar la validación del ID de cliente en el origen de identidad de Verified Permissions.

  3. El token no ha caducado.

  4. El valor de la token_use reclamación que figura en tu token coincide con los parámetros a los que has pasadoIsAuthorizedWithToken. La token_use reclamación debe ser access si la pasaste al accessToken parámetro y id si la pasaste al identityToken parámetro.

  5. La firma del token proviene de las claves web JSON (JWK) publicadas del grupo de usuarios. Puede consultar JWK en https://cognito-idp.Region.amazonaws.com/your user pool ID/.well-known/jwks.json.

Tokens revocados y usuarios eliminados

Los permisos verificados solo validan la información que conoce del origen de identidad y de la fecha de caducidad del token del usuario. Los permisos verificados no comprueban la revocación del token ni la existencia del usuario. Si revocó el token del usuario o eliminó el perfil de usuario del grupo de usuarios, Verified Permissions seguirá considerando que el token es válido hasta que caduque.

Evaluación de políticas

Configure el grupo de usuarios como origen de identidad para el almacén de políticas. Configure la aplicación para enviar los tokens de los usuarios en las solicitudes de permisos verificados. Para cada solicitud, Verified Permissions compara las reclamaciones del token con una política. Una política de Verified Permissions es como una política de IAM en  AWS. Declara un entidad principal, un recurso y una acción. Verified Permissions responde a tu solicitud Allow si coincide con una acción permitida y no coincide con una Deny acción explícita; de lo contrario, responde conDeny. Para obtener más información, consulte las políticas de Amazon Verified Permissions en la Guía del usuario de Amazon Verified Permissions.

Personalización de tokens

Para cambiar, añadir y eliminar las reclamaciones de los usuarios que deseas presentar a Verified Permissions, personaliza el contenido de tus identificadores de acceso e identidad con unDesencadenador de Lambda anterior a la generación del token. Con un desencadenador previo a la generación del token, puede agregar y modificar reclamaciones en los tokens. Por ejemplo, puede consultar una base de datos para atributos de usuario adicionales y codificarlos en el token de ID.

nota

Debido a la forma en que Verified Permissions procesa las reclamaciones, no agregue las reclamaciones con nombres cognitodev y custom en la función de generación previa al token. Si presenta estos prefijos de reclamación reservados no en formato delimitado por dos puntos, como cognito:username sino como nombres de reclamación completos, las solicitudes de autorización producen un error.

Autorización de API con permisos verificados

Su ID o sus tokens de acceso pueden autorizar las solicitudes a las API REST de Amazon API Gateway de backend con permisos verificados. Puede crear un almacén de políticas con enlaces inmediatos a su grupo de usuarios y a su API. Con la opción de inicio Configurar con Cognito y API Gateway, Verified Permissions añade una fuente de identidad del grupo de usuarios al almacén de políticas y un autorizador Lambda a la API. Cuando la aplicación pasa un token portador del grupo de usuarios a la API, el autorizador de Lambda invoca los permisos verificados. El autorizador transfiere el token como principal y la ruta y el método de la solicitud como acción.

El siguiente diagrama ilustra el flujo de autorización de una API API Gateway con permisos verificados. Para obtener un desglose detallado, consulta los almacenes de políticas vinculados a API en la Guía del usuario de permisos verificados de Amazon.

Un diagrama que ilustra el flujo de autorización de la API con Amazon Verified Permissions. Una aplicación realiza una solicitud a una API de Amazon API Gateway. La API invoca un autorizador Lambda. El autorizador realiza una solicitud de API a Verified Permissions. Verified Permissions comprueba la validez del token y devuelve una decisión de autorización.

Verified Permissions estructura la autorización de la API en torno a grupos de usuarios. Como tanto el identificador como el token de acceso incluyen una cognito:groups reclamación, su almacén de políticas puede gestionar el control de acceso basado en roles (RBAC) para sus API en una variedad de contextos de aplicación.

Elegir la configuración del almacén de políticas

Al configurar una fuente de identidad en un almacén de políticas, debe elegir si desea procesar los tokens de acceso o de identificación. Esta decisión es importante para el funcionamiento de su motor de políticas. Los tokens de identificación contienen atributos de usuario. Los tokens de acceso contienen información sobre el control de acceso de los usuarios: ámbitos de OAuth. Si bien ambos tipos de token contienen información sobre la pertenencia a un grupo, generalmente recomendamos el token de acceso para RBAC con un almacén de políticas de permisos verificados. El token de acceso aumenta la pertenencia a un grupo con alcances que pueden contribuir a la decisión de autorización. Las afirmaciones de un token de acceso pasan a formar parte del contexto de la solicitud de autorización.

También debe configurar los tipos de entidades de usuario y grupo al configurar un grupo de usuarios como fuente de identidad. Los tipos de entidad son identificadores principales, de acciones y de recursos a los que puede hacer referencia en las políticas de permisos verificados. Las entidades de los almacenes de políticas pueden tener una relación de pertenencia, en la que una entidad puede ser miembro de una entidad principal. Con la pertenencia, puede hacer referencia a grupos principales, grupos de acción y grupos de recursos. En el caso de los grupos de usuarios, el tipo de entidad de usuario que especifique debe ser miembro del tipo de entidad del grupo. Al configurar un almacén de políticas vinculado a una API o seguir la configuración guiada en la consola de permisos verificados, el almacén de políticas tiene automáticamente esta relación padre-miembro.

El token de identificación puede combinar el RBAC con el control de acceso basado en atributos (ABAC). Tras crear un almacén de políticas vinculado a una API, puede mejorarlas con los atributos de los usuarios y la pertenencia a grupos. Las afirmaciones de atributos de un token de ID se convierten en los atributos principales de la solicitud de autorización. Sus políticas pueden tomar decisiones de autorización en función de los atributos principales.

También puede configurar un almacén de políticas para que acepte tokens con una aud o una client_id afirmación que coincida con una lista de clientes de aplicaciones aceptables que usted proporcione.

Ejemplo de política para la autorización de API basada en roles

El siguiente ejemplo de política se creó mediante la configuración de un almacén de políticas de permisos verificados para una API REST de PetStoreejemplo.

permit( principal in PetStore::UserGroup::"us-east-1_EXAMPLE|MyGroup", action in [ PetStore::Action::"get /pets", PetStore::Action::"get /pets/{petId}" ], resource );

Verified Permissions devuelve una Allow decisión a la solicitud de autorización de tu aplicación cuando:

  1. Tu aplicación pasó un identificador o un token de acceso en un Authorization encabezado como token portador.

  2. Tu aplicación pasó un token con una cognito:groups afirmación que contiene la cadenaMyGroup.

  3. Su solicitud hizo una HTTP GET solicitud a, por ejemplo, https://myapi.example.com/pets ohttps://myapi.example.com/pets/scrappy.

Política de ejemplo para un usuario de Amazon Cognito

Su grupo de usuarios también puede generar solicitudes de autorización para permisos verificados en condiciones distintas de las solicitudes de API. Puede enviar cualquier decisión de control de acceso de su aplicación a su almacén de políticas. Por ejemplo, puede complementar la seguridad de Amazon DynamoDB o Amazon S3 con un control de acceso basado en atributos antes de que las solicitudes transiten por la red, lo que reduce el uso de la cuota.

El siguiente ejemplo utiliza el Lenguaje de políticas de Cedar para permitir que los usuarios del departamento de Finanzas que se autentiquen con un cliente de aplicación de grupo de usuarios puedan leer y escribir example_image.png. John, un usuario de la aplicación, recibe un token de ID del cliente de la aplicación y lo pasa en una solicitud GET a una URL que requiere autorización, https://example.com/images/example_image.png. El token de ID de John tiene una reclamación aud del ID de cliente de la aplicación de grupo de usuarios 1234567890example. La función de Lambda previa a la generación del token también insertó una nueva reclamación costCenter con un valor, para John, de Finance1234.

permit ( principal, actions in [ExampleCorp::Action::"readFile", "writeFile"], resource == ExampleCorp::Photo::"example_image.png" ) when { principal.aud == "1234567890example" && principal.custom.costCenter like "Finance*" };

El siguiente cuerpo de la solicitud da como resultado una respuesta Allow.

{ "accesstoken": "[John's ID token]", "action": { "actionId": "readFile", "actionType": "Action" }, "resource": { "entityId": "example_image.png", "entityType": "Photo" } }

Cuando desee especificar una entidad principal en una política de Verified Permissions, utilice el siguiente formato:

permit ( principal == [Namespace]::[Entity]::"[user pool ID]"|"[user sub]", action, resource );

A continuación, se muestra un ejemplo principal para un usuario de un grupo de usuarios con un identificador us-east-1_Example con un subidentificador o identificador de usuario. 973db890-092c-49e4-a9d0-912a4c0a20c7

principal == ExampleCorp::User::"us-east-1_Example|973db890-092c-49e4-a9d0-912a4c0a20c7",

Cuando desee especificar un grupo de usuarios en una política de permisos verificados, utilice el siguiente formato:

permit ( principal in [Namespace]::[Group Entity]::"[Group name]", action, resource );

A continuación se muestra un ejemplo

Control de acceso basado en atributos

La autorización con permisos verificados para sus aplicaciones y los atributos para la función de control de acceso de los grupos de identidades de Amazon Cognito para AWS las credenciales son dos formas de control de acceso basado en atributos (ABAC). A continuación, se muestra una comparación de las características de Verified Permissions y Amazon Cognito ABAC. En ABAC, un sistema examina los atributos de una entidad y toma una decisión de autorización a partir de las condiciones que usted defina.

Servicio Proceso Resultado
Amazon Verified Permissions Devuelve una Deny decisión Allow o una decisión obtenida a partir del análisis de un grupo de usuarios (JWT). El acceso a los recursos de la aplicación se realiza correctamente o fracasa según la evaluación de las políticas de Cedar.
Grupos de identidades de Amazon Cognito (atributos para el control de acceso) Asigna etiquetas de sesión a su usuario en función de sus atributos. Las condiciones de la política de IAM pueden comprobar las etiquetas Allow o el acceso Deny de los usuarios. Servicios de AWS Una sesión etiquetada con AWS credenciales temporales para un rol de IAM.