Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Ativar mTLS no AWS App Mesh usando a AWS Private CA no Amazon EKS - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Ativar mTLS no AWS App Mesh usando a AWS Private CA no Amazon EKS

Criado por Omar Kahil (AWS), Emmanuel Saliu (AWS), Muhammad Shahzad (AWS) e Andy Wong (AWS)

Resumo

Este padrão mostra como implementar o Mutual Transport Layer Security (mTLS) no Amazon Web Services (AWS) usando certificados da AWS Private Certificate Authority (AWS Private CA) no AWS App Mesh. Ele usa a API do serviço de descoberta secreta (SDS) Envoy por meio do Secure Production Identity Framework for Everyone (SPIFFE). O SPIFFE é um projeto de código aberto da Cloud Native Computing Foundation (CNCF) com amplo suporte da comunidade que fornece gerenciamento de identidade de workload refinado e dinâmico. Para implementar os padrões do SPIFFE, use o ambiente de runtime SPIRE SPIFFE.

O uso do mTLS no App Mesh oferece autenticação bidirecional de pares, pois adiciona uma camada de segurança sobre o TLS e permite que os serviços na malha verifiquem o cliente que está fazendo a conexão. O cliente na relação cliente-servidor também fornece um certificado X.509 durante o processo de negociação da sessão. O servidor usa esse certificado para identificar e autenticar o cliente. Isso ajuda a verificar se o certificado foi emitido por uma autoridade de certificação (CA) confiável e se o certificado é válido.

Pré-requisitos e limitações

Pré-requisitos

  • Um cluster do Amazon Elastic Kubernetes Service (Amazon EKS) com grupos de nós autogerenciados ou gerenciados

  • App Mesh Controller implantado no cluster com o SDS ativado

  • Um certificado privado do AWS Certificate Manager (ACM) que é emitido pela AWS Private CA

Limitações

  • O SPIRE não pode ser instalado no AWS Fargate porque o agente SPIRE deve ser executado como um Kubernetes. DaemonSet

Versões do produto

  • AWS App Mesh Controller chart 1.3.0 ou superior

Arquitetura

O diagrama a seguir mostra o cluster EKS com App Mesh na VPC. O servidor SPIRE em um nó de processamento se comunica com os SPIRE Agents em outros nós de processamento e com a AWS Private CA. O Envoy é usado para comunicação mTLS entre os nós de processamento do SPIRE Agent.

Nós de trabalho em cluster EKS com SPIRE Agents and Server, App Mesh e Envoys for mTLS.

O diagrama ilustra as seguintes etapas:

  1. O certificado é emitido.

  2. Solicite o certificado e sua assinatura autenticada.

Ferramentas

Serviços da AWS

  • CA privada da AWS — A Autoridade de Certificação Privada da AWS (CA privada da AWS) permite a criação de hierarquias de autoridade de certificação (CA) privada, incluindo raiz e subordinada CAs, sem os custos de investimento e manutenção da operação de uma CA local.

  • AWS App Mesh: a AWS App Mesh é uma malha de serviço que facilita o monitoramento e o controle de serviços. O App Mesh padroniza como seus serviços se comunicam, dando visibilidade consistente e controle de tráfego de rede para cada serviço em uma aplicação.

  • Amazon EKS: o Amazon Elastic Kubernetes Service (Amazon EKS) é um serviço gerenciado que você pode usar para executar o Kubernetes na AWS, eliminando a necessidade de instalar, operar e manter seus próprios nós ou ambiente de gerenciamento do Kubernetes.

Outras ferramentas

  • Helm: o Helm é um gerenciador de pacotes para o Kubernetes que ajuda a instalar e gerenciar aplicações em seu cluster do Kubernetes. Esse padrão usa o Helm para implantar o controlador do AWS App Mesh.

  • Chart do AWS App Mesh Controller: o chart do controlador do AWS App Mesh é usado por esse padrão para habilitar o AWS App Mesh no Amazon EKS.

Épicos

TarefaDescriçãoHabilidades necessárias

Configure o App Mesh com o Amazon EKS.

Siga as etapas básicas de implantação fornecidas no repositório.

DevOps engenheiro

Instale o SPIRE.

Instale o SPIRE no cluster EKS usando spire_setup.yaml.

DevOps engenheiro

Instale o certificado da AWS Private CA.

Crie e instale um certificado para sua CA raiz privada seguindo as instruções na documentação da AWS.

DevOps engenheiro

Conceda permissões para a função de instância do nó do cluster.

Para anexar políticas à função de instância do nó do cluster, use o código que está na seção Informações adicionais.

DevOps engenheiro

Adicione o plug-in SPIRE para a AWS Private CA.

Para adicionar o plug-in à configuração do servidor SPIRE, use o código que está na seção Informações adicionais. Substitua o nome do recurso da Amazon (ARN) certificate_authority_arn pelo seu ARN da CA privada. O algoritmo de assinatura usado deve ser o mesmo da CA privada. Substitua your_region pela sua região da AWS.

Para obter mais informações sobre o plug-in, consulte Plug-in do servidor: UpstreamAuthority “aws_pca”.

DevOps engenheiro

Atualize bundle.cert.

Depois de criar o SPIRE Server, um arquivo spire-bundle.yaml será criado. Altere o valor bundle.crt no arquivo spire-bundle.yaml da CA privada para o certificado público.

DevOps engenheiro

Configurar o ambiente

TarefaDescriçãoHabilidades necessárias

Configure o App Mesh com o Amazon EKS.

Siga as etapas básicas de implantação fornecidas no repositório.

DevOps engenheiro

Instale o SPIRE.

Instale o SPIRE no cluster EKS usando spire_setup.yaml.

DevOps engenheiro

Instale o certificado da AWS Private CA.

Crie e instale um certificado para sua CA raiz privada seguindo as instruções na documentação da AWS.

DevOps engenheiro

Conceda permissões para a função de instância do nó do cluster.

Para anexar políticas à função de instância do nó do cluster, use o código que está na seção Informações adicionais.

DevOps engenheiro

Adicione o plug-in SPIRE para a AWS Private CA.

Para adicionar o plug-in à configuração do servidor SPIRE, use o código que está na seção Informações adicionais. Substitua o nome do recurso da Amazon (ARN) certificate_authority_arn pelo seu ARN da CA privada. O algoritmo de assinatura usado deve ser o mesmo da CA privada. Substitua your_region pela sua região da AWS.

Para obter mais informações sobre o plug-in, consulte Plug-in do servidor: UpstreamAuthority “aws_pca”.

DevOps engenheiro

Atualize bundle.cert.

Depois de criar o SPIRE Server, um arquivo spire-bundle.yaml será criado. Altere o valor bundle.crt no arquivo spire-bundle.yaml da CA privada para o certificado público.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Registre entradas de nós e workload com o SPIRE.

Para registrar o nó e a workload (serviços) no servidor SPIRE, use o código no repositório.

DevOps engenheiro

Crie uma malha no App Mesh com o mTLS ativado.

Crie uma nova malha no App Mesh com todos os componentes do seu aplicativo de microsserviços (por exemplo, serviço virtual, roteador virtual e nós virtuais).

DevOps engenheiro

Inspecione as entradas registradas.

Você pode inspecionar as entradas registradas para seus nós e workloads executando o comando a seguir.

kubectl exec -n spire spire-server-0 -- /opt/spire/bin/spire-server entry show

Isso mostrará as entradas dos SPIRE Agents.

DevOps engenheiro

Implementar e registrar as workloads

TarefaDescriçãoHabilidades necessárias

Registre entradas de nós e workload com o SPIRE.

Para registrar o nó e a workload (serviços) no servidor SPIRE, use o código no repositório.

DevOps engenheiro

Crie uma malha no App Mesh com o mTLS ativado.

Crie uma nova malha no App Mesh com todos os componentes do seu aplicativo de microsserviços (por exemplo, serviço virtual, roteador virtual e nós virtuais).

DevOps engenheiro

Inspecione as entradas registradas.

Você pode inspecionar as entradas registradas para seus nós e workloads executando o comando a seguir.

kubectl exec -n spire spire-server-0 -- /opt/spire/bin/spire-server entry show

Isso mostrará as entradas dos SPIRE Agents.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Verifique o tráfego do mTLS.

  1. Do serviço de frontend, envie um cabeçalho HTTP para o serviço de backend e verifique uma resposta bem-sucedida com os serviços registrados no SPIRE.

  2. Para autenticação TLS mútua, você pode inspecionar a estatística ssl.handshake executando o comando a seguir.

    kubectl exec -it $POD -n $NAMESPACE -c envoy -- curl http://localhost:9901/stats | grep ssl.handshake

    Depois de executar o comando anterior, você deverá ver a contagem ssl.handshake de receptores, que será semelhante ao seguinte exemplo:

    listener.0.0.0.0_15000.ssl.handshake: 2
DevOps engenheiro

Verifique se os certificados estão sendo emitidos pela AWS Private CA.

Você pode verificar se os plug-ins foram configurados corretamente e se os certificados estão sendo emitidos pela sua CA privada upstream visualizando os registros em seu SPIRE Server. Execute o seguinte comando:

kubectl logs spire-server-0 -n spire

Em seguida, visualize os logs que são gerados. Esse código pressupõe que seu servidor se chame spire-server-0 e esteja hospedado em seu namespace spire. Você deve ver o carregamento bem-sucedido dos plug-ins e uma conexão sendo estabelecida com sua CA privada upstream.

DevOps engenheiro

Verificar o tráfego do mTLS

TarefaDescriçãoHabilidades necessárias

Verifique o tráfego do mTLS.

  1. Do serviço de frontend, envie um cabeçalho HTTP para o serviço de backend e verifique uma resposta bem-sucedida com os serviços registrados no SPIRE.

  2. Para autenticação TLS mútua, você pode inspecionar a estatística ssl.handshake executando o comando a seguir.

    kubectl exec -it $POD -n $NAMESPACE -c envoy -- curl http://localhost:9901/stats | grep ssl.handshake

    Depois de executar o comando anterior, você deverá ver a contagem ssl.handshake de receptores, que será semelhante ao seguinte exemplo:

    listener.0.0.0.0_15000.ssl.handshake: 2
DevOps engenheiro

Verifique se os certificados estão sendo emitidos pela AWS Private CA.

Você pode verificar se os plug-ins foram configurados corretamente e se os certificados estão sendo emitidos pela sua CA privada upstream visualizando os registros em seu SPIRE Server. Execute o seguinte comando:

kubectl logs spire-server-0 -n spire

Em seguida, visualize os logs que são gerados. Esse código pressupõe que seu servidor se chame spire-server-0 e esteja hospedado em seu namespace spire. Você deve ver o carregamento bem-sucedido dos plug-ins e uma conexão sendo estabelecida com sua CA privada upstream.

DevOps engenheiro

Recursos relacionados

Mais informações

Conceda permissões para a função de instância do nó do cluster

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ACMPCASigning", "Effect": "Allow", "Action": [ "acm-pca:DescribeCertificateAuthority", "acm-pca:IssueCertificate", "acm-pca:GetCertificate", "acm:ExportCertificate" ], "Resource": "*" } ] } AWS Managed Policy: "AWSAppMeshEnvoyAccess"

Adicione o plug-in SPIRE para ACM

Add the SPIRE plugin for ACM Change certificate_authority_arn to your PCA ARN. The signing algorithm used must be the same as the signing algorithm on the PCA. Change your_region to the appropriate AWS Region. UpstreamAuthority "aws_pca" { plugin_data { region = "your_region" certificate_authority_arn = "arn:aws:acm-pca:...." signing_algorithm = "your_signing_algorithm" } }
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.