Autenticação TLS mútua - AWS App Mesh

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á.

Autenticação TLS mútua

A autenticação TLS (Transport Layer Security) mútua é um componente opcional do TLS que oferece autenticação bidirecional entre pares. A autenticação de TLS mútuo adiciona uma camada de segurança sobre o TLS e permite que seus serviços 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. Esse processo ajuda a verificar se o certificado foi emitido por uma autoridade de certificação (CA) confiável e se o certificado é válido. Ele também usa o Nome Alternativo do Assunto (SAN) no certificado para identificar o cliente.

Você pode ativar a autenticação TLS mútua para todos os protocolos suportados pelo AWS App Mesh. Eles são TCP, HTTP/1.1, HTTP/2, gRPC.

nota

Usando o App Mesh, você pode configurar a autenticação de TLS mútuo para comunicações entre proxies Envoy de seus serviços. No entanto, as comunicações entre seus aplicativos e os proxies do Envoy não são criptografadas.

Certificados de autenticação de TLS mútuo

AWS App Mesh suporta duas fontes de certificado possíveis para autenticação TLS mútua. Os certificados de cliente em uma política de cliente TLS e a validação do servidor em uma configuração TLS de receptor podem ser obtidos de:

  • Sistema de arquivos: certificados do sistema de arquivos local do proxy Envoy que está sendo executado. Para distribuir certificados para o Envoy, você precisa fornecer caminhos de arquivo para a cadeia de certificados e a chave privada para a API do App Mesh.

  • Envoy's Secret Discovery Service (SDS) — B ring-your-own sidecars que implementam o SDS e permitem que certificados sejam enviados ao Envoy. Eles incluem o SPIFFE Runtime Environment (SPIRE).

Importante

O App Mesh não armazena os certificados ou as chaves privadas que são usados para autenticação de TLS mútuo. Em vez disso, o Envoy os armazena na memória.

Configuração de endpoints de malha

Configure a autenticação de TLS mútuo para seus endpoints de malha, como nós virtuais ou gateways. Esses endpoints fornecem certificados e especificam autoridades confiáveis.

Para fazer isso, você precisa provisionar certificados X.509 para o cliente e para o servidor e definir explicitamente certificados de autoridade confiável no contexto de validação do encerramento do TLS e do TLS de origem.

Confiança dentro de uma malha

Os certificados do lado do servidor são configurados nos receptores do nó virtual (encerramento do TLS) e os certificados do lado do cliente são configurados nos back-ends do serviço de nós virtuais (TLS de origem). Como alternativa a essa configuração, você pode definir uma política de cliente padrão para todos os back-ends de serviços de um nó virtual e, se necessário, substituir essa política para back-ends específicos, conforme necessário. Os gateways virtuais só podem ser configurados com uma política de cliente padrão que se aplique a todos os seus back-ends.

Você pode configurar a confiança em diferentes malhas ativando a autenticação de TLS mútuo para tráfego de entrada nos gateways virtuais de ambas as malhas.

Confiança fora de uma malha

Especifique certificados do lado do servidor no receptor do Gateway Virtual para o encerramento do TLS. Configure o serviço externo que se comunica com seu Gateway Virtual para apresentar certificados do lado do cliente. Os certificados devem ser derivados de uma das mesmas autoridades de certificação (CAs) que os certificados do lado do servidor usam no receptor do Gateway Virtual para o TLS de origem.

Migração de serviços para a autenticação de TLS mútuo

Siga essas diretrizes para manter a conectividade ao migrar seus serviços existentes no App Mesh para a autenticação de TLS mútuo.

Migração de serviços que se comunicam por texto sem formatação
  1. Ative o modo PERMISSIVE para a configuração TLS no endpoint do servidor. Esse modo permite que o tráfego de texto sem formatação se conecte ao endpoint.

  2. Configure a autenticação de TLS mútuo em seu servidor, especificando o certificado do servidor, a cadeia de confiança e, opcionalmente, os SANs confiáveis.

  3. Confirme se a comunicação está acontecendo por meio de uma conexão TLS.

  4. Configure a autenticação de TLS mútuo em seus clientes, especificando o certificado de cliente, a cadeia de confiança e, opcionalmente, os SANs confiáveis.

  5. Ative o modo STRICT para a configuração TLS no servidor.

Migração de serviços que se comunicam por TLS
  1. Configure a autenticação de TLS mútuo em seus clientes, especificando o certificado de cliente e, opcionalmente, os SANs confiáveis. O certificado do cliente não é enviado para seu back-end até que o servidor de back-end o solicite.

  2. Configure a autenticação de TLS mútuo em seu servidor, especificando a cadeia de confiança e, opcionalmente, os SANs confiáveis. Para isso, seu servidor solicita um certificado de cliente.

Verificação da autenticação de TLS mútuo

Você pode consultar a documentação de Transport Layer Security: Verificação de criptografia para ver exatamente como o Envoy emite estatísticas relacionadas ao TLS. Para a autenticação de TLS mútuo, você deve inspecionar as seguintes estatísticas:

  • ssl.handshake

  • ssl.no_certificate

  • ssl.fail_verify_no_cert

  • ssl.fail_verify_san

Juntos, os dois exemplos de estatísticas a seguir mostram que as conexões TLS bem-sucedidas que terminaram no nó virtual foram todas originadas de um cliente que forneceu um certificado.

listener.0.0.0.0_15000.ssl.handshake: 3
listener.0.0.0.0_15000.ssl.no_certificate: 0

O próximo exemplo de estatística mostra que as conexões de um nó cliente virtual (ou gateway) com um nó virtual de back-end falharam. O SAN (Nome alternativo do assunto) apresentado no certificado do servidor não corresponde a nenhum dos SANs confiados pelo cliente.

cluster.cds_egress_my-mesh_my-backend-node_http_9080.ssl.fail_verify_san: 5

Tutoriais de autenticação de TLS mútuo do App Mesh