Habilitar la federación SAML con AWS Identity and Access Management - Amazon OpenSearch Service

Habilitar la federación SAML con AWS Identity and Access Management

OpenSearch UI admite la federación de identidades con SAML 2.0, un estándar abierto que utilizan muchos proveedores de identidad (IdP). Esto permite la federación de identidades con (IAM) AWS Identity and Access Management. Con este soporte, los usuarios de su cuenta u organización pueden acceder directamente a OpenSearch UI asumiendo roles de IAM. Puede crear una experiencia de inicio de sesión único iniciada por el proveedor de identidad (IdP) para sus usuarios finales, en la que puedan autenticarse en el proveedor de identidad externo y ser redirigidos directamente a la página definida en OpenSearch UI. También puede implementar un control de acceso detallado si configura sus usuarios finales o grupos para que asuman diferentes roles de IAM con distintos permisos de acceso a OpenSearch UI y a los orígenes de datos asociados.

En este tema se muestran instrucciones paso a paso para configurar el uso de SAML con OpenSearch UI. En estos procedimientos, utilizamos como ejemplo los pasos para configurar la aplicación de administración de identidades y accesos de Okta. Los pasos de configuración para otros proveedores de identidad, como Azure Active Directory y Ping, son similares.

Paso 1: Configurar la aplicación de proveedor de identidades (Okta)

Para usar SAML con OpenSearch UI, el primer paso es configurar el proveedor de identidad.

Tarea 1: creación de usuarios de Okta
  1. Inicie sesión en su organización de Okta en https://login.okta.com/ como usuario con privilegios administrativos.

  2. En la consola de administración, en Directorio, en el panel de navegación, selecciona Personas.

  3. Elija Agregar persona.

  4. En Nombre, introduzca el nombre del usuario.

  5. En Apellido, introduzca el apellido del usuario.

  6. En Usuario, introduzca el nombre de usuario del usuario en formato de correo electrónico.

  7. Elija Estableceré la contraseña e introduzca una contraseña

  8. (Opcional) Desactive la casilla El usuario debe cambiar la contraseña la primera vez que inicie sesión si no desea que el usuario cambie la contraseña la primera vez que inicie sesión.

  9. Seleccione Save.

Tarea 2: crear y asignar grupos
  1. Inicie sesión en su organización de Okta en https://login.okta.com/ como usuario con privilegios administrativos.

  2. En el panel de navegación de Okta, seleccione Directorio y, a continuación, Grupos.

  3. Elija Agregar grupo.

  4. Escriba un nombre y elija Crear grupo de registros.

  5. Elija el grupo recién creado y, a continuación, seleccione Asignar personas.

  6. Seleccione el signo más (+) y, a continuación, seleccione Listo.

  7. (Opcional) Repita los pasos 1 a 6 para agregar más grupos.

Tarea 3: Crear aplicaciones de Okta
  1. Inicie sesión en su organización de Okta en https://login.okta.com/ como usuario con privilegios administrativos.

  2. En la consola de administración, en Aplicaciones, en el panel de navegación, seleccione Aplicaciones.

  3. Elija Crear integración de aplicaciones.

  4. Elija SAML 2.0 como método de inicio de sesión y, a continuación, seleccione Siguiente.

  5. Escriba un nombre para su grupo (por ejemplo, OpenSearch_UI) y elija Siguiente.

  6. Introduzca los siguientes valores en la aplicación; no es necesario que cambie otros valores:

    1. 1. En el caso de la URL de inicio de sesión única, introduzca https://signin.aws.amazon.com/saml para las regiones comerciales de AWS o la URL específica de su región.

    2. 2. Para URI de audiencia (ID de entidad del SP), introduzca urn:amazon:webservices.

    3. 3. En Formato de nombre, ingrese EmailAddress.

  7. Elija Siguiente.

  8. Seleccione Soy cliente de Okta y agrego una aplicación interna y, a continuación, seleccione Esta es una aplicación interna que hemos creado.

  9. Seleccione Finalizar.

  10. Elija Asignar y, luego, elija Asignar a personas.

  11. Seleccione Asignar a grupos y, a continuación, seleccione Asignar junto a los grupos que desee agregar.

  12. Seleccione Listo.

Tarea 4: Configurar la configuración avanzada de Okta

Después de crear la aplicación SAML personalizada, complete los pasos siguientes:

  1. Inicie sesión en su organización de Okta en https://login.okta.com/ como usuario con privilegios administrativos.

    En la consola de administración, en el área General, seleccione Editar en la configuración de SAML.

  2. Elija Siguiente.

  3. Defina Estado de retransmisión predeterminado en el punto de conexión de OpenSearch UI con el siguiente formato:

    https://region.console.aws.amazon.com/aos/home?region=region#opensearch/applications/application-id/redirectToDashboardURL.

    A continuación, se muestra un ejemplo:

    https://us-east-2.console.aws.amazon.com/aos/home?region=us-east-2#opensearch/applications/abc123def4567EXAMPLE/redirectToDashboardURL

  4. En Instrucciones de atributo de grupo (opcional), agregue el siguiente atributo:

    1. Proporcione el rol de IAM y el proveedor de identidad en un formato separado por comas mediante el atributo Role. Utilizará este mismo rol de IAM y proveedor de identidad en un paso posterior al configurar la configuración AWS.

    2. Defina user.login como RoleSessionName. Se utiliza como identificador para las credenciales temporales que se emiten cuando se asume el rol.

    De referencia:

    Nombre Formatos de nombre Formato Ejemplo

    https://aws.amazon.com/SAML/Attributes/Role

    Sin especificar

    arn:aws:iam::aws-account-id:role/role-name,arn:aws:iam::aws-account-id:saml-provider/provider-name

    arn:aws:iam::111222333444:role/oktarole,arn:aws:iam::111222333444:saml-provider/oktaidp

    https://aws.amazon.com/SAML/Attributes/RoleSessionName

    Sin especificar

    user.login

    user.login

  5. Tras agregar las propiedades del atributo, elija Siguiente y, a continuación, elija Finalizar.

Los atributos deben tener un formato similar al que se muestra en la siguiente imagen. El valor de estado de retransmisión predeterminado es la URL que define la página de destino para los usuarios finales de su cuenta u organización una vez que hayan completado la validación del inicio de sesión único desde Okta. Puede configurarlo en cualquier página de OpenSearch UI y, a continuación, proporcionar esa URL a los usuarios finales previstos.

El área “SAML 2.0” muestra la URL de estado de retransmisión y la URL de metadatos predeterminadas de una aplicación.

Paso 2: Configurar AWS para Okta

Complete las siguientes tareas para la configuración de AWS para Okta.

Tarea 1: recopile información de Okta

Para este paso, tendrá que recopilar su información de Okta para poder configurarla más adelante en AWS.

  1. Inicie sesión en su organización de Okta en https://login.okta.com/ como usuario con privilegios administrativos.

  2. En la pestaña Iniciar sesión, en la esquina inferior derecha de la página, seleccione Ver las instrucciones de configuración de SAML.

  3. Copie o almacene el valor para URL de inicio de sesión único del proveedor de identidades. Puede usar esta URL cuando se conecte a cualquier cliente SQL de terceros, como SQL Workbench/J.

  4. Utilice los metadatos del proveedor de identidad del bloque 4 y, a continuación, guarde el archivo de metadatos en formato.xml (por ejemplo, metadata.xml).

Tarea 2: Crear el proveedor de IAM

Para crear su proveedor de IAM, complete los siguientes pasos.

  1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, elija Proveedores de identidad en Administración de acceso.

  3. Elija Agregar proveedor.

  4. Para Tipo de proveedor: seleccione SAML.

  5. En Nombre del proveedor, escriba un nombre.

  6. Para el documento de metadatos, elija Elegir archivo y cargue el archivo de metadatos (.xml) que descargó anteriormente.

  7. Elija Agregar proveedor.

Tarea 3: Creación de un rol de IAM

Para crear su primer rol AWS Identity and Access Management, siga los pasos que se describen a continuación.

  1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, en Administración del acceso, elija Roles.

  3. Seleccione Crear rol.

  4. En Tipo de entidad de confianza, seleccione Federación SAML 2.0.

  5. En el proveedor basado en SAML 2.0, elija el proveedor de identidades que ha creado en IAM.

  6. Seleccione Permitir acceso mediante programación y mediante la Consola de administración de AWS.

  7. Elija Siguiente.

  8. En la lista de políticas de permisos, active las casillas de verificación de la política que creó anteriormente y de OpenSearchFullAccess.

  9. Elija Siguiente.

  10. En la sección Revisar, en Nombre de rol, escriba un nombre para el rol (por ejemplo, oktarole).

  11. (Opcional) En Descripción de imagen, ingrese una breve descripción del propósito del rol.

  12. Seleccione Crear rol.

  13. Vaya al rol que acaba de crear, seleccione la pestaña Relaciones de confianza y, a continuación, elija Editar política de confianza.

  14. En el panel Editar declaración, en Agregar acciones para STS, active la casilla TagSession.

  15. Elija Actualizar política.

Paso 3: Creación de la política de acceso de Amazon OpenSearch Service en IAM

Aprenda a configurar sus funciones de IAM para el control de acceso de OpenSearch. Con los roles de IAM, puede implementar un control de acceso detallado para que sus grupos de usuarios de Okta accedan a los recursos de OpenSearch. En este tema, se muestra la configuración basada en roles de IAM mediante dos grupos de ejemplo.

Sample group: Alice

Solicitud:

GET _plugins/_security/api/roles/alice-group

Resultado:

{ "alice-group": { "reserved": false, "hidden": false, "cluster_permissions": [ "unlimited" ], "index_permissions": [ { "index_patterns": [ "alice*" ], "dls": "", "fls": [], "masked_fields": [], "allowed_actions": [ "indices_all" ] } ], "tenant_permissions": [ { "tenant_patterns": [ "global_tenant" ], "allowed_actions": [ "kibana_all_write" ] } ], "static": false } }
Sample group: Bob

Solicitud:

GET _plugins/_security/api/roles/bob-group

Resultado:

{ "bob-group": { "reserved": false, "hidden": false, "cluster_permissions": [ "unlimited" ], "index_permissions": [ { "index_patterns": [ "bob*" ], "dls": "", "fls": [], "masked_fields": [], "allowed_actions": [ "indices_all" ] } ], "tenant_permissions": [ { "tenant_patterns": [ "global_tenant" ], "allowed_actions": [ "kibana_all_write" ] } ], "static": false } }

Puede asignar las funciones de dominio de Amazon OpenSearch Service a las funciones de IAM mediante la asignación de funciones de backend, como se muestra en el siguiente ejemplo:

{ "bob-group": { "hosts": [], "users": [], "reserved": false, "hidden": false, "backend_roles": [ "arn:aws:iam::111222333444:role/bob-group" ], "and_backend_roles": [] }, "alice-group": { "hosts": [], "users": [], "reserved": false, "hidden": false, "backend_roles": [ "arn:aws:iam::111222333444:role/alice-group" ], "and_backend_roles": [] } }

Paso 4: Compruebe la experiencia de inicio de sesión único iniciada por el proveedor de identidad con SAML

Abra la URL del estado de retransmisión predeterminado para abrir la página de autenticación de Okta. Introduzca las credenciales de SC-end-user. Se lo redirigirá automáticamente a OpenSearch UI.

Para comprobar sus credenciales actuales, seleccione el ícono de usuario situado en la parte inferior del panel de navegación, como se muestra en la siguiente imagen:

Al seleccionar el ícono de usuario en la página “Configuración y ajustes” de Okta, se muestran las credenciales del usuario actual.

También puede verificar los permisos de control de acceso detallados del usuario accediendo a las herramientas para desarrolladores en la parte inferior del panel de navegación y ejecutando consultas en la consola. A continuación, se muestran algunas consultas de ejemplo:

Example 1: Displays information about the current user

Solicitud:

GET _plugins/_security/api/account

Resultado:

{ "user_name": "arn:aws:iam::XXXXXXXXXXXX:role/bob-group", "is_reserved": false, "is_hidden": false, "is_internal_user": false, "user_requested_tenant": null, "backend_roles": [ "arn:aws:iam::XXXXXXXXXXXX:role/bob-group" ], "custom_attribute_names": [], "tenants": { "global_tenant": true, "arn:aws:iam::XXXXXXXXXXXX:role/bob-group": true }, "roles": [ "bob-group" ] }
Example 2: Displays actions permitted for a user

Solicitud:

GET bob-test/_search

Resultado:

{ "took": 390, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "bob-test", "_id": "ui01N5UBCIHpjO8Jlvfy", "_score": 1, "_source": { "title": "Your Name", "year": "2016" } } ] } }
Example 3: Displays actions not permitted for a user

Solicitud:

GET alice-test

Resultado:

{ "error": { "root_cause": [ { "type": "security_exception", "reason": "no permissions for [indices:admin/get] and User [name=arn:aws:iam::111222333444:role/bob-group, backend_roles=[arn:aws:iam::111222333444:role/bob-group], requestedTenant=null]" } ], "type": "security_exception", "reason": "no permissions for [indices:admin/get] and User [name=arn:aws:iam::111222333444:role/bob-group, backend_roles=[arn:aws:iam::111222333444:role/bob-group], requestedTenant=null]" }, "status": 403 }

Paso 5: Configuración del control de acceso detallado basado en atributos de SAML

Con Amazon OpenSearch Service, puede utilizar un control de acceso detallado con SAML para asignar los usuarios y grupos de su proveedor de identidad a los usuarios y roles de control de acceso detallados de OpenSearch de forma dinámica. Puede asignar estas funciones a dominios específicos de OpenSearch y colecciones sin servidor y definir los permisos a nivel de índice y la seguridad a nivel de los documentos.

nota

Para obtener más información, consulte Enabling fine-grained access control, lea Control de acceso detallado en Amazon OpenSearch Service.

Atributos SAML para el control de acceso preciso

subjectKey

Se asigna a un atributo de usuario único, como el correo electrónico o el nombre de usuario, que identifica al usuario para la autenticación.

rolesKey

Se asigna a los atributos de grupo o rol de su IdP que determinan los roles o permisos de autorización.

Tarea 1: Configuración de Okta para el control de acceso preciso

Para configurar Okta para el control de acceso preciso
  1. Agregue un nuevo atributo para la entidad principal de usuario de OpenSearch en la sección Instrucciones de atributos:

    • Nombre: UserName

    • Valor: ${user-email}

    Este atributo se utiliza como clave de asunto en la configuración detallada de control de acceso de OpenSearch para la autenticación.

  2. Agregue un atributo de grupo para los roles en la sección sentencia de atributos de grupo:

    • Nombre: groups

    • Filtro: OpenSearch_xxx

    Este atributo se utiliza como clave de función para asignar grupos a funciones de control de acceso específicas de OpenSearch para su autorización.

Tarea 2: Configurar SAML en el dominio de OpenSearch

Para configurar SAML en el dominio OpenSearch
  1. En la Consola de administración de AWS, identifique el dominio de OpenSearch Service para el que desea habilitar un control de acceso detallado destinado a los usuarios de OpenSearch UI.

  2. Vaya a la página de detalles del dominio específico.

  3. Seleccione la pestaña de configuración de seguridad y haga clic en Editar.

  4. Amplíe SAML mediante IAM Federate.

  5. Introduzca el subjectKey y roleKey que definió en Okta.

  6. Seleccione Guardar cambios.

También puede configurar un control de acceso detallado mediante AWS CLI.

aws opensearch create-domain \ --domain-name testDomain \ --engine-version OpenSearch_1.3 \ --cluster-config InstanceType=r5.xlarge.search,InstanceCount=1,DedicatedMasterEnabled=false,ZoneAwarenessEnabled=false,WarmEnabled=false \ --access-policies '{"Version": "2012-10-17", "Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:*","Resource":"arn:aws:es:us-east-1:12345678901:domain/neosaml10/*"}]}' \ --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \ --node-to-node-encryption-options '{"Enabled":true}' \ --encryption-at-rest-options '{"Enabled":true}' \ --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \ --ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \ --no-verify-ssl \ --endpoint-url https://es.us-east-1.amazonaws.com \ --region us-east-1

Para actualizar un dominio existente:

aws opensearch update-domain-config \ --domain-name testDomain \ --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \ --ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \ --no-verify-ssl \ --endpoint-url https://es.us-east-1.amazonaws.com \ --region us-east-1

Tarea 3: Configurar SAML en las colecciones de OpenSearch sin servidor

Para configurar un control de acceso detallado basado en SAML en OpenSearch sin servidor
  1. Abra la Consola de administración de AWS y vaya a Amazon OpenSearch Service.

  2. En el panel de navegación, en Sin servidor, seleccione Seguridad y, a continuación, seleccione Autenticación.

  3. En la sección Federación de IAM, seleccione Editar.

    Puede controlar el control de acceso específico basado en atributos de SAML mediante esta configuración. La federación de IAM está desactivada de forma predeterminada.

  4. Seleccione Activar la federación de IAM.

  5. Introduzca los valores subjectKey y roleKey que definió en Okta.

    Para obtener más información, consulte Atributos SAML para el control de acceso preciso .

  6. Seleccione Guardar.

  7. En el panel de navegación, en Sin servidor, elija Política de acceso a datos.

  8. Actualice una política existente o cree una nueva.

  9. Amplíe una regla, elija Agregar entidades principales y, a continuación, seleccione Usuarios y grupos federados de IAM.

  10. Agregue las entidades principales necesarias y seleccione Guardar.

  11. Elija Conceder.

  12. Bajo esta regla, haga lo siguiente:

    • Seleccione los permisos que desee definir para las entidades principales seleccionadas.

    • Especifique las colecciones a las que desea aplicar los permisos.

    • Si lo desea, defina los permisos a nivel de índice.

    nota

    Puede crear varias reglas para asignar diferentes permisos a diferentes grupos de entidades principales.

  13. Cuando termine, elija Guardar.

  14. Elija Crear.

Como alternativa, puede usar CLI para crear las configuraciones de seguridad para las colecciones, como se indica a continuación:

aws opensearchserverless create-security-config --region "region" --type iamfederation --name "configuration_name" --description "description" --iam-federation-options '{"groupAttribute":"GroupKey","userAttribute":"UserKey"}'