Acesso a dados entre regiões e entre contas com pesquisa entre clusters - Amazon OpenSearch Service

Acesso a dados entre regiões e entre contas com pesquisa entre clusters

Usando a pesquisa entre clusters do Amazon OpenSearch sem Servidor, você pode realizar consultas e agregações entre vários domínios conectados.

A pesquisa entre clusters no Amazon OpenSearch sem Servidor usa os conceitos dedomínio de origem e domínio de destino. Uma solicitação de pesquisa entre clusters começa em um domínio de origem. O domínio de destino pode estar em outra Conta da AWS ou Região da AWS (ou ambas) do domínio de origem para consulta. Usando a pesquisa entre clusters, você pode configurar um domínio de origem para associar à OpenSearch UI na mesma conta e depois criar conexões com os domínios de destino. Como resultado, você pode usar a OpenSearch UI com dados dos domínios de destino, mesmo se eles estiverem em outra conta ou região.

Você paga as taxas de transferência de dados padrão da AWS por dados transferidos para e do Amazon OpenSearch Service. Dados transferidos entre os nós dentro do domínio do OpenSearch Service não são cobrados. Para mais informações sobre as cobranças por dados "entrada" e "saída", consulte Transferência de dados na página Preço sob demanda do Amazon EC2.

Você pode usar a pesquisa entre clusters como mecanismo para sua OpenSearch UI ser associada a clusters em outra conta ou região. As solicitações entre domínios são criptografadas em trânsito por padrão como parte da criptografia de nó para nó.

nota

O OpenSearch de código aberto também pesquisa entre clusters de documentos. Observe que a configuração da ferramenta de código aberto difere significativamente para clusters de código aberto em comparação com domínios gerenciados do Amazon OpenSearch sem Servidor.

Em particular, no Amazon OpenSearch sem Servidor, você configura conexões entre clusters usando o Console de gerenciamento da AWS em vez de usar solicitações cURL. Além disso, o serviço gerenciado usa o AWS Identity and Access Management (IAM) para autenticação entre clusters, além do controle de acesso refinado.

Portanto, recomendamos usar essa documentação, em vez da documentação de código aberto do OpenSearch, para configurar a pesquisa entre clusters para seus domínios.

Diferenças funcionais ao usar a pesquisa entre clusters

Em comparação com os domínios regulares, os domínios de destino criados usando a pesquisa entre clusters têm as seguintes diferenças e requisitos funcionais:

  • Você não pode gravar nem executar comandos PUT no cluster remoto. Seu acesso ao cluster remoto é somente leitura.

  • Tanto o domínio de origem quanto de destino devem ser domínios do OpenSearch. Você não pode conectar um domínio do Elasticsearch ou os clusters autogerenciados do OpenSearch/Elasticsearch para OpenSearch UI.

  • Um domínio pode ter um máximo de 20 conexões com outros domínios. Isso inclui conexões de saída e entrada.

  • O domínio de origem deve ser da mesma versão ou de uma versão acima da versão do domínio de destino. Se você quiser configurar conexões bidirecionais entre dois domínios, os dois domínios devem ser da mesma versão. Recomendamos atualizar os dois domínios para a versão mais recente antes de fazer a conexão. Se você precisar atualizar domínios depois de configurar a conexão bidirecional, primeiro exclua e depois recrie a conexão.

  • Não é possível usar dicionários personalizados ou SQL com clusters remotos.

  • Você não pode usar o CloudFormation para conectar domínios.

  • Não é possível usar a pesquisa entre clusters em instâncias M3 ou expansíveis (T2 e T3).

  • A pesquisa entre clusters não funciona para coleções do Amazon OpenSearch sem Servidor.

Pré-requisitos da pesquisa entre clusters para a OpenSearch UI

Antes de configurar a pesquisa entre clusters, certifique-se de que os domínios atendam aos seguintes requisitos:

  • O controle de acesso refinado está habilitado no domínio

  • A criptografia de nó para nó está habilitada para ambos os domínios

Configurar permissões de acesso para acesso a dados entre regiões e entre contas com pesquisa entre clusters

Quando você envia uma solicitação de pesquisa entre clusters para o domínio de origem, o domínio avalia essa solicitação em relação à sua política de acesso ao domínio. A pesquisa entre clusters requer controle de acesso refinado. Este é um exemplo de uma política de acesso aberto no domínio de origem.

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

Se você incluir índices remotos no caminho, deverá codificar em URL o URI no ARN do domínio.

Por exemplo, use o seguinte formato do ARN:

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

Não use o seguinte formato de ARN:

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

Se você escolher por usar uma política de acesso restritiva além do controle de acesso refinado, sua política deverá permitir o acesso, pelo menos, a es:ESHttpGet. Este é um exemplo:

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/*" } ] }

O controle de acesso refinado no domínio de origem avalia a solicitação para determinar se ela está assinada com credenciais de autenticação básica HTTP ou do IAM. Se estiver, o controle de acesso refinado avalia então se o usuário tem permissão para realizar a pesquisa e acessar os dados.

Os requisitos de permissão para pesquisas são os seguintes:

  • Se a solicitação pesquisar somente dados no domínio de destino (por exemplo, dest-alias:dest-index/_search)), serão necessárias permissões somente no domínio de destino.

  • Se a solicitação pesquisar dados em ambos os domínios (por exemplo,source-index,dest-alias:dest-index/_search)) serão necessárias permissões em ambos os domínios.

  • Para usar o controle de acesso detalhado, a permissão indices:admin/shards/search_shards é necessária além das permissões padrão de leitura ou pesquisa para os índices relevantes.

O domínio de origem passa a solicitação para o domínio de destino. O domínio de destino avalia essa solicitação em relação à política de acesso ao domínio. Para compatibilidade com todos os recursos da OpenSearch UI, como indexação de documentos e pesquisas padrão, permissões completas devem ser definidas. Este é um exemplo de nossa política recomendada no domínio 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/" } ] }

Se você quiser realizar somente pesquisas básicas, o requisito mínimo de política é que a permissão es:ESCrossClusterGet seja aplicada ao domínio de destino, sem compatibilidade com curinga. Por exemplo, na política anterior, você especificaria o nome do domínio como /my-destination-domain e não /my-destination-domain/*.

Nesse caso, o domínio de destino realiza a pesquisa e retorna os resultados para o domínio de origem. O domínio de origem combina seus próprios resultados (se houver) com os resultados do domínio de destino e os retorna para você.

Criar uma conexão entre domínios

Uma conexão de pesquisa entre clusters é unidirecional, do domínio de origem para o domínio de destino. Isso significa que os domínios de destino (em outra conta ou região) não podem consultar o domínio de origem, que é local da OpenSearch UI. O domínio de origem cria uma conexão de saída com o domínio de destino. O domínio de destino recebe uma solicitação de conexão de entrada do domínio de origem.

Esta imagem mostra que uma conexão de pesquisa entre clusters é unidirecional do domínio de origem para o domínio de destino.
Para criar uma conexão entre domínios
  1. Faça login no console do Amazon OpenSearch Service em https://console.aws.amazon.com/aos/home.

  2. No painel de navegação à esquerda, selecione Domínios.

  3. Escolha o nome de um domínio para servir como domínio de origem e depois escolha a guia Conexões.

  4. Na área Conexões de saída, escolha Solicitar.

  5. Em Alias de conexão, insira um nome para a conexão. O alias de conexão é usado na interface do usuário do OpenSearch para selecionar os domínios de destino.

  6. Em Modo de conexão, escolha Direto para pesquisas ou replicação entre clusters.

  7. Para especificar que a conexão deve ignorar clusters indisponíveis durante uma pesquisa, selecione a caixa Ignorar clusters indisponíveis. Essa configuração garante que as consultas entre clusters retornem resultados parciais, mesmo que ocorram falhas em um ou mais clusters remotos.

  8. Em Cluster de destino, escolha entre Conectar a um cluster neste Conta da AWS e Conectar a um cluster em outro Conta da AWS.

  9. Em ARN de domínio remoto, insira nome do recurso da Amazon (ARN)(ARN) para o cluster. O ARN do domínio pode estar localizado na área Informações gerais da página de detalhes do domínio.

    O domínio deve atender aos seguintes requisitos:

    • O ARN deve estar no formato arn:partition:es:regionaccount-id:type/domain-id. Por exemplo:

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

    • O domínio deve estar configurado para usar o OpenSearch versão 1.0 (ou posterior) ou o Elasticsearch versão 6.7 (ou posterior).

    • O controle de acesso refinado deve estar habilitado no domínio.

    • O domínio deve executar o OpenSearch.

  10. Escolha Solicitar.

A pesquisa entre clusters primeiro valida a solicitação de conexão para ter certeza de que os pré-requisitos são atendidos. Se os domínios forem incompatíveis, a solicitação de conexão entrará no estado Validation failed.

Se a solicitação de conexão for validada com êxito, ela é enviada para o domínio de destino, onde precisa ser aprovada. Até que essa aprovação seja fornecida, a conexão permanecerá em um estado Pending acceptance. Quando a solicitação de conexão é aceita no domínio de destino, o estado muda para Active e o domínio de destino torna-se disponível para consultas.

A página de domínio mostra os detalhes gerais da integridade do domínio e da instância do domínio de destino. Os proprietários de domínios têm a flexibilidade de criar, visualizar, remover e monitorar conexões de saída e de entrada de seus domínios.

Depois de estabelecida a conexão, todo o tráfego que flui entre os nós dos domínios conectados é criptografado. Se você conectar um domínio da VPC a um domínio que não seja de VPC e este domínio for um endpoint público que pode receber tráfego da Internet, o tráfego entre clusters entre os domínios ainda será criptografado e seguro.

Testar a configuração de segurança para acesso a dados entre regiões e contas com pesquisa entre clusters

Depois de configurar as permissões de acesso para acesso a dados entre regiões e contas com a pesquisa entre clusters, recomendamos testar a configuração usando o Postman, uma plataforma de terceiros para desenvolvimento colaborativo de APIs.

Para definir a configuração de segurança usando o Postman
  1. No domínio de destino, indexe um documento. Este é um exemplo de solicitação:

    POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1 { "Dracula": "Bram Stoker" }
  2. Para consultar esse índice do domínio de origem, inclua o alias de conexão do domínio de destino dentro da consulta. Você pode encontrar o alias de conexão na guia Conexões no painel do domínio. A seguir está um exemplo de solicitação e resposta 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) Você pode criar uma configuração que inclua vários domínios em uma única pesquisa. Por exemplo, digamos que você configurou o seguinte:

    Uma conexão entre domain-a e domain-b, com um alias de conexão denominado cluster_b

    Uma conexão entre domain-a e domain-c, com um alias de conexão denominado cluster_c

    Nesse caso, as pesquisas incluem o conteúdo domain-a, domain-b e domain-c. Este é um exemplo de solicitação e resposta truncada:

    Solicitação

    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" } } }

    Resposta:

    { "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 } } ] } }

Se você não optou por ignorar clusters indisponíveis na sua configuração de conexão, todos os clusters de destino na sua pesquisa precisam estar disponíveis para que sua solicitação de pesquisa seja executada com êxito. Caso contrário, toda a solicitação falhará — mesmo que um dos domínios não esteja disponível, nenhum resultado da pesquisa será retornado.

Excluir uma conexão

A exclusão de uma conexão interrompe qualquer operação de pesquisa entre clusters no domínio de destino.

Você pode executar o seguinte procedimento no domínio de origem e no domínio de destino para remover a conexão. Depois que a conexão é removida, ela permanece visível com o status Deleted por 15 dias.

Não é possível excluir um domínio com conexões ativas entre clusters. Para excluir um domínio, primeiro remova todas as conexões de entrada e saída desse domínio. Isso garante que você leve em consideração os usuários de domínio entre clusters antes de excluir o domínio.

Excluir uma conexão
  1. Faça login no console do Amazon OpenSearch Service em https://console.aws.amazon.com/aos/home.

  2. No painel de navegação à esquerda, selecione Domínios.

  3. Escolha o nome de um domínio existente e depois a guia Conexões.

  4. Selecione nome de uma conexão a ser excluída.

  5. Escolha Excluir e depois confirme a exclusão.