Logotipo de Zephyrnet

Cree una federación de identidades SAML para dominios de Amazon OpenSearch Service dentro de una VPC | Servicios web de Amazon

Fecha:

Servicio Amazon OpenSearch es un servicio de búsqueda y análisis totalmente administrado impulsado por la biblioteca de búsqueda Apache Lucene que puede operarse dentro de una nube privada virtual (VPC). Una VPC es una red virtual dedicada a su cuenta de AWS. Está lógicamente aislado de otras redes virtuales en la nube de AWS. Colocar un dominio del Servicio OpenSearch dentro de una VPC permite una comunicación segura entre el Servicio OpenSearch y otros servicios dentro de la VPC sin la necesidad de una puerta de enlace de Internet, un dispositivo NAT o una conexión VPN. Todo el tráfico permanece seguro dentro de la nube de AWS, lo que proporciona un entorno seguro para sus datos. Para conectarse a un dominio del Servicio OpenSearch que se ejecuta dentro de una VPC privada, los clientes empresariales utilizan una de dos opciones disponibles: integrar su VPC con su red empresarial a través de VPN o AWS Direct Connecto hacer que el punto final del clúster sea de acceso público a través de un proxy inverso. Referirse a ¿Cómo puedo acceder a OpenSearch Dashboards desde fuera de una VPC mediante la autenticación de Amazon Cognito? para una evaluación detallada de las opciones disponibles y los pros y los contras correspondientes.

Para gestionar el acceso a los paneles de OpenSearch en entornos de clientes empresariales, OpenSearch Service admite la integración del lenguaje de marcado de afirmación de seguridad (SAML) con los proveedores de identidad (IdP) existentes del cliente para ofrecer inicio de sesión único (SSO). Aunque la integración de SAML para OpenSearch Dashboards de acceso público funciona de forma inmediata, habilitar SAML para OpenSearch Dashboards dentro de una VPC requiere un diseño cuidadoso con varias configuraciones.

Esta publicación describe una solución de un extremo a otro para integrar la autenticación SAML para dominios del servicio OpenSearch que se ejecutan en una VPC. Proporciona una guía de implementación paso a paso y está acompañado de Kit de desarrollo en la nube de AWS (AWS CDK), que automatizan todas las configuraciones necesarias.

Resumen de la solución

El siguiente diagrama describe el flujo de autenticación paso a paso para acceder a un dominio privado del servicio OpenSearch a través de SSO mediante la federación de identidades SAML. El acceso se habilita a través de Internet pública a través de servidores proxy inversos NGINX privados que se ejecutan en Servicio de contenedor elástico de Amazon (Amazon ECS) para alta disponibilidad.

Resumen de la solución

El flujo de trabajo consta de los siguientes pasos:

  1. El usuario navega a la URL de OpenSearch Dashboards en su navegador.
  2. El navegador resuelve la dirección IP del dominio y envía la solicitud.
  3. WAF de AWS Las reglas garantizan que solo se permitan rangos de direcciones IP enumerados.
  4. Application Load Balancer reenvía la solicitud al proxy inverso NGINX.
  5. NGINX agrega los encabezados necesarios y reenvía la solicitud a OpenSearch Dashboards.
  6. OpenSearch Dashboards detecta que la solicitud no está autenticada. Responde con una redirección al IdP SAML integrado para la autenticación.
  7. El usuario es redirigido a la página de inicio de sesión de SSO.
  8. El IdP verifica la identidad del usuario y genera un token de aserción SAML.
  9. El usuario es redirigido nuevamente a la URL de OpenSearch Dashboards.
  10. La solicitud vuelve a realizar los pasos 1 a 5 hasta llegar a OpenSearch. Esta vez, OpenSearch Dashboards detecta la aserción SAML adjunta y permite la solicitud.

En las siguientes secciones, configuramos un proxy inverso NGINX en subredes privadas para proporcionar acceso a OpenSearch Dashboards para un dominio implementado dentro de subredes privadas de VPC. Luego habilitamos la autenticación SAML para OpenSearch Dashboards usando una aplicación SAML 2.0 y usamos un punto final de dominio personalizado para acceder a OpenSearch Dashboards y ver la autenticación SAML en acción.

Requisitos previos

Antes de comenzar, complete los pasos previos de esta sección.

Instalar las herramientas necesarias

Primero, instale AWS CDK. Para obtener más información, consulte la Guía para desarrolladores de AWS CDK v2.

Prepare los recursos de AWS necesarios

Complete los siguientes pasos para configurar sus recursos de AWS:

  1. Cree una cuenta de AWS.
  2. Crear una Ruta del Amazonas 53 zona alojada pública como mydomain.com que se utilizará para enrutar el tráfico de Internet a su dominio. Para obtener instrucciones, consulte Crear una zona hospedada pública.
  3. solicitar una Administrador de certificados de AWS (ACM) certificado público para la zona hospedada. Para obtener instrucciones, consulte Solicitar un certificado público.
  4. Cree una VPC con subredes públicas y privadas.
  5. permitir Centro de identidad de AWS IAM. Para obtener instrucciones, consulte Habilitar el centro de identidad de IAM.

Prepare su clúster de servicio OpenSearch

Esta publicación va acompañada de una aplicación AWS CDK independiente (dominio-opensearch) que implementa un dominio de servicio OpenSearch de muestra en subredes privadas de VPC. El dominio implementado es sólo para fines de demostración y es opcional.

Si tiene un dominio de servicio OpenSearch existente en VPC que desea utilizar para la integración SAML, aplique las siguientes configuraciones:

  1. En Configuración de cluster pestaña, elegir Editar y seleccionar Habilitar punto final personalizado existentes Punto final personalizado .
  2. Nombre de host personalizado, ingrese un nombre de dominio completo (FQDN), como opensearch.mydomain.com, que desea utilizar para acceder a su clúster. Tenga en cuenta que el nombre de dominio del FQDN proporcionado (por ejemplo, mydomain.com) debe ser la misma que la zona alojada pública que creó anteriormente.
  3. Certificado AWS, elija el certificado SSL que creó anteriormente.
  4. En Resumen sección, opcionalmente habilite el análisis de ejecución en seco y seleccione Ejecución en seco o deseleccionarlo y elegir Guardar los cambios.

De lo contrario, descargue el archivo adjunto dominio-opensearch Aplicación AWS CDK y descomprímala. Luego, edite el cdk.json archivo en la raíz de la carpeta descomprimida y configure los parámetros requeridos:

  • vpc_cidr – El bloque CIDR en el que crear la VPC. Puede dejar el valor predeterminado 10.0.0.0/16.
  • opensearch_cluster_name – El nombre del clúster del servicio OpenSearch. Puede dejar el valor predeterminado de opensearch. También se utilizará, junto con el hosted_zone_name parámetro, para crear el FQDN de la URL del dominio personalizado.
  • id_zona_alojada – El ID de la zona alojada pública de la Ruta 53.
  • nombre_zona_alojada – El nombre de la zona alojada pública de la Ruta 53 (por ejemplo, mydomain.com). El FQDN resultante con los valores de ejemplo predeterminados será opensearch.mydomain.com.

Finalmente, ejecute los siguientes comandos para implementar la aplicación AWS CDK:

cd opensearch-domain

# Create a Python environment and install the reuired dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
pip install -r requirements.txt

# Deploy the CDK application
cdk deploy

Una vez implementados los requisitos previos, consulte las siguientes secciones para obtener una guía paso a paso para implementar esta solución.

Crear una aplicación SAML 2.0

Utilizamos IAM Identity Center como fuente de identidad para nuestra integración SAML. La misma configuración debería aplicarse a otros IdP compatibles con SAML 2.0. Consulte la documentación de su IdP.

  1. En la consola de IAM Identity Center, elija Grupos en el panel de navegación.
  2. Crea un nuevo grupo llamado Opensearch Adminy agregarle usuarios.
    Este será el grupo SAML que recibirá permisos completos en OpenSearch Dashboards. Tome nota del ID del grupo.Grupo de administración de OpenSearch
  3. Elige Aplicaciones en el panel de navegación.
  4. Cree una nueva aplicación SAML 2.0 personalizada.Crear aplicación SAML
  5. Descargue el archivo de metadatos SAML de IAM Identity Center para utilizarlo en un paso posterior.Metadatos SAML del Centro de identidad de IAM
  6. URL de inicio de la aplicación, introduzca [Custom Domain URL]/_dashboards/.
    La URL del dominio personalizado se compone del protocolo de comunicación (https://) seguido del FQDN, que utilizó para su clúster de OpenSearch Service en los requisitos previos (por ejemplo, https://opensearch.mydomain.com). Si tiene dudas, consulte las configuraciones del clúster del servicio OpenSearch.
  7. URL ACS de la aplicación, introduzca [Custom Domain URL]/_dashboards/_opendistro/_security/saml/acs.
  8. Audiencia SAML de la aplicación, introduzca [Custom Domain URL] (sin ninguna barra al final).
    Propiedades SAML del dominio OpenSearch
  9. Elige Enviar.
  10. En Usuarios asignados sección, seleccionar Administrador de búsqueda abierta y elige Asignar usuarios.Asignar grupo de administración a la aplicación SAML
  11. En Acciones menú, seleccione Editar asignaciones de atributos.Editar la asignación de atributos de la aplicación SAML
  12. Defina asignaciones de atributos como se muestra en la siguiente captura de pantalla y elija Guardar los cambios.Configurar las asignaciones de atributos de la aplicación SAML

Implemente la aplicación AWS CDK

Complete los siguientes pasos para implementar la aplicación AWS CDK:

  1. Descargue y descomprima el integración-saml-dominio-opensearch Aplicación AWS CDK.
  2. Agregue su clave SSL privada y su certificado a Director de secretos de AWS y crear dos secretos , que son Key y Crt. Por ejemplo, vea el siguiente código:
    KEY=$(cat private.key | base64) && aws secretsmanager create-secret --name Key --secret-string $KEY
    CRT=$(cat certificate.crt | base64) && aws secretsmanager create-secret --name Crt --secret-string $CRT

    Puede utilizar el siguiente comando para generar un certificado autofirmado. Esto es sólo para pruebas; No utilice esto para entornos de producción.

    openssl req -new -newkey rsa:4096 -days 1095 -nodes -x509 -subj '/' -keyout private.key -out certificate.crt

  3. Editar el cdk.json archivo y establezca los parámetros requeridos dentro del archivo anidado config :
  • región_aws – La región de AWS de destino para su implementación (por ejemplo, eu-central-1).
  • vpc_id – El ID de la VPC en la que se implementó el dominio del servicio OpenSearch.
  • opensearch_cluster_security_group_id – El ID del grupo de seguridad utilizado por el dominio del Servicio OpenSearch o cualquier otro grupo de seguridad que permita conexiones entrantes a ese dominio en los puertos 80 y 443. El Balanceador de carga de aplicaciones utilizará este ID de grupo para reenviar el tráfico a su dominio del Servicio OpenSearch. .
  • id_zona_alojada – El ID de la zona alojada pública de la Ruta 53.
  • zona_alojada – El nombre de la zona alojada pública de la Ruta 53 (por ejemplo, mydomain.com).
  • opensearch_nombre_dominio_personalizado – Un FQDN como opensearch.mydomain.com, que desea utilizar para acceder a su clúster. Tenga en cuenta que el nombre de dominio del FQDN proporcionado (mydomain.com) debe ser el mismo que el hosted_zone parámetro.
  • opensearch_custom_domain_certificate_arn – El ARN del certificado almacenado en ACM.
  • opensearch_domain_endpoint – El punto final del dominio de la VPC del servicio OpenSearch (por ejemplo, vpc-opensearch-abc123.eu-central-1.es.amazonaws.com).
  • vpc_dns_resolver – Debe ser 10.0.0. si su VPC CIDR es 10.0.0.0/16. Ver Servidor DNS de Amazon para más información.
  • alb_waf_ip_whitelist_cidrs – Esta es una lista opcional de cero o más rangos de CIDR de IP que se permitirán automáticamente en AWS WAF para permitir el acceso al dominio del servicio OpenSearch. Si no se especifica, después de la implementación deberá agregar manualmente rangos CIDR de IP relevantes al conjunto de IP de AWS WAF para permitir el acceso. Por ejemplo, ["1.2.3.4/32", "5.6.7.0/24"].
  1. Implemente la aplicación AWS CDK de integración SAML del dominio del servicio OpenSearch:
    cd opensearch-domain-saml-integration
    
    # Create a Python environment and install the required dependencies
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements-dev.txt
    pip install -r requirements.txt
    
    # Deploy the CDK application
    cdk deploy

Habilite la autenticación SAML para su clúster del servicio OpenSearch

Cuando se complete la implementación de la aplicación, habilite la autenticación SAML para su clúster:

  1. En la consola del servicio OpenSearch, navegue hasta su dominio.
  2. En Configuración de seguridad pestaña, elegir Editar.Habilite la autenticación SAML para el dominio OpenSearch
  3. Seleccione Habilitar la autenticación SAML.
  4. Elige Importar desde archivo XML e importe el archivo de metadatos SAML de IAM Identity Center que descargó en un paso anterior.
  5. Rol de back-end maestro de SAML, utilice el ID de grupo que guardó anteriormente.
  6. Ampliar la opción Ajustes adicionales sección y para Roles, ingrese el nombre del atributo SAML 2.0 que asignó anteriormente cuando creó la aplicación SAML 2.0 en AWS Identity Center.
  7. Configurar la política de acceso al dominio para la integración SAML.
  8. Envíe los cambios y espere a que OpenSearch Service aplique las configuraciones antes de continuar con la siguiente sección.

Prueba la solución

Complete los siguientes pasos para ver la solución en acción:

  1. En la consola de IAM Identity Center, elija Panel De Control en el panel de navegación.
  2. En Resumen de configuraciones sección, elija el enlace debajo URL del portal de acceso de AWS.Inicie sesión en el Centro de identidad de IAM
  3. Inicie sesión con su nombre de usuario y contraseña (registre su contraseña si este es su primer inicio de sesión).
    Si su cuenta se agregó correctamente al grupo de administración, se verá un logotipo de la aplicación SAML.
  4. Elige Aplicación SAML 2.0 personalizada para ser redirigido a los paneles del servicio OpenSearch a través de SSO sin ningún intento de inicio de sesión adicional.Abrir aplicación SAML
    Alternativamente, puede omitir el inicio de sesión en el portal de acceso y apuntar directamente su navegador a la URL de OpenSearch Dashboards. En ese caso, OpenSearch Dashboards primero lo redirigirá al portal de acceso para iniciar sesión, lo que lo redirigirá nuevamente a la interfaz de usuario de OpenSearch Dashboards después de iniciar sesión correctamente, lo que producirá el mismo resultado que se muestra en la siguiente captura de pantalla.Interfaz de usuario de OpenSearch Dashboards después de iniciar sesión correctamente

Solucionando Problemas

Su IP pública debe estar permitida según la regla AWS WAF; de lo contrario, se devolverá un error 403 Prohibido. Permitir enumerar su rango CIDR de IP a través de AWS CDK alb_waf_ip_whitelist_cidrs propiedad como se describe en la guía de instalación y vuelva a implementar la aplicación AWS CDK para que los cambios surtan efecto.

Limpiar

Cuando haya terminado con esta configuración, limpie los recursos para evitar cargos futuros.

  1. En la consola del servicio OpenSearch, navegue hasta el Configuración de seguridad pestaña de su dominio de servicio OpenSearch y elija Editar.
  2. Deseleccionar Habilitar la autenticación SAML y elige Guardar los cambios.
  3. Una vez deshabilitada la integración de Amazon SAML, elimine el opensearch-domain-saml-integration apilar usando cdk destroy.
  4. Opcionalmente, si utilizó la pila AWS CDK de muestra del servicio OpenSearch proporcionada (opensearch-domain), elimínelo usando cdk destroy.

Conclusión

OpenSearch Service permite a los clientes empresariales utilizar sus IdP federados preferidos, como SAML, utilizando IAM Identity Center para clústeres que se ejecutan dentro de subredes privadas de VPC siguiendo las mejores prácticas de AWS.

En esta publicación, le mostramos cómo integrar un dominio de servicio OpenSearch dentro de una VPC con un IdP SAML existente para acceso SSO a OpenSearch Dashboards mediante IAM Identity Center. La solución proporcionada administra de forma segura el acceso de la red a los recursos mediante AWS WAF para restringir el acceso solo a segmentos de red autorizados o direcciones IP específicas.

Para comenzar, consulte ¿Cómo puedo acceder a OpenSearch Dashboards desde fuera de una VPC mediante la autenticación de Amazon Cognito? para una mayor comparación del dominio del servicio OpenSearch en patrones de acceso a VPC privada.


Acerca de los autores

Mahdi Ebrahimi es arquitecto senior de infraestructura de nube en Amazon Web Services. Se destaca en el diseño de sistemas de software distribuidos y de alta disponibilidad. Mahdi se dedica a ofrecer soluciones de vanguardia que permitan a sus clientes innovar en el panorama en rápida evolución de la industria automotriz.

Dmytro Protsiv es un arquitecto de aplicaciones en la nube para Amazon Web Services. Le apasiona ayudar a los clientes a resolver sus desafíos comerciales en torno a la modernización de aplicaciones.

Luca Menichetti es un arquitecto de Big Data en Amazon Web Services. Ayuda a los clientes a desarrollar soluciones eficientes y reutilizables para procesar datos a escala. A Luca le apasiona gestionar la arquitectura de datos de las organizaciones, permitiendo el análisis de datos y el aprendizaje automático. Habiendo trabajado en el ecosistema Hadoop durante una década, realmente disfruta abordando problemas en entornos NoSQL.

Krithivasan Balasubramaniyan es consultor principal de Amazon Web Services. Ayuda a los clientes empresariales globales en su viaje de transformación digital y ayuda a diseñar soluciones nativas en la nube.

Muthu Pitchaimani es un especialista en búsquedas de Amazon OpenSearch Service. Construye aplicaciones y soluciones de búsqueda a gran escala. Muthu está interesado en los temas de redes y seguridad, y tiene su sede en Austin, Texas.

punto_img

Información más reciente

punto_img