Zephyrnet Logo

Crie uma federação de identidade SAML para domínios do Amazon OpenSearch Service em uma VPC | Amazon Web Services

Data:

Serviço Amazon OpenSearch é um serviço de pesquisa e análise totalmente gerenciado desenvolvido pela biblioteca de pesquisa Apache Lucene que pode ser operado em uma nuvem privada virtual (VPC). Uma VPC é uma rede virtual dedicada à sua conta da AWS. Está logicamente isolado de outras redes virtuais na Nuvem AWS. Colocar um domínio do OpenSearch Service em uma VPC permite uma comunicação segura entre o OpenSearch Service e outros serviços na VPC sem a necessidade de um gateway de Internet, dispositivo NAT ou conexão VPN. Todo o tráfego permanece seguro na Nuvem AWS, proporcionando um ambiente seguro para seus dados. Para se conectar a um domínio do OpenSearch Service em execução dentro de uma VPC privada, os clientes empresariais usam uma das duas opções disponíveis: integrar a VPC à rede corporativa por meio de VPN ou AWS Direct Connectou torne o endpoint do cluster acessível publicamente por meio de um proxy reverso. Referir-se Como posso acessar o OpenSearch Dashboards de fora de uma VPC usando a autenticação do Amazon Cognito para uma avaliação detalhada das opções disponíveis e dos correspondentes prós e contras.

Para gerenciar o acesso ao OpenSearch Dashboards em ambientes de clientes corporativos, o OpenSearch Service oferece suporte à integração Security Assertion Markup Language (SAML) com os provedores de identidade (IdPs) existentes do cliente para oferecer logon único (SSO). Embora a integração SAML para OpenSearch Dashboards publicamente acessíveis funcione imediatamente, habilitar SAML para OpenSearch Dashboards em uma VPC requer um design cuidadoso com várias configurações.

Esta postagem descreve uma solução ponta a ponta para integrar a autenticação SAML para domínios do OpenSearch Service em execução em uma VPC. Ele fornece uma diretriz de implantação passo a passo e é acompanhado por Kit de desenvolvimento em nuvem da AWS (AWS CDK), que automatizam todas as configurações necessárias.

Visão geral da solução

O diagrama a seguir descreve o fluxo de autenticação passo a passo para acessar um domínio privado do OpenSearch Service por meio de SSO usando a federação de identidade SAML. O acesso é habilitado pela Internet pública por meio de servidores proxy reverso NGINX privados em execução em Serviço Amazon Elastic Container (Amazon ECS) para alta disponibilidade.

Visão geral da solução

O fluxo de trabalho consiste nas seguintes etapas:

  1. O usuário navega até o URL do OpenSearch Dashboards em seu navegador.
  2. O navegador resolve o endereço IP do domínio e envia a solicitação.
  3. AWS WAF As regras garantem que apenas os intervalos de endereços IP listados sejam permitidos.
  4. O Application Load Balancer encaminha a solicitação para o proxy reverso NGINX.
  5. NGINX adiciona os cabeçalhos necessários e encaminha a solicitação para OpenSearch Dashboards.
  6. O OpenSearch Dashboards detecta que a solicitação não está autenticada. Ele responde com um redirecionamento para o IdP SAML integrado para autenticação.
  7. O usuário é redirecionado para a página de login do SSO.
  8. O IdP verifica a identidade do usuário e gera um token de asserção SAML.
  9. O usuário é redirecionado de volta para o URL do OpenSearch Dashboards.
  10. A solicitação passa pelas etapas 1 a 5 novamente até chegar ao OpenSearch. Desta vez, o OpenSearch Dashboards detecta a declaração SAML que a acompanha e permite a solicitação.

Nas seções a seguir, configuramos um proxy reverso NGINX em sub-redes privadas para fornecer acesso aos OpenSearch Dashboards para um domínio implantado dentro de sub-redes privadas VPC. Em seguida, habilitamos a autenticação SAML para OpenSearch Dashboards usando um aplicativo SAML 2.0 e usamos um endpoint de domínio personalizado para acessar OpenSearch Dashboards para ver a autenticação SAML em ação.

Pré-requisitos

Antes de começar, conclua as etapas de pré-requisito nesta seção.

Instale as ferramentas necessárias

Primeiro, instale o AWS CDK. Para obter mais informações, consulte o Guia do desenvolvedor do AWS CDK v2.

Prepare os recursos necessários da AWS

Conclua as etapas a seguir para configurar seus recursos da AWS:

  1. Crie uma conta AWS.
  2. Crie uma Amazon Route 53 zona hospedada pública, como mydomain.com a ser usado para rotear o tráfego da Internet para o seu domínio. Para obter instruções, consulte Criando uma zona hospedada pública.
  3. Solicite uma Gerenciador de certificados da AWS (ACM) certificado público para a zona hospedada. Para obter instruções, consulte Solicitando um certificado público.
  4. Crie uma VPC com sub-redes públicas e privadas.
  5. permitir Centro de identidade do AWS IAM. Para obter instruções, consulte Ativar o Centro de identidade do IAM.

Prepare seu cluster do OpenSearch Service

Esta postagem é acompanhada de um aplicativo AWS CDK independente (domínio opensearch) que implanta um domínio de amostra do OpenSearch Service em sub-redes VPC privadas. O domínio implantado é apenas para fins de demonstração e é opcional.

Se você tiver um domínio do OpenSearch Service existente na VPC que deseja usar para integração SAML, aplique as seguintes configurações:

  1. No Configuração de cluster guia, escolha Editar e selecione Habilitar endpoint personalizado no Endpoint personalizado seção.
  2. Escolha Nome de host personalizado, insira um nome de domínio totalmente qualificado (FQDN), como opensearch.mydomain.com, que você deseja usar para acessar seu cluster. Observe que o nome de domínio do FQDN fornecido (por exemplo, mydomain.com) deve ser igual à zona hospedada pública que você criou anteriormente.
  3. Escolha Certificado AWS, escolha o certificado SSL que você criou anteriormente.
  4. No Resumo seção, opcionalmente habilite a análise de simulação e selecione Funcionamento a seco ou desmarque e escolha Salvar as alterações .

Caso contrário, baixe o acompanhado domínio opensearch Aplicativo AWS CDK e descompacte-o. Em seguida, edite o cdk.json arquivo na raiz da pasta descompactada e configure os parâmetros necessários:

  • vpc_cidr – O bloco CIDR no qual a VPC será criada. Você pode deixar o padrão 10.0.0.0/16.
  • opensearch_cluster_name – O nome do cluster do OpenSearch Service. Você pode deixar o valor padrão de opensearch. Também será utilizado, juntamente com o hosted_zone_name parâmetro, para criar o FQDN do URL do domínio personalizado.
  • ID da zona_hospedada – O ID da zona hospedada pública do Route 53.
  • nome_zona_hospedada – O nome da zona hospedada pública do Route 53 (por exemplo, mydomain.com). O FQDN resultante com os valores de exemplo padrão será então opensearch.mydomain.com.

Por fim, execute os seguintes comandos para implantar o aplicativo AWS CDK:

cd opensearch-domain

# Create a Python environment and install the reuired dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
pip install -r requirements.txt

# Deploy the CDK application
cdk deploy

Com os pré-requisitos em vigor, consulte as seções a seguir para obter um guia passo a passo para implantar esta solução.

Crie um aplicativo SAML 2.0

Usamos o IAM Identity Center como fonte de identidade para nossa integração SAML. A mesma configuração deve ser aplicada a outros IdPs compatíveis com SAML 2.0. Consulte a documentação do seu IdP.

  1. No console do IAM Identity Center, escolha Grupos no painel de navegação.
  2. Crie um novo grupo chamado Opensearch Admine adicione usuários a ele.
    Este será o grupo SAML que receberá permissões completas no OpenSearch Dashboards. Anote o ID do grupo.Grupo de administradores do OpenSearch
  3. Escolha Aplicações no painel de navegação.
  4. Crie um novo aplicativo SAML 2.0 personalizado.Criar aplicativo SAML
  5. Faça download do arquivo de metadados SAML do IAM Identity Center para usar em uma etapa posterior.Metadados SAML do IAM Identity Center
  6. Escolha URL de início do aplicativo, entrar [Custom Domain URL]/_dashboards/.
    A URL do domínio personalizado é composta pelo protocolo de comunicação (https://) seguido pelo FQDN, que você usou para o cluster do OpenSearch Service nos pré-requisitos (por exemplo, https://opensearch.mydomain.com). Verifique as configurações de cluster do OpenSearch Service, em caso de dúvida.
  7. Escolha URL do aplicativo ACS, entrar [Custom Domain URL]/_dashboards/_opendistro/_security/saml/acs.
  8. Escolha Público-alvo do aplicativo SAML, entrar [Custom Domain URL] (sem nenhuma barra final).
    Propriedades SAML do domínio OpenSearch
  9. Escolha Submeter.
  10. No Usuários atribuídos seção, selecione Administrador de pesquisa aberta e escolha Atribuir usuários.Atribuir grupo de administração ao aplicativo SAML
  11. No Opções menu, escolha Editar mapeamentos de atributos.Editar o mapeamento de atributos do aplicativo SAML
  12. Defina mapeamentos de atributos conforme mostrado na captura de tela a seguir e escolha Salvar as alterações .Configurar mapeamentos de atributos do aplicativo SAML

Implante o aplicativo AWS CDK

Conclua as etapas a seguir para implantar o aplicativo AWS CDK:

  1. Baixe e descompacte o integração opensearch-domain-saml Aplicativo AWS CDK.
  2. Adicione sua chave SSL privada e certificado ao Gerenciador de segredos da AWS e crie dois segredos chamado Key e Crt. Por exemplo, consulte o seguinte código:
    KEY=$(cat private.key | base64) && aws secretsmanager create-secret --name Key --secret-string $KEY
    CRT=$(cat certificate.crt | base64) && aws secretsmanager create-secret --name Crt --secret-string $CRT

    Você pode usar o seguinte comando para gerar um certificado autoassinado. Isto é apenas para teste; não use isso para ambientes de produção.

    openssl req -new -newkey rsa:4096 -days 1095 -nodes -x509 -subj '/' -keyout private.key -out certificate.crt

  3. Edite o cdk.json arquivo e defina os parâmetros necessários dentro do aninhado config objeto:
  • aws_region – A região da AWS de destino para sua implantação (por exemplo, eu-central-1).
  • vpc_id – O ID da VPC na qual o domínio do OpenSearch Service foi implantado.
  • opensearch_cluster_security_group_id – O ID do grupo de segurança usado pelo domínio do OpenSearch Service ou qualquer outro grupo de segurança que permita conexões de entrada para esse domínio nas portas 80 e 443. Esse ID de grupo será usado pelo Application Load Balancer para encaminhar o tráfego para seu domínio do OpenSearch Service .
  • ID da zona_hospedada – O ID da zona hospedada pública do Route 53.
  • zona_hospedada – O nome da zona hospedada pública do Route 53 (por exemplo, mydomain.com).
  • opensearch_custom_domain_name – Um FQDN como opensearch.mydomain.com, que você deseja usar para acessar seu cluster. Observe que o nome de domínio do FQDN fornecido (mydomain.com) deve ser igual ao hosted_zone parâmetro.
  • opensearch_custom_domain_certificate_arn – O ARN do certificado armazenado no ACM.
  • opensearch_domain_endpoint – O endpoint de domínio VPC do OpenSearch Service (por exemplo, vpc-opensearch-abc123.eu-central-1.es.amazonaws.com).
  • vpc_dns_resolver – Deve ser 10.0.0. se o seu VPC CIDR for 10.0.0.0/16. Ver Servidor DNS da Amazon para mais detalhes.
  • alb_waf_ip_whitelist_cidrs – Esta é uma lista opcional de zero ou mais intervalos CIDR de IP que serão automaticamente listados no AWS WAF para permitir acesso ao domínio do OpenSearch Service. Se não for especificado, após a implantação, você precisará adicionar manualmente intervalos CIDR de IP relevantes ao conjunto de IP do AWS WAF para permitir o acesso. Por exemplo, ["1.2.3.4/32", "5.6.7.0/24"].
  1. Implante o aplicativo AWS CDK de integração SAML do domínio OpenSearch Service:
    cd opensearch-domain-saml-integration
    
    # Create a Python environment and install the required dependencies
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements-dev.txt
    pip install -r requirements.txt
    
    # Deploy the CDK application
    cdk deploy

Habilite a autenticação SAML para seu cluster do OpenSearch Service

Quando a implantação do aplicativo for concluída, habilite a autenticação SAML para seu cluster:

  1. No console do OpenSearch Service, navegue até seu domínio.
  2. No Configuração de segurança guia, escolha Editar.Habilitar autenticação SAML para domínio OpenSearch
  3. Selecionar Ativar autenticação SAML.
  4. Escolha Importar do arquivo XML e importe o arquivo de metadados SAML do IAM Identity Center que você baixou em uma etapa anterior.
  5. Escolha Função de back-end mestre SAML, use o ID do grupo que você salvou anteriormente.
  6. Expandir o Configurações adicionais seção e para Setores, insira o nome do atributo SAML 2.0 mapeado anteriormente quando criou o aplicativo SAML 2.0 no AWS Identity Center.
  7. Configurar a política de acesso ao domínio para integração SAML.
  8. Envie as alterações e aguarde o OpenSearch Service aplicar as configurações antes de prosseguir para a próxima seção.

Teste a solução

Conclua as etapas a seguir para ver a solução em ação:

  1. No console do IAM Identity Center, escolha Painel no painel de navegação.
  2. No Resumo das configurações seção, escolha o link em URL do portal de acesso da AWS.Faça login no IAM Identity Center
  3. Faça login com seu nome de usuário e senha (cadastre sua senha se este for seu primeiro login).
    Se sua conta foi adicionada com sucesso ao grupo de administradores, um logotipo do aplicativo SAML ficará visível.
  4. Escolha Aplicativo SAML 2.0 personalizado para ser redirecionado para os painéis do OpenSearch Service por meio de SSO sem nenhuma tentativa adicional de login.Abra o aplicativo SAML
    Alternativamente, você pode pular o login no portal de acesso e apontar diretamente seu navegador para o URL do OpenSearch Dashboards. Nesse caso, o OpenSearch Dashboards primeiro redirecionaria você para o portal de acesso para fazer login, o que o redirecionaria de volta para a IU do OpenSearch Dashboards após um login bem-sucedido, resultando no mesmo resultado mostrado na captura de tela a seguir.IU do OpenSearch Dashboards após login bem-sucedido

guia de solução de problemas

Seu IP público deve estar listado como permitido pela regra AWS WAF, caso contrário, um erro 403 Forbidden será retornado. Permitir listar seu intervalo IP CIDR por meio do AWS CDK alb_waf_ip_whitelist_cidrs conforme descrito no guia de instalação e reimplante o aplicativo AWS CDK para que as alterações entrem em vigor.

limpar

Quando terminar esta configuração, limpe os recursos para evitar cobranças futuras.

  1. No console do OpenSearch Service, navegue até o Configuração de segurança guia do seu domínio do OpenSearch Service e escolha Editar.
  2. Desmarcar Ativar autenticação SAML e escolha Salvar as alterações .
  3. Depois que a integração do Amazon SAML for desabilitada, exclua o arquivo opensearch-domain-saml-integration empilhar usando cdk destroy.
  4. Opcionalmente, se você usou a pilha AWS CDK de amostra do OpenSearch Service fornecida (opensearch-domain), exclua-o usando cdk destroy.

Conclusão

O OpenSearch Service permite que clientes corporativos usem seus IdPs federados preferenciais, como SAML, usando o IAM Identity Center para clusters executados em sub-redes VPC privadas seguindo as práticas recomendadas da AWS.

Nesta postagem, mostramos como integrar um domínio do OpenSearch Service em uma VPC com um IdP SAML existente para acesso SSO a OpenSearch Dashboards usando o IAM Identity Center. A solução fornecida gerencia com segurança o acesso de rede aos recursos usando AWS WAF para restringir o acesso apenas a segmentos de rede autorizados ou endereços IP específicos.

Para começar, consulte Como posso acessar o OpenSearch Dashboards de fora de uma VPC usando a autenticação do Amazon Cognito para comparação adicional do domínio do OpenSearch Service em padrões de acesso VPC privado.


Sobre os autores

Mahdi Ebrahimi é arquiteto sênior de infraestrutura em nuvem na Amazon Web Services. Ele se destaca no projeto de sistemas de software distribuídos e altamente disponíveis. Mahdi se dedica a fornecer soluções de ponta que capacitem seus clientes a inovar no cenário em rápida evolução da indústria automotiva.

Dmytro Protsiv é arquiteto de aplicativos em nuvem da Amazon Web Services. Ele é apaixonado por ajudar os clientes a resolver seus desafios de negócios relacionados à modernização de aplicativos.

Luca Menichetti é arquiteto de Big Data da Amazon Web Services. Ele ajuda os clientes a desenvolver soluções reutilizáveis ​​e de alto desempenho para processar dados em escala. Luca é apaixonado por gerenciar a arquitetura de dados da organização, permitindo análise de dados e aprendizado de máquina. Tendo trabalhado no ecossistema Hadoop por uma década, ele realmente gosta de resolver problemas em ambientes NoSQL.

Krithivasan Balasubramaniyan é consultor principal da Amazon Web Services. Ele capacita clientes empresariais globais em sua jornada de transformação digital e ajuda a arquitetar soluções nativas em nuvem.

Muthu Pitchaimani é um especialista em pesquisa do Amazon OpenSearch Service. Ele cria aplicativos e soluções de pesquisa em larga escala. Muthu está interessado nos tópicos de rede e segurança e mora em Austin, Texas.

local_img

Inteligência mais recente

local_img