

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.

# Tutorial: Configurar un dominio con un usuario maestro de IAM y la autenticación de Amazon Cognito
<a name="fgac-iam"></a>

En este tutorial se describe un caso de uso popular de Amazon OpenSearch Service para un [control de acceso detallado](fgac.md): un usuario maestro de IAM con autenticación de Amazon Cognito para paneles de control. OpenSearch 

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 al usuario limitado a un rol y usar un control de acceso detallado para limitar los permisos del usuario.

![\[IAM roles and Amazon Cognito integration with OpenSearch Dashboards access control.\]](http://docs.aws.amazon.com/es_es/opensearch-service/latest/developerguide/images/fgac-cognito.png)


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:

1. [Crear roles de IAM maestros y limitados](#fgac-iam-roles)

1. [Crear un dominio con la autenticación de Cognito](#fgac-iam-domain)

1. [Configurar un grupo de usuarios y grupo de identidades de Cognito](#fgac-iam-cognito)

1. [Asigne funciones en los paneles OpenSearch ](#fgac-iam-dashboards)

1. [Evaluar los permisos](#fgac-iam-test)

## Paso 1: Crear roles de IAM maestros y limitados
<a name="fgac-iam-roles"></a>

Diríjase a la consola AWS Identity and Access Management (IAM) y cree dos funciones distintas:
+ `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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 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
<a name="fgac-iam-domain"></a>

Ve a la consola de Amazon OpenSearch Service en [https://console.aws.amazon.com/aos/casa/](https://console.aws.amazon.com/aos/home/) y [crea un dominio](createupdatedomains.md) con los siguientes ajustes:
+ OpenSearch 1.0 o posterior, o 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 habilitada para los paneles OpenSearch . 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](cognito-auth.md#cognito-auth-config).
+ 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
+ Node-to-node cifrado
+ Cifrado de datos en reposo

## Paso 3: configurar usuarios de Cognito
<a name="fgac-iam-cognito"></a>

Mientras se crea su dominio, configure los usuarios maestros y limitados en Amazon Cognito siguiendo [Crear un grupo de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html) 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](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-with-identity-pools.html#create-identity-pool). El grupo de usuarios y el grupo de identidades deben estar en la misma Región de AWS.

## Paso 4: mapear las funciones en los OpenSearch paneles
<a name="fgac-iam-dashboards"></a>

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

1. Vuelva a la consola OpenSearch de servicio y navegue hasta la URL de los OpenSearch paneles del dominio que creó. La URL tiene este formato: `domain-endpoint/_dashboards/`.

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

1. Seleccione **Agregar datos de muestra** y agregue los datos de vuelos de muestra.

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

1. Llame al rol `new-role`.

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

1. Para obtener **Permisos de índice**, seleccione **leer**.

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

   ```
   {
     "match": {
       "FlightDelay": true
     }
   }
   ```

1. Para la seguridad a nivel del campo, seleccione **Excluir** y especifique `FlightNum`.

1. Para **Anonimización**, especifique `Dest`.

1. Seleccione **Crear**.

1. 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**.

1. Vuelva a la lista de roles y elija **opensearch\$1dashboards\$1user**. Seleccione **Usuarios asignados**, **Administrar mapeo**. Agregue el ARN para `LimitedUserRole` como un rol de backend y elija **Mapear**.

## Paso 5: Probar los permisos
<a name="fgac-iam-test"></a>

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, navegue hasta la URL de OpenSearch Dashboards del dominio, inicie sesión con las `limited-user` credenciales y seleccione **Explorar por mi cuenta**.

1. 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.

1. 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`.

1. 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.