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.

O diagrama ilustra as seguintes etapas:
O certificado é emitido.
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
Tarefa | Descrição | Habilidades 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) 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 | DevOps engenheiro |
Tarefa | Descrição | Habilidades 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.
Isso mostrará as entradas dos SPIRE Agents. | DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Verifique o tráfego do mTLS. |
| 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:
Em seguida, visualize os logs que são gerados. Esse código pressupõe que seu servidor se chame | 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"
}
}