Tutorial: usuário primário do IAM e Amazon Cognito - Amazon OpenSearch Service

Tutorial: usuário primário do IAM e Amazon Cognito

Este tutorial aborda um caso de uso popular de controle de acesso refinado: um usuário primário do IAM com autenticação do Amazon Cognito para o OpenSearch Dashboards. Embora essas etapas usem o grupo de usuários do Amazon Cognito para a autenticação, esse mesmo processo básico funciona para qualquer provedor de autenticação do Cognito que permita atribuir diferentes funções do IAM a usuários diferentes.

nota

Este tutorial pressupõe que você tenha duas funções do IAM existentes, uma para o usuário primário e outra para usuários mais limitados. Se você não tiver duas funções, crie-as.

Conceitos básicos do controle de acesso refinado

  1. Crie um domínio com as seguintes configurações:

    • OpenSearch 1.0 ou posterior ou Elasticsearch 7.8 ou posterior

    • Acesso público

    • Controle de acesso refinado habilitado com uma função do IAM como usuário primário (IAMMasterUserRole para o resto deste tutorial)

    • Autenticação do Amazon Cognito habilitada para o OpenSearch Dashboards. Para obter instruções para habilitar a autenticação do Cognito e selecionar um usuário e um grupo de identidades, consulte Configuração de um domínio para usar o Amazon Cognito.

    • A seguinte política de acesso:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/domain-name/*" } ] }
    • HTTPS necessário para todo o tráfego para o domínio

    • Criptografia de nó a nó

    • Criptografia de dados em repouso

  2. Navegue até o console do IAM e escolha Roles (Funções).

  3. Escolha IAMMasterUserRole e vá para a guia Trust relationships (Relações de confiança).

  4. Escolha Edit trust relationship (Editar relação de confiança) e certifique-se de que o grupo de identidades do Amazon Cognito possa assumir a função. Você deve ver a seguinte declaração:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "identity-pool-id" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } }] }
  5. Escolha Update Trust Policy.

  6. Adicione a mesma política de confiança a uma segunda função do IAM (IAMLimitedUserRole para o restante deste tutorial).

  7. Navegue até o console do Amazon Cognito e escolha Manage User Pools (Gerenciar grupos de usuários).

  8. Escolha seu grupo de usuários e depois escolha Users and groups (Usuários e grupos).

  9. Escolha Create user (Criar usuário), especifique um nome de usuário para master-user e uma senha e escolha Create user (Criar usuário).

  10. Crie outro usuário chamado limited-user.

  11. Vá para a guia Groups (Grupos) e escolha Create group (Criar grupo).

  12. Nomeie o grupo como master-user-group, escolha IAMMasterUserRole na lista suspensa IAM role (Função do IAM) e escolha Create group (Criar grupo).

  13. Crie outro grupo chamado limited-user-group que use IAMLimitedUserRole.

  14. Escolha master-user-group, depois escolha Add users (Adicionar usuários) e então adicione master-user.

  15. Escolha limited-user-group, depois escolha Add users (Adicionar usuários) e então adicione limited-user.

  16. Escolha App client settings (Configurações do cliente da aplicação) e anote o ID do cliente do seu domínio.

  17. Escolha Federated Identities (Identidades federadas), depois escolha seu grupo de identidades e Edit identity pool (Editar grupo de identidades).

  18. Expanda Authentication providers (Provedores de autenticação), localize o ID do grupo de usuários e o ID do cliente da aplicação para o seu domínio e altere Use default role (Usar função padrão) para Choose role from token (Escolher função a partir do token).

  19. Em Role resolution (Resolução da função), escolha DENY (NEGAR). Com essa configuração, os usuários devem estar em um grupo para receber uma função do IAM após a autenticação.

  20. Escolha Save Changes (Salvar alterações).

  21. Navegue para o OpenSearch Dashboards.

  22. Faça login com master-user.

  23. Escolha Add sample data (Adicionar exemplos de dados) e adicione alguns exemplos de dados de voo.

  24. Escolha Security (Segurança), Roles (Funções), Create role (Criar função).

  25. Nomeie a função new-role.

  26. Para as permissões do índice, especifique opensearch_dashboards_sample_data_fli* para o padrão de índice (kibana_sample_data_fli* em domínios do Elasticsearch).

  27. Para o grupo de ações, escolha read (leitura).

  28. Em Document level security (Segurança em nível de documento), especifique a seguinte consulta:

    { "match": { "FlightDelay": true } }
  29. Para segurança em nível de campo, escolha Exclude (Excluir) e especifique FlightNum.

  30. Em Anonymization (Anonimização), especifique Dest.

  31. Escolha Create (Criar OpsItem).

  32. Escolha Mapped users (Usuários mapeados) e Manage mapping (Gerenciar mapeamento). Em seguida, adicione o ARN para IAMLimitedUserRole como uma identidade externa e escolha Map (Mapa).

  33. Retorne à lista de funções e escolha opensearch_dashboards_user. Escolha Mapped users (Usuários mapeados) e Manage mapping (Gerenciar mapeamento). Adicione o ARN para IAMLimitedUserRole como uma função de backend e escolha Map (Mapa).

  34. Em uma nova janela privada do navegador, navegue até o Dashboards, faça login usando limited-user e escolha Explore on my own (Explorar por conta própria).

  35. Escolha Dev Tools (Ferramentas de desenvolvimento) e execute a pesquisa padrão:

    GET _search { "query": { "match_all": {} } }

    Observe o erro de permissões. limited-user não tem permissões para executar pesquisas em todo o cluster.

  36. Execute outra pesquisa:

    GET opensearch_dashboards_sample_data_flights/_search { "query": { "match_all": {} } }

    Observe que todos os documentos correspondentes têm um campo FlightDelay de true, um campo anônimo Dest e nenhum campo FlightNum.

  37. Na janela original do navegador, conectado como master-user, escolha Dev Tools (Ferramentas de desenvolvimento) e execute as mesmas pesquisas. Observe a diferença nas permissões, número de ocorrências, documentos correspondentes e campos incluídos.