Habilitar federação SAML com o AWS Identity and Access Management - Amazon OpenSearch Service

Habilitar federação SAML com o AWS Identity and Access Management

A OpenSearch UI é compatível com o Security Assertion Markup Language 2.0 (SAML), um padrão aberto que muitos provedores de identidades usam. Isso habilita a federação de identidades com o AWS Identity and Access Management (IAM). Com esse suporte, os usuários da sua conta ou organização podem acessar diretamente a OpenSearch UI assumindo perfis do IAM. Você pode criar uma experiência de login único iniciada por provedor de identidades (IdP) para seus usuários finais, na qual eles podem fazer a autenticação no provedor de identidades externo e serem roteados diretamente para sua página definida na OpenSearch UI. Você também pode implementar um controle de acesso refinado configurando os usuários finais ou grupos para que assumam diferentes perfis do IAM com diferentes permissões para acessar a OpenSearch UI e as fontes de dados associadas.

Este tópico apresenta instruções passo a passo para configurar o uso de SAML com a OpenSearch UI. Nesses procedimentos, usamos as etapas para configurar a aplicação de gerenciamento de identidades e acesso Okta como exemplo. As etapas de configuração para outros provedores de identidades, como o Azure Active Directory e o Ping, são semelhantes.

Etapa 1: configurar a aplicação de provedor de identidades (Okta)

Para usar SAML com a OpenSearch UI, a primeira etapa é configurar o provedor de identidades.

Tarefa 1: criar usuários do Okta
  1. Faça login na sua organização do Okta em https://login.okta.com/ como usuário com privilégios administrativos.

  2. No console do administrador, em Diretório no painel de navegação, escolha Pessoas.

  3. Escolha Add person (Adicionar pessoa).

  4. Em Nome, insira o nome do usuário.

  5. Em Sobrenome, insira o sobrenome do usuário.

  6. Em Nome do usuário, insira o nome de usuário do usuário no formato de e-mail.

  7. Escolha Definirei a senha e insira uma senha

  8. (Opcional) Desmarque a caixa O usuário deve alterar a senha no primeiro login se não quiser que o usuário altere a senha no primeiro login.

  9. Escolha Salvar.

Tarefa 2: criar e atribuir grupos
  1. Faça login na sua organização do Okta em https://login.okta.com/ como usuário com privilégios administrativos.

  2. No console do administrador, em Diretório no painel de navegação, escolha Grupos.

  3. Escolha Add Group (Adicionar grupo).

  4. Insira um nome de grupo e selecione Salvar.

  5. Escolha o grupo recém-criado e escolha Atribuir pessoas.

  6. Escolha o sinal de adição (+) e depois Concluído.

  7. (Opcional) Repita as etapas de 1 a 6 para adicionar mais grupos.

Tarefa 3: criar aplicações da Okta
  1. Faça login na sua organização do Okta em https://login.okta.com/ como usuário com privilégios administrativos.

  2. No console do administrador, em Applications no painel de navegação, escolha Applications.

  3. Selecione Create App Integration (Criar integração de aplicações).

  4. Escolha SAML 2.0 como método de login e, em seguida, escolha Next.

  5. Insira um nome para a integração da aplicação (por exemplo, OpenSearch_UI) e escolha Avançar.

  6. Insira os seguintes valores na aplicação; você não precisa alterar outros valores:

    1. 1. Em Single Sign On URL, insira https://signin.aws.amazon.com/saml para as regiões comerciais da AWS ou a URL específica da sua região.

    2. 2. Em Audience URI (SP Entity ID), insira urn:amazon:webservices.

    3. 3. Em Name ID format, insira EmailAddress.

  7. Escolha Próximo.

  8. Escolha I’m an Okta customer adding an internal app e depois This is an internal app that we have created.

  9. Escolha Terminar.

  10. Escolha Assignments e depois escolha Assign.

  11. Escolha Atribuir a grupos e depois selecione Assign ao lado dos grupos que você deseja adicionar.

  12. Selecione Concluído.

Tarefa 4: definir a configuração avançada do Okta

Depois de criar a aplicação SAML personalizada, conclua as etapas a seguir:

  1. Faça login na sua organização do Okta em https://login.okta.com/ como usuário com privilégios administrativos.

    No console do administrador, na área General, escolha Edit em SAML settings.

  2. Escolha Próximo.

  3. Defina Default Relay State como o endpoint da interface do usuário do OpenSearch, usando o formato:

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

    Este é um exemplo:

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

  4. Em Group Attribute Statements (optional), adicione o seguinte atributo:

    1. Forneça o perfil do IAM e o provedor de identidades no formato separado por vírgula usando o atributo Role. Você usará esse mesmo perfil do IAM e provedor de identidades em uma etapa posterior ao definir a configuração da AWS.

    2. Defina user.login para RoleSessionName. Isso é usado como um identificador para as credenciais temporárias que são emitidas quando o perfil é assumido.

    Para referência:

    Name Formato de nome Formato Exemplo

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

    Não especificado

    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

    Não especificado

    user.login

    user.login

  5. Depois de adicionar as propriedades do atributo, escolha Avançar e, em seguida, escolha Finalizar.

Os atributos devem ter formato semelhante aos mostrados na imagem a seguir. O valor do Default Relay State é a URL para definir a página inicial para usuários finais em sua conta ou organização após concluírem a validação de login único da Okta. Você pode defini-lo como qualquer página na interface do usuário do OpenSearch e depois fornecer esss URL aos usuários finais pretendidos.

A área "SAML 2.0" informa a URL padrão do estado de retransmissão e a URL de metadados de uma aplicação.

Etapa 2: Definir a configuração da AWS para o Okta

Conclua as tarefas a seguir para configurar sua configuração da AWS para o Okta.

Tarefa 1: coletar informações do Okta

Para esta etapa, você precisará coletar suas informações do Okta para poder configurá-lo posteriormente na AWS.

  1. Faça login na sua organização do Okta em https://login.okta.com/ como usuário com privilégios administrativos.

  2. Na guia Sign On canto inferior direito da página, escolha View SAML setup instructions.

  3. Anote o valor de Identity Provider Single Sign-on URL. Você pode usar essa URL ao se conectar a qualquer cliente SQL de terceiros, como o SQL Workbench/J.

  4. Use os metadados do provedor de identidades no bloco 4 e salve o arquivo de metadados no formato.xml (por exemplo, metadata.xml).

Tarefa 2: criar o provedor do IAM

Para criar o provedor do IAM, conclua as seguintes etapas:

  1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, em Gerenciamento de acesso, escolha Provedores de identidades.

  3. Escolha Add provider (Adicionar provedor).

  4. Em Tipo de provedor, selecione SAML.

  5. Em Nome do provedor, insira um nome.

  6. Em Documento de metadados, escolha Escolher arquivo e carregue o arquivo metadata file (.xml) que você baixou anteriormente.

  7. Escolha Add provider (Adicionar provedor).

Tarefa 3: criar um perfil do IAM

Para criar seu perfil do AWS Identity and Access Management, conclua as seguintes etapas:

  1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, em Gerenciamento de acesso, escolha Perfis.

  3. Selecione Criar perfil.

  4. Em Tipo de entidade confiável, escolha Federação SAML 2.0.

  5. Em Provedor baseado em SAML 2.0, escolha o provedor de identidades que você criou anteriormente.

  6. Selecione Permitir acesso programático e pelo Console de gerenciamento da AWS.

  7. Escolha Próximo.

  8. Na lista Políticas de permissões, marque as caixas de seleção da política que você criou anteriormente e do OpenSearchFullAccess.

  9. Escolha Próximo.

  10. Na seção Revisar, em Nome do perfil, insira um nome para o perfil, por exemplo, oktarole.

  11. (Opcional) Em Descrição da imagem, insira uma breve da finalidade do perfil.

  12. Selecione Criar perfil.

  13. Navegue até o perfil que você acabou de criar, escolha a guia Relações de Confiança e escolha Editar política de confiança.

  14. No painel Editar instrução, em Adicionar ações para o STS, selecione a caixa de TagSession.

  15. Escolha Atualizar política.

Etapa 3: criar a política de acesso do serviço do Amazon OpenSearch Service no IAM

Saiba como configurar os perfis do IAM para o controle de acesso do OpenSearch. Com os perfis do IAM, você pode implementar um controle de acesso refinado para os seus grupos de usuários do Okta acessarem os recursos do OpenSearch. Este tópico demonstra a configuração baseada em perfil do IAM usando dois grupos de exemplo.

Sample group: Alice

Solicitação:

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

Solicitação:

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

Você pode mapear as perfis de domínio do Amazon OpenSearch Service para perfis do IAM usando o mapeamento de perfis de backend, conforme demonstrado no exemplo a seguir:

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

Etapa 4: verificar a experiência de login único iniciada por provedor de identidades com o SAML

Abra a URL do Default Relay State para abrir a página de autenticação da Okta. Insira as credenciais de um usuário final. Você é redirecionado automaticamente para a OpenSearch UI.

Você pode verificar suas credenciais atuais escolhendo o ícone do usuário na parte inferior do painel de navegação, conforme ilustrado na seguinte imagem:

Escolher o ícone do usuário na página "Settings and setup" do Okta exibe as credenciais do usuário atual.

Você também pode verificar as permissões de controle de acesso refinadas para o usuário acessando as Ferramentas do Desenvolvedor na parte inferior do painel de navegação e executando consultas no console. Veja os exemplos de consultas.

Example 1: Displays information about the current user

Solicitação:

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

Solicitação:

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

Solicitação:

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 }

Etapa 5: configurar o controle de acesso refinado baseado em atributos SAML

Com o Amazon OpenSearch Service, você pode usar controle de acesso refinado com SAML para mapear usuários e grupos do seu provedor de identidades para usuários e perfis de controle de acesso refinado do OpenSearch de forma dinâmica. Você pode definir o escopo desses perfis para domínios e coleções com tecnologia sem servidor específicos do OpenSearch, e definir permissões no nível do índice e segurança no nível do documento.

nota

Para obter mais informações sobre controle de acesso da rede, consulte Controle de acesso refinado no Amazon OpenSearch Service.

Atributos do SAML para controle de acesso de alta granularidade

subjectKey

Mapeia para um atributo de usuário exclusivo, como e-mail ou nome de usuário, que identifica o usuário para autenticação.

rolesKey

Mapeia para atributos de grupo ou perfil no IdP, que determinam os perfis ou permissões para autorização.

Tarefa 1: configurar o Okta para controle de acesso refinado

Para configurar o Okta para controle de acesso refinado
  1. Adicione um novo atributo para a entidade principal de usuário do OpenSearch na seção Instruções de atributo:

    • Nome: : UserName

    • Valor: .: ${user-email}

    Esse atributo é usado como a chave de assunto na configuração refinada de controle de acesso do OpenSearch para autenticação.

  2. Adiciona um atributo de grupo para perfis na seção Instrução de atributo de grupo:

    • Nome: : groups

    • Filtro: OpenSearch_xxx

    Esse atributo é usado como a chave de perfil para mapear grupos para perfis de controle de acesso refinado do OpenSearch para autorização.

Tarefa 2: configurar SAML no domínio do OpenSearch

Para configurar SAML em domínio do OpenSearch
  1. No AWS Management Console, identifique o domínio do OpenSearch Service para o qual você deseja habilitar o controle de acesso refinado para os usuários da OpenSearch UI.

  2. Navegue até a página de detalhes do domínio específico.

  3. Selecione a guia Configuração de segurança e clique em Editar.

  4. Expanda o SAML via federação do IAM.

  5. Insira a subjectKey e a roleKey que você definiu no Okta.

  6. Selecione Salvar alterações.

Também é possível configurar um controle de acesso refinado usando o 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 atualizar um domínio 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

Tarefa 3: configurar SAML nas coleções do OpenSearch sem Servidor

Para configurar o controle de acesso refinado baseado em SAML no OpenSearch sem Servidor
  1. Abra o Console de gerenciamento da AWS e navegue até o Amazon OpenSearch Service.

  2. No painel de navegação, em Tecnologia sem servidor, escolha Segurança e depois Autenticação.

  3. Na seção Federação do IAM, selecione Editar.

    É possível manusear com o controle de acesso refinado baseado em atributos do SAML usando essa configuração. A federação do IAM é desabilitada por padrão.

  4. Selecione Habilitar federação do IAM.

  5. Insira os valores subjectKey e roleKey que você definiu no Okta.

    Para obter mais informações, consulte Atributos do SAML para controle de acesso de alta granularidade .

  6. Selecione Salvar.

  7. No painel de navegação, em Tecnologia sem servidor, escolha Política de acesso a dados.

  8. Atualize uma política existente ou crie uma nova.

  9. Expanda uma regra, escolha Adicionar entidades principais e selecione Usuários e grupos da Federação do IAM.

  10. Adicione as entidades principais necessárias e escolha Salvar.

  11. Selecione Conceder.

  12. Nessa regra, faça o seguinte:

    • Selecione as permissões que você deseja definir para as entidades principais selecionadas.

    • Especifique as coleções nas quais você deseja aplicar as permissões.

    • Opcionalmente, defina as permissões em nível de índice.

    nota

    Você pode criar várias regras para atribuir permissões diferentes a diferentes grupos de entidades principais.

  13. Quando terminar, escolha Save (Salvar).

  14. Escolha Criar.

Como alternativa, você pode usar a CLI para criar as configurações de segurança para coleções, conforme abaixo:

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