Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
¿Cómo uso un proxy de NGINX para acceder a los paneles de OpenSearch con la autenticación de Amazon Cognito desde fuera de una VPC?
Mi dominio de Amazon OpenSearch Service está en una nube virtual privada (VPC). Quiero usar un proxy de NGINX para acceder a los paneles de OpenSearch con la autenticación de Amazon Cognito desde fuera de la VPC.
Descripción corta
Utiliza NGINX para configurar una instancia de Amazon Elastic Compute Cloud (Amazon EC2) como servidor proxy. A continuación, el servidor proxy reenvía las solicitudes del navegador a los paneles de Cognito y OpenSearch.
Nota: La siguiente resolución solo funciona para los usuarios nativos de Cognito.
También puedes usar un túnel SSH o una VPN de cliente para acceder a los paneles de OpenSearch desde fuera de una VPC con la autenticación de Cognito. Para obtener más información, consulta ¿Cómo puedo usar la autenticación de Amazon Cognito para acceder a los paneles de OpenSearch desde fuera de una VPC?
Resolución
Importante: Cuando restringes el acceso a los usuarios de tu VPC, el dominio de OpenSearch Service es más seguro. Antes de continuar, asegúrate de que esta resolución se ajusta a los requisitos de seguridad de tu organización.
Creación de un grupo de usuarios y un grupo de identidades de Cognito
Sigue estos pasos:
-
Crea un grupo de usuarios de Cognito. Configura los siguientes ajustes:
En Tipo de aplicación, elige ** Aplicación web tradicional**.
En Asigna un nombre a tu aplicación, introduce un nombre de aplicación personalizado o mantén el nombre predeterminado.
En Opciones para los identificadores de inicio de sesión, elige Nombre de usuario.
En Atributos obligatorios para el registro, selecciona Correo electrónico. -
Abre la consola de Cognito.
-
En el panel de navegación, elige Grupos de usuarios.
-
Selecciona tu grupo de usuarios y, a continuación, configura las siguientes opciones:
En el panel de navegación, en Marca, elige Inicio de sesión administrado.
En el caso de los dominios con marca de inicio de sesión administrado, selecciona Actualizar versión.
En Versión de la marca, elige Interfaz de usuario alojada (clásica). -
Crea un grupo de identidades de Cognito. Configura los siguientes ajustes:
En Acceso de usuario, elige Acceso autenticado.
En Orígenes de identidad autenticados, introduce el grupo de usuarios de Amazon Cognito.
En Rol de IAM, elige Crear un nuevo rol de IAM y, a continuación, introduce un nombre de rol.
En Detalles del grupo de usuarios, selecciona tu ID de grupo de usuarios y, a continuación, elige el ID de cliente de la aplicación.
En Configuración del rol, elige Usar el rol autenticado predeterminado.
En Asignación de reclamaciones, selecciona Inactivo. -
Configura tu dominio de OpenSearch Service para usar la autenticación de Cognito. Configura los siguientes ajustes:
En Grupo de usuarios de Cognito, selecciona tu grupo de usuarios.
En Grupo de identidades de Cognito, selecciona tu grupo de identidades. -
En la política de acceso al dominio, introduce la siguiente política de acceso:
{ "Version": "2012-10-17", "Statement": \[ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/service-role/identitypool-role" }, "Action": "es:\*", "Resource": "arn:aws:es:region:account-id:domain/domain-name/\*" } \] }Nota: Sustituye account-id por el ID de tu cuenta de AWS e identitypool-role por el nombre de tu rol en el grupo de identidades. Sustituye el domain-name por tu dominio de OpenSearch Service y region por la región de AWS de tu dominio.
Configuración del proxy NGINX
Nota: La siguiente configuración se aplica a una imagen de máquina de Amazon (AMI) en Amazon Linux 2023. Si usas una AMI diferente, es posible que tengas que ajustar la configuración.
Sigue estos pasos:
-
Inicia una instancia de EC2 en la subred pública de la VPC en la que se encuentra tu dominio de OpenSearch Service. La instancia debe usar el mismo grupo de seguridad que tu dominio.
-
(Opcional) Si no usas un entorno de prueba, asigna una dirección IP elástica para asociarla a tu instancia de EC2.
-
(Opcional) Si no usas un entorno de prueba, configura tu DNS para resolver las solicitudes a la dirección IP elástica. Para obtener más información sobre cómo resolver solicitudes con Amazon Route 53, consulta Configuración de Amazon Route 53 para enrutar el tráfico a una instancia de Amazon EC2.
-
Ejecuta el siguiente comando para conectarte a tu instancia e instalar NGINX:
sudo yum updatesudo yum install nginx -y -
Obtén un certificado SSL de una autoridad de certificación (CA).
Nota: Si usas un entorno de prueba, genera un certificado autofirmado en su lugar. En tu entorno de producción, se recomienda utilizar los certificados SSL firmados por una autoridad de certificación externa. -
(Opcional) Si usas un entorno de prueba con un certificado autofirmado, ejecuta el comando OpenSSL x509 para generar una clave privada:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/cert.key -out /etc/nginx/cert.crtPara obtener más información, consulta x509 en el sitio web de OpenSSL.
Nota: El comando anterior genera el archivo cert.key, que es una clave privada para el certificado SSL autofirmado. -
Navega hasta el directorio /etc/nginx/conf.d y, a continuación, crea un archivo denominado default.conf.
-
Modifica el archivo default.conf con los valores siguientes:
En /etc/nginx/cert.crt, introduce la ruta del certificado SSL.
En /etc/nginx/cert.key, introduce la ruta de acceso a la clave privada que has generado para el certificado SSL.
En my_domain_host, introduce tu punto de enlace de OpenSearch Service.
En my_cognito_host, introduce el dominio de tu grupo de usuarios de Amazon Cognito.
Importante: Debes usar HTTPS.
Si tu dominio de Amazon OpenSearch Service ejecuta la versión 1.0 o posterior de OpenSearch Service, utiliza el punto de enlace _dashboards.
Si tu dominio de Amazon OpenSearch Service ejecuta las versiones 5.x-7.x de Elasticsearch, utiliza el punto de enlace _plugin/kibana.Nota: El valor de resolución cambia según la configuración de la VPC. Usa el solucionador de DNS en la dirección IP base de tu bloque de CIDR principal más dos. Por ejemplo, si creas una VPC con el bloque de CIDR 10.0.0.0/24, la resolución de DNS se encuentra en 10.0.0.2.
Ejemplo de archivo default.conf:
server { listen 443 ssl; server_name host; rewrite ^/$ https://host/_dashboards redirect; resolver 10.0.0.2 ipv6=off valid=5s; set domain_endpoint my_domain_host; set cognito_host my_cognito_host; ssl_certificate /etc/nginx/cert.crt; ssl_certificate_key /etc/nginx/cert.key; # ssl on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; location ^~ /_dashboards { # Forward requests to Dashboards proxy_pass https://domain_endpoint; # Handle redirects to Cognito proxy_redirect https://cognito_host https://host; # Handle redirects to Dashboards proxy_redirect https://domain_endpoint https://host; # Update cookie domain and path proxy_cookie_domain domain_endpoint host; proxy_cookie_path ~*^/$ /_dashboards/; # Response buffer settings proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } location ~ \/(log|sign|fav|forgot|change|saml|oauth2|confirm) { # Forward requests to Cognito proxy_pass https://cognito_host; # Handle redirects to Dashboards proxy_redirect https://domain_endpoint https://host; # Handle redirects to Cognito proxy_redirect https://cognito_host https://host; proxy_cookie_domain cognito_host host; } } -
(Opcional) Para asignar my_domain_host y my_cognito_host como variables, ejecuta el comando sed:
sudo sed -i 's/my_domain_host/vpc-cognito-private-xxxxxxxxxx.us-east-1.es.amazonaws.com/' /etc/nginx/conf.d/default.confsudo sed -i 's/my_cognito_host/domain-xxxxxxx.auth.us-east-1.amazoncognito.com/' /etc/nginx/conf.d/default.confNota: Si ejecutas el comando anterior, no tendrás que sustituir my_domain_host y my_cognito_host en el archivo /etc/nginx/conf.d/default.conf.
-
Ejecuta el siguiente comando para activar e iniciar NGINX:
sudo systemctl enable nginx && sudo systemctl start nginx
Acceso a Paneles de OpenSearch
Sigue estos pasos:
- Utiliza tu navegador para abrir la dirección IP de NGINX o el nombre DNS que te redirige a la página de inicio de sesión de Cognito.
- Introduce tu nombre de usuario y contraseña temporal para iniciar sesión en Paneles de OpenSearch.
- Cuando se te pida, cambia la contraseña y vuelve a iniciar sesión.
- Temas
- Analytics
- Etiquetas
- Amazon OpenSearch Service
- Idioma
- Español
Vídeos relacionados


Contenido relevante
- preguntada hace 10 meses
- preguntada hace un año
- preguntada hace un mes