Acceso a datos entre regiones y entre cuentas con búsqueda entre clústeres - Amazon OpenSearch Service

Acceso a datos entre regiones y entre cuentas con búsqueda entre clústeres

La búsqueda entre clústeres en Amazon OpenSearch sin servidor permite realizar consultas y agregaciones en varios dominios conectados.

La búsqueda entre clústeres en Amazon OpenSearch sin servidor utiliza los conceptos de dominio de origen y dominio de destino. Una petición de búsqueda en clústeres se origina en un dominio de origen. El dominio de destino puede estar en una Cuenta de AWS o Región de AWS diferente (o en ambas) al dominio de origen desde el que se realiza la consulta. Mediante la búsqueda entre clústeres, puede configurar un dominio de origen para asociarlo a OpenSearch UI en la misma cuenta y, a continuación, crear conexiones a los dominios de destino. Como resultado, puede utilizar OpenSearch UI con los datos de los dominios de destino, incluso si se encuentran en una cuenta o región diferente.

Usted paga los cargos de transferencia de datos de AWS estándar por los datos transferidos dentro y fuera de Amazon OpenSearch Service. No se le cobrará por los datos transferidos entre los nodos de su dominio de OpenSearch Service. Para obtener más información acerca de los cargos de entrada y salida, consulte Transferencia de datos en la página Precios bajo demanda de Amazon EC2.

Puede usar la búsqueda entre clústeres como mecanismo para que OpenSearch UI se asocie a clústeres de una cuenta o región diferente. Todas las solicitudes de búsqueda en clústeres entre dominios se cifran en tránsito de forma predeterminada como parte del cifrado de nodo a nodo.

nota

OpenSearch de código abierto también tiene documentación para la búsqueda entre clústeres. La configuración difiere considerablemente entre los clústeres de código abierto en comparación con los dominios administrados de Amazon OpenSearch sin servidor.

En concreto, en Amazon OpenSearch sin servidor, las conexiones entre clústeres se configuran mediante la Consola de administración de AWS en lugar de utilizar solicitudes cURL. Además, el servicio administrado utiliza AWS Identity and Access Management (IAM) para la autenticación entre clústeres, además de un control de acceso detallado.

Por lo tanto, recomendamos utilizar esta documentación, en lugar de la documentación de OpenSearch de código abierto, para configurar la búsqueda entre clústeres para sus dominios.

Diferencias funcionales al utilizar la búsqueda entre clústeres

En comparación con los dominios normales, los dominios de destino creados mediante la búsqueda entre clústeres tienen las siguientes diferencias y requisitos funcionales:

  • No puede escribir ni ejecutar comandos PUT en el clúster remoto. El acceso al clúster remoto es solo de lectura.

  • Ambos dominios de origen y destino deben ser dominios de OpenSearch. No puede conectar un dominio de Elasticsearch ni clústeres de OpenSearch o Elasticsearch autoadministrados para OpenSearch UI.

  • Un dominio puede tener un máximo de 20 conexiones a otros dominios. Esto incluye las conexiones entrantes y salientes.

  • El dominio de origen debe estar en la misma versión o superior a la del dominio de destino. Si desea configurar conexiones bidireccionales entre dos dominios, los dos dominios deben estar en la misma versión. Recomendamos actualizar ambos dominios a la última versión antes de realizar la conexión. Si necesita actualizar los dominios después de configurar la conexión bidireccional, primero debe eliminar la conexión y, a continuación, volver a crearla.

  • No puede usar diccionarios personalizados o SQL con la búsqueda en clústeres.

  • No puede usar CloudFormation para conectar dominios.

  • No se puede utilizar la búsqueda entre clústeres en instancias M3 o bursátiles (T2 y T3).

  • La búsqueda entre clústeres no funciona en las colecciones de Amazon OpenSearch sin servidor.

Requisitos previos de búsqueda entre clústeres de OpenSearch UI

Antes de configurar la búsqueda entre clústeres con dos dominios de OpenSearch, asegúrese de que sus dominios cumplan con los siguientes requisitos:

  • Control de acceso detallado habilitado para ambos dominios

  • El cifrado de nodo a nodo está habilitado para ambos dominios

Configuración de permisos de acceso para el acceso a datos entre regiones y cuentas mediante la búsqueda entre clústeres

Al enviar una petición de búsqueda en clústeres al dominio de origen, el dominio evalúa esa petición en comparación con la política de acceso al dominio. La búsqueda en clústeres requiere un control de acceso preciso. A continuación, se muestra un ejemplo con una política de acceso abierto en el dominio de origen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:us-east-1:111222333444:domain/src-domain/*" } ] }
nota

Si incluye índices remotos en la ruta, debe codificar la URL del URI en el ARN del dominio.

Por ejemplo, use el siguiente formato de ARN:

:arn:aws:es:us-east-1:111222333444:domain/my-domain/local_index,dst%3Aremote_index

No use el siguiente formato ARN.

arn:aws:es:us-east-1:111222333444:domain/my-domain/local_index,dst:remote_index.

Si elige utilizar una política de acceso restrictivo además de un control de acceso detallado, la política debe permitir el acceso a es:ESHttpGet como mínimo. A continuación, se muestra un ejemplo:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111222333444:user/john-doe" ] }, "Action": "es:ESHttpGet", "Resource": "arn:aws:es:us-east-1:111122223333:domain/my-domain/*" } ] }

El control de acceso detallado del dominio de origen evalúa la solicitud para determinar si está firmada con credenciales básicas de IAM o HTTP válidas. Si es así, el control de acceso detallado evalúa a continuación si el usuario tiene permiso para realizar la búsqueda y acceder a los datos.

Los siguientes son los requisitos de permiso para las búsquedas:

  • Si la solicitud solo busca datos en el dominio de destino (por ejemplo, dest-alias:dest-index/_search)), solo necesitará permisos en el dominio de destino.

  • Si la solicitud busca datos en ambos dominios (por ejemplo, source-index,dest-alias:dest-index/_search)), necesita permisos en ambos dominios.

  • En el control de acceso detallado, los usuarios deben tener el permiso indices:admin/shards/search_shards además de los permisos de lectura o estándar para los índices pertinentes.

El dominio de origen pasa la solicitud al dominio de destino. El dominio de destino evalúa esta solicitud frente a su política de acceso al dominio. Para admitir todas las características de OpenSearch UI, como indexar documentos y realizar búsquedas estándar, se deben establecer permisos completos. A continuación, se muestra un ejemplo de nuestra política recomendada en el dominio de destino:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:us-east-2:111222333444:domain/my-destination-domain/*" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:us-east-2:111222333444:domain/" } ] }

Si solo desea realizar búsquedas básicas, el requisito mínimo de la política es que el permiso es:ESCrossClusterGet se solicite para el dominio de destino sin el uso de caracteres comodín. Por ejemplo, en la política anterior, especificaría el nombre de dominio como /my-destination-domain y no /my-destination-domain/*.

En ese caso, el dominio de destino realiza la búsqueda y devuelve los resultados al dominio de origen. El dominio de origen combina sus propios resultados (si los hay) con los resultados del dominio de destino y los devuelve.

Crear una conexión entre dominios

Una conexión entre clústeres es unidireccional desde el dominio de origen hasta el dominio de destino. Esto significa que los dominios de destino (en una cuenta o región diferente) no pueden consultar el dominio de origen, que es local en OpenSearch UI. El dominio de origen crea una conexión outbound al dominio de destino. El dominio de destino recibe una solicitud de conexión inbound del dominio de origen.

Una conexión entre clústeres es unidireccional desde el dominio de origen hasta el dominio de destino.
Para crear una conexión entre dominios
  1. Inicie sesión en la consola de Amazon OpenSearch Service en https://console.aws.amazon.com/aos/home.

  2. En el panel de navegación de la izquierda, seleccione Dominios.

  3. Elija el nombre de un dominio que sirva como dominio de origen y, a continuación, elija la pestaña Conexiones.

  4. En la sección Conexiones de salida, seleccione Solicitar.

  5. En Alias de conexión, ingrese un nombre para la conexión. El alias de conexión se usa en OpenSearch UI para seleccionar los dominios de destino.

  6. En el modo de conexión, elija Directo para realizar búsquedas o replicaciones entre clústeres.

  7. Para especificar que la conexión debe omitir los clústeres no disponibles durante una búsqueda, active la casilla Omitir los clústeres no disponibles. Esta configuración garantiza que las consultas entre clústeres devuelvan resultados parciales a pesar de que se produzcan errores en uno o más clústeres remotos.

  8. En Clúster de destino, elija entre Conectarse a un clúster de esta Cuenta de AWS o Conectarse a un clúster de otra Cuenta de AWS.

  9. En el ARN de dominio remoto, escriba el nombre de recurso de Amazon (ARN) para el clúster. El ARN del dominio se encuentra en el área de información general de la página de detalles del dominio.

    El dominio debe cumplir los siguientes requisitos:

    • El formato del ARN debe ser arn:partition:es:regionaccount-id:type/domain-id. Por ejemplo:

      arn:aws:es:us-east-2:111222333444:domain/my-domain

    • El dominio debe configurarse para usar OpenSearch versión 1.0 (o posterior) o Elasticsearch versión 6.7 (o posterior).

    • Debe estar habilitado el control de acceso preciso en el dominio.

    • El dominio debe ejecutar OpenSearch.

  10. Seleccione Request (Solicitar).

La búsqueda entre clústeres valida primero la solicitud de conexión para asegurarse de que se cumplen los requisitos previos. Si los dominios son incompatibles, la solicitud de conexión entra en el estado Validation failed.

Una vez correctamente validada la solicitud de conexión, se envía al dominio de destino, donde tiene que aprobarse. Mientras no se obtenga la aprobación, la conexión permanecerá en el estado de Pending acceptance. Cuando se acepta la solicitud de conexión en el dominio de destino, el estado cambia a Active y el dominio de destino se vuelve disponible para consultas.

La página de dominio muestra el estado general del dominio y los detalles del estado de la instancia del dominio de destino. Los propietarios de dominios tienen la flexibilidad de crear, visualizar, eliminar y monitorear conexiones desde o hacia sus dominios.

Una vez establecida la conexión, se cifra todo el tráfico que circule entre los nodos de los dominios conectados. Si conecta un dominio de VPC a un dominio que no es VPC y el dominio que no es VPC es un punto de conexión público que puede recibir tráfico de Internet, el tráfico entre clúster entre los dominios sigue cifrado y seguro.

Probar su configuración de seguridad para el acceso a datos entre cuentas y regiones con búsqueda entre clústeres

Una vez que haya configurado los permisos de acceso a los datos entre regiones y cuentas mediante la búsqueda entre clústeres, le recomendamos que pruebe la configuración con Postman, una plataforma de terceros para el desarrollo colaborativo de las API.

Para configurar la configuración de seguridad mediante Postman
  1. En el dominio de destino, indexe un documento: Lo que sigue es un ejemplo de resultado.

    POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1 { "Dracula": "Bram Stoker" }
  2. Para consultar este índice desde el dominio de origen, incluya el alias de conexión del dominio de destino dentro de la consulta. Puede encontrar el alias de conexión en la pestaña Conexiones del panel de control del dominio. A continuación, se muestra un ejemplo de solicitud y una respuesta truncada:

    GET https://src-domain.us-east-1.es.amazonaws.com/connection_alias:books/_search { ... "hits": [ { "_index": "source-destination:books", "_type": "_doc", "_id": "1", "_score": 1, "_source": { "Dracula": "Bram Stoker" } } ] }
  3. (Opcional) Puede crear una configuración que incluya varios dominios en una sola búsqueda. Por ejemplo, supongamos que tiene lo siguiente:

    Una conexión entre domain-a a domain-b, con un alias de conexión denominado cluster_b

    Una conexión entre domain-a a domain-c, con un alias de conexión denominado cluster_c

    En este caso, las búsquedas incluyen el contenido domain-a, domain-b y domain-c. A continuación se muestra un ejemplo de una solicitud y la respuesta:

    Solicitud

    GET https://src-domain.us-east-1.es.amazonaws.com/local_index,cluster_b:b_index,cluster_c:c_index/_search { "query": { "match": { "user": "domino" } } }

    Respuesta:

    { "took": 150, "timed_out": false, "_shards": { "total": 3, "successful": 3, "failed": 0, "skipped": 0 }, "_clusters": { "total": 3, "successful": 3, "skipped": 0 }, "hits": { "total": 3, "max_score": 1, "hits": [ { "_index": "local_index", "_type": "_doc", "_id": "0", "_score": 1, "_source": { "user": "domino", "message": "This is message 1", "likes": 0 } }, { "_index": "cluster_b:b_index", "_type": "_doc", "_id": "0", "_score": 2, "_source": { "user": "domino", "message": "This is message 2", "likes": 0 } }, { "_index": "cluster_c:c_index", "_type": "_doc", "_id": "0", "_score": 3, "_source": { "user": "domino", "message": "This is message 3", "likes": 0 } } ] } }

Si no eligió omitir los clústeres no disponibles en la configuración de la conexión, todos los clústeres de destino que busca tienen que estar disponibles para que la petición de búsqueda se ejecute correctamente. De lo contrario, se produce un error en toda la solicitud; incluso si uno de los dominios no está disponible, la búsqueda no devuelve ningún resultado.

Eliminación de una conexión

La eliminación de una conexión detiene cualquier operación de búsqueda entre clústeres en el dominio de destino.

Puede realizar estos pasos en el dominio de origen o de destino para eliminar la conexión. Una vez quitada la conexión, seguirá visible con el estado Deleted durante un periodo de 15 días.

No se puede eliminar un dominio con conexiones activas entre clústeres. Para eliminar un dominio, primero quite todas las conexiones entrantes y salientes de ese dominio. Esto es para asegurarse de tener en cuenta a los usuarios del dominio entre clústeres antes de eliminar el dominio.

Para eliminar una conexión
  1. Inicie sesión en la consola de Amazon OpenSearch Service en https://console.aws.amazon.com/aos/home.

  2. En el panel de navegación de la izquierda, seleccione Dominios.

  3. Elija el nombre de un dominio y, a continuación, la pestaña Contenido.

  4. El nombre de la conexión que se va a eliminar.

  5. Elija Eliminar y, a continuación, confirme la eliminación.