Tutorial: Configurar un dominio con un usuario maestro de IAM y la autenticación de Amazon Cognito - Amazon OpenSearch Service

Tutorial: Configurar un dominio con un usuario maestro de IAM y la autenticación de Amazon Cognito

Este tutorial cubre un caso de uso de habitual de Amazon OpenSearch Service de control de acceso detallado: un usuario maestro de IAM con autenticación de Amazon Cognito para OpenSearch Dashboards.

En el tutorial, configuraremos un rol de IAM maestro y un rol de IAM limitado, que luego asociaremos a los usuarios de Amazon Cognito. A continuación, el usuario maestro puede iniciar sesión en OpenSearch Dashboards, asignar el usuario limitado a un rol y utilizar el control de acceso detallado para limitar los permisos del usuario.

IAM roles and Amazon Cognito integration with OpenSearch Dashboards access control.

Aunque estos pasos utilizan el grupo de usuarios de Amazon Cognito para la autenticación, este mismo proceso básico funciona para cualquier proveedor de autenticación de Cognito que permita asignar diferentes roles de IAM a diferentes usuarios.

En este tutorial, deberá completar los siguientes pasos:

Paso 1: Crear roles de IAM maestros y limitados

Vaya a la consola de AWS Identity and Access Management (IAM) y cree dos roles independientes:

  • MasterUserRole: es el usuario maestro, que tiene permisos completos para el clúster y, además, administra los roles y las asignaciones de los roles.

  • LimitedUserRole: es un rol más restringido, al que concederá acceso limitado como usuario maestro.

Para obtener instrucciones acerca de cómo crear roles, consulte Creación de un rol mediante políticas de confianza personalizadas en la Guía del usuario de IAM.

Ambos roles deben tener la siguiente política de confianza, la cual permite que el grupo de identidades de Cognito asuma los roles:

JSON
{ "Version":"2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "{identity-pool-id}" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } }] }
nota

Reemplace identity-pool-id por el identificador único de su grupo de identidades de Amazon Cognito. Por ejemplo, us-east-1:0c6cdba7-3c3c-443b-a958-fb9feb207aa6.

Paso 2: Crear un dominio con la autenticación de Cognito

Vaya a la consola de Amazon OpenSearch Service en https://console.aws.amazon.com/aos/home/ y cree un dominio con la siguiente configuración:

  • OpenSearch 1.0 o posterior, Elasticsearch 7.8 o posterior

  • Acceso público

  • Control de acceso detallado activado con MasterUserRole como el usuario maestro (creado en el paso anterior)

  • Autenticación de Amazon Cognito para OpenSearch Dashboards habilitada. Para obtener instrucciones sobre cómo habilitar la autenticación de Cognito y seleccionar un grupo de usuarios e identidades, consulte Configuración de un dominio para utilizar la autenticación de Amazon Cognito.

  • La siguiente política de acceso al dominio:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:us-east-1:111122223333:domain/{domain-name}/*" } ] }
  • Se requiere HTTPS para todo el tráfico al dominio

  • Cifrado de nodo a nodo

  • Cifrado de datos en reposo

Paso 3: configurar usuarios de Cognito

Mientras se crea su dominio, configure los usuarios maestros y limitados en Amazon Cognito siguiendo Crear un grupo de usuarios en la Guía para desarrolladores de Amazon Cognito. Por último, configure su grupo de identidades siguiendo los pasos de Crear un grupo de identidades en Amazon Cognito. El grupo de usuarios y el grupo de identidades deben estar en la misma Región de AWS.

Paso 4: Asignar roles en OpenSearch Dashboards

Ahora que sus usuarios están configurados, puede iniciar sesión en OpenSearch Dashboards como usuario maestro y asignar usuarios a roles.

  1. Vuelva a la consola de OpenSearch Service y vaya a la URL de OpenSearch Dashboards para el dominio que creó. La URL tiene este formato: domain-endpoint/_dashboards/.

  2. Inicie sesión con las credenciales de master-user.

  3. Seleccione Agregar datos de muestra y agregue los datos de vuelos de muestra.

  4. En el panel de navegación izquierdo, seleccione Seguridad, Roles, Crear rol.

  5. Llame al rol new-role.

  6. En Índice, especifique opensearch_dashboards_sample_data_fli* (kibana_sample_data_fli* en los dominios de Elasticsearch).

  7. Para obtener Permisos de índice, seleccione leer.

  8. Para Seguridad a nivel del documento, especifique la siguiente consulta:

    { "match": { "FlightDelay": true } }
  9. Para la seguridad a nivel del campo, seleccione Excluir y especifique FlightNum.

  10. Para Anonimización, especifique Dest.

  11. Elija Crear.

  12. Seleccione Usuarios asignados, Administrar mapeo. A continuación, agregue el Nombre de recurso de Amazon (ARN) para LimitedUserRole como una identidad externa y elija Asignar.

  13. Vuelva a la lista de roles y elija opensearch_dashboards_user. Seleccione Usuarios asignados, Administrar mapeo. Agregue el ARN para LimitedUserRole como un rol de backend y elija Mapear.

Paso 5: Probar los permisos

Cuando los roles están asignados de manera correcta, puede iniciar sesión como el usuario limitado y probar los permisos.

  1. En una nueva ventana privada del navegador, vaya a la URL de OpenSearch Dashboards del dominio, inicie sesión con las credenciales del limited-user y, a continuación, seleccione Explorar por mi cuenta.

  2. Vaya a Herramientas para desarrolladores y ejecute la búsqueda predeterminada:

    GET _search { "query": { "match_all": {} } }

    Observe el error de permisos. limited-user no tiene permisos para ejecutar búsquedas en todo el clúster.

  3. Ejecute otra búsqueda:

    GET opensearch_dashboards_sample_data_flights/_search { "query": { "match_all": {} } }

    Tenga en cuenta que todos los documentos coincidentes tienen un campo FlightDelay de true, un campo Dest anonimizado y ningún campo FlightNum.

  4. En la ventana original del navegador, tras haber iniciado sesión como master-user, seleccione Herramientas para desarrolladores y, a continuación, realice las mismas búsquedas. Observe la diferencia en permisos, número de aciertos, documentos coincidentes y campos incluidos.