¿Cómo puedo utilizar un túnel SSH para acceder a OpenSearch Dashboards desde fuera de una VPC con autenticación de Amazon Cognito?

Última actualización: 30/09/2021

Mi clúster de Amazon OpenSearch Service se encuentra en una nube virtual privada (VPC). Quiero utilizar un túnel SSH para acceder a OpenSearch Dashboards desde fuera de la VPC con autenticación de Amazon Cognito.

Descripción breve

De forma predeterminada, Amazon Cognito restringe el acceso a OpenSearch Dashboards a los usuarios de AWS Identity and Access Management (IAM) en la VPC. Sin embargo, puede acceder a OpenSearch Dashboards desde fuera de la VPC mediante un túnel SSH.

Importante: Asegúrese de que el acceso a OpenSearch Dashboards (sucesor de Kibana, una herramienta de terceros) desde fuera de la VPC cumpla los requisitos de seguridad de su organización.

Para acceder a Dashboards desde fuera de la VPC mediante un túnel SSH, realice los siguientes pasos:

1.    Cree un grupo de usuarios y un grupo de identidades de Amazon Cognito.

2.    Cree una instancia de Amazon Elastic Compute Cloud (Amazon EC2) en una subred pública de la misma VPC en la que reside el dominio de OpenSearch Service.

3.    Utilice un complemento de navegador, como FoxyProxy, para configurar un proxy SOCKS.

4.    Cree un túnel SSH desde su equipo local hacia la instancia EC2.

Nota: También puede utilizar un proxy NGINX o Client VPN para acceder a Dashboards desde fuera de una VPC con la autenticación de Amazon Cognito. Para obtener más información, consulte ¿Cómo puedo acceder a OpenSearch Dashboards desde fuera de una VPC mediante la autenticación de Amazon Cognito?

5.    (Opcional) Si el control de acceso detallado (FGAC) está habilitado, agregar un rol autenticado de Amazon Cognito.

Resolución

Crear un grupo de usuarios y un grupo de identidades de Amazon Cognito

1.    Cree un grupo de usuarios de Amazon Cognito.

2.    Configure un dominio de grupo de usuarios alojado.

3.    En el panel de navegación de la consola de Amazon Cognito, elija Users and groups (Usuarios y grupos).

4.    Seleccione Create user (Crear un usuario) y, a continuación, complete los campos. Asegúrese de ingresar una dirección de email. A continuación, active la casilla de verificación Mark email as verified (Marcar el email como verificado).

5.    Seleccione la pestaña Groups (Grupos) y, a continuación, elija Create group (Crear un grupo). En Precedence (Prioridad), escriba 0. Para obtener más información, consulte Creación de un grupo nuevo en la consola de administración de AWS.

6.    Vuelva a abrir la consola de Amazon Cognito.

7.    Elija Manage Identity Pools (Administrar grupos de identidades) y, a continuación, elija Create new identity pool (Crear un nuevo grupo de identidades).

8.    Ingrese un nombre para el grupo de identidades, active la casilla de verificación de Enable access to unauthenticated identities (Habilitar el acceso a identidades no autenticadas) y, a continuación, elija Create Pool (Crear un grupo).

9.    Cuando se le solicite acceso a sus recursos de AWS, elija Allow (Permitir) para crear los dos roles predeterminados asociados a su grupo de identidades: uno para los usuarios no autenticados y el otro para los usuarios autenticados.

10.    Configure su dominio de OpenSearch Service para que utilice la autenticación de Amazon Cognito para OpenSearch Dashboards:
En Cognito User Pool (Grupo de usuarios de Cognito), elija el grupo de usuarios que creó en el paso 1.
En Cognito Identity Pool (Grupo de identidades de Cognito), elija el grupo de identidades que creó en el paso 8.

11.    Configure su dominio de OpenSearch Service para que utilice una política de acceso similar a la siguiente. Reemplace los siguientes valores:
account-id por el ID de su cuenta de AWS
identity-name por el nombre de su grupo de identidades de Amazon Cognito
domain-name por el nombre de su dominio
Region por la región en la que reside el dominio, como us-east-1

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::account-id:assumed-role/Cognito_identity-nameAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:Region:account-id:domain/domain-name/*"
    }
  ]
}

Por ejemplo, la siguiente política de acceso utiliza estos valores:

ID de la cuenta de AWS: 111122223333
Nombre del grupo de identidades de Amazon Cognito: MyIdentityPool
Nombre del dominio: MyDomain
Región: us-east-1

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::111122223333:assumed-role/Cognito_MyIdentityPoolAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/MyDomain/*"
    }
  ]
}

Crear una instancia EC2 y configurar reglas de grupos de seguridad

1.    Lance una instancia EC2 en una subred pública de la VPC en la que se encuentra el dominio de OpenSearch Service. En la página Configure Instance Details (Configurar detalles de la instancia), asegúrese de que Auto-assign Public IP (Asignar automáticamente IP pública) esté configurada en Enable (Habilitar).
Nota: En los pasos siguientes, la instancia EC2 se denomina tunnel_ec2.

2.    Agregue reglas de entrada al grupo de seguridad asociado a la instancia tunnel_ec2. Estas reglas deben permitir el tráfico a los puertos 8157 y 22 desde la dirección IP del equipo local que utilizará para acceder al panel de OpenSearch Service.

3.    Agregue una regla de entrada al grupo de seguridad asociado al dominio de OpenSearch Service. Esta regla debe permitir el tráfico desde la dirección IP privada de la instancia tunnel_ec2.

Configurar el proxy SOCKS

1.     Agregue FoxyProxy Standard a Google Chrome.

2.    Abra FoxyProxy y, a continuación, seleccione Options (Opciones).

3.    En la lista desplegable Proxy mode (Modo proxy), seleccione Use proxies based on their pre-defined patterns and priorities (Utilizar proxies basados en los patrones y las prioridades predefinidos).

4.    Seleccione Add New Proxy (Agregar nuevo proxy).

5.    Seleccione la pestaña General (General) e ingrese un Proxy Name (Nombre de proxy), como, por ejemplo, “Proxy de Dashboards”.

6.    En la pestaña Proxy Details (Detalles del proxy), asegúrese de que la opción Manual Proxy Configuration (Configuración manual del proxy) esté seleccionada y, a continuación, complete los siguientes campos:
En Host or IP Address (Alojamiento o dirección IP), ingrese localhost.
En Port (Puerto), escriba 8157.
Seleccione SOCKS proxy (Proxy SOCKS).
Seleccione SOCKS v5.

7.    Seleccione la pestaña URL Patterns (Patrones de URL).

8.    Seleccione Add new pattern (Agregar nuevo patrón) y, a continuación, complete los siguientes campos:
En Pattern Name (Nombre del patrón), ingrese un nombre que le brinde información, como “Punto de enlace de la VPC”.
En URL pattern (Patrón de URL), ingrese el punto de enlace de la VPC para Dashboards. Asegúrese de que la opción Whitelist URLs (URL de la lista blanca) esté seleccionada. Asegúrese de que la opción Wildcards (Comodines) esté seleccionada.

9.     Elija Save (Guardar).

Crear el túnel SSH

1.    Ejecute el siguiente comando desde el equipo local que utilizará para acceder al panel de Dashboards. Reemplace los siguientes valores:
mykeypair.pem: nombre del archivo .pem del par de claves que especificó cuando lanzó la instancia EC2 tunnel_ec2
public_dns_name: el DNS público de la instancia EC2 tunnel_ec2 Para obtener más información, visite Consultar los nombres de alojamiento DNS de su instancia EC2.

ssh -i "mykeypair.pem"  ec2-user@public_dns_name -ND 8157

2.    Ingrese el punto de enlace de Dashboards en su navegador. Aparecerá la página de inicio de sesión de Amazon Cognito para Dashboards.

(Opcional) Si el control de acceso detallado (FGAC) está habilitado, agregar un rol autenticado de Amazon Cognito.

Si el control de acceso detallado (FGAC) está habilitado en el clúster de OpenSearch Service, es posible que se produzca un error de “missing role” (rol en falta). Para resolver el error de “rol en falta”, realice los siguientes pasos:

1.    Inicie sesión en la consola de administración de AWS.

2.    En “Analytics” (Análisis), elija Amazon OpenSearch Service.

3.    Elija Actions (Acciones).

4.    Seleccione Modify master user (Modificar usuario maestro).

5.    Elija Set IAM ARN as your master user (Establecer el ARN de IAM como usuario maestro).

6.    En el campo “IAM ARN” (ARN de IAM), agregue el rol de ARN autenticado de Amazon Cognito.

7.    Elija Submit (Enviar).

Para obtener más información acerca del control de acceso detallado, consulte Tutorial: usuario maestro de IAM y Amazon Cognito.

Amazon OpenSearch Service es el sucesor de Amazon Elasticsearch Service.