Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Activación de mTLS en AWS App Mesh con AWS Private CA en Amazon EKS
Omar Kahil, Emmanuel Saliu, Muhammad Shahzad y Andy Wong, Amazon Web Services
Resumen
Este patrón muestra cómo implementar Mutual Transport Layer Security (mTLS) en Amazon Web Services (AWS) mediante certificados de AWS Private Certificate Authority (AWS Private CA) en AWS App Mesh. Utiliza la API del servicio de descubrimiento secreto (SDS) de Envoy a través del marco de identidad de producción seguro para todos (SPIFFE). SPIFFE es un proyecto de código abierto de Cloud Native Computing Foundation (CNCF) que cuenta con un amplio apoyo de la comunidad y que proporciona una gestión de identidades de la carga de trabajo detallada y dinámica. Para implementar los estándares de SPIFFE, utilice el entorno de tiempo de ejecución de SPIRE SPIFFE.
El uso de mTLS en App Mesh ofrece una autenticación entre pares bidireccional, ya que añade una capa de seguridad sobre TLS y permite que los servicios de la malla verifiquen el cliente que realiza la conexión. El cliente en la relación cliente-servidor también proporciona un certificado X.509 durante el proceso de negociación de la sesión. El servidor utiliza este certificado para identificar y autenticar al cliente. Esto ayuda a verificar si el certificado lo ha emitido una entidad de certificación (CA) de confianza y si el certificado es válido.
Requisitos previos y limitaciones
Requisitos previos
Un clúster de Amazon Elastic Kubernetes Service (Amazon EKS) con grupos de nodos autogestionados o gestionados
Controlador App Mesh implementado en el clúster con el SDS activado
Un certificado privado de AWS Certificate Manager (ACM) emitido por AWS Private CA
Limitaciones
SPIRE no se puede instalar en AWS Fargate porque el agente de SPIRE debe ejecutarse como Kubernetes. DaemonSet
Versiones de producto
Gráfico del controlador AWS App Mesh 1.3.0 o posterior
Arquitectura
El siguiente diagrama muestra el clúster de EKS con App Mesh en la VPC. El servidor SPIRE de un nodo de trabajo se comunica con los agentes de SPIRE de otros nodos de trabajo y con AWS Private CA. Envoy se utiliza para la comunicación mTLS entre los nodos de trabajo del agente SPIRE.

El siguiente diagrama muestra los siguientes pasos:
Se emite el certificado.
Solicite la firma y el certificado.
Herramientas
Servicios de AWS
CA privada de AWS: la autoridad de certificación privada de AWS (CA privada de AWS) permite la creación de jerarquías de autoridades de certificación (CA) privadas, incluidas las principales y las subordinadas CAs, sin los costos de inversión y mantenimiento que implica operar una CA local.
AWS App Mesh: AWS App Mesh es una malla de servicios que facilita el monitoreo y el control de los servicios. App Mesh estandariza la forma en que se comunican sus servicios, ofreciendo visibilidad y controles de tráfico de red coherentes para cada microservicio en una aplicación.
Amazon EKS: Amazon Elastic Kubernetes Service (Amazon EKS) es un servicio administrado que puede utilizar para ejecutar Kubernetes en AWS sin necesidad de instalar, operar ni mantener su propio plano de control o nodos de Kubernetes.
Otras herramientas
Helm
: Helm es un administrador de paquetes para Kubernetes que le ayuda a instalar y administrar aplicaciones en su clúster de Kubernetes. Este patrón usa Helm para implementar el controlador AWS App Mesh. Gráfico del controlador AWS App Mesh
– Este patrón utiliza el gráfico del controlador AWS App Mesh para habilitar AWS App Mesh en Amazon EKS.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Configure App Mesh con Amazon EKS. | Siga los pasos básicos de implementación que se proporcionan en el repositorio | DevOps ingeniero |
Instale SPIRE. | Instale SPIRE en el clúster EKS mediante spire_setup.yaml | DevOps ingeniero |
Instale el certificado de AWS Private CA. | Cree e instale un certificado para su raíz privada CA siguiendo las instrucciones de la documentación de AWS. | DevOps ingeniero |
Conceda permisos al rol de instancia del nodo del clúster. | Para adjuntar políticas al rol de instancia del nodo del clúster, use el código que se encuentra en la sección de Información adicional. | DevOps ingeniero |
Añada el complemento SPIRE para AWS Private CA. | Para añadir el complemento a la configuración del servidor SPIRE, utilice el código que se encuentra en la sección de Información adicional. Sustituya el nombre de recursos de Amazon (ARN) Para obtener más información sobre el complemento, consulte el complemento del servidor: UpstreamAuthority «aws_pca | DevOps ingeniero |
Actualice bundle.cert. | Tras crear el servidor SPIRE, se creará un archivo | DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Registre las entradas de nodos y cargas de trabajo con SPIRE. | Para registrar el nodo y la carga de trabajo (servicios) en el servidor SPIRE, utilice el código del repositorio | DevOps ingeniero |
Cree una malla en App Mesh con los mTLS activados. | Cree una nueva malla en App Mesh con todos los componentes de su aplicación de microservicios (por ejemplo, servicio virtual, router virtual y nodos virtuales). | DevOps ingeniero |
Inspeccione las entradas registradas. | Puede inspeccionar las entradas registradas de sus nodos y cargas de trabajo ejecutando el siguiente comando.
Esto mostrará las entradas de los agentes de SPIRE. | DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Verifique el tráfico de mTLS. |
| DevOps ingeniero |
Verifique que los certificados se emitan desde AWS Private CA. | Puede comprobar que los complementos se hayan configurado correctamente y que los certificados se están emitiendo desde su CA privada principal consultando los registros de su servidor SPIRE. Ejecute el siguiente comando.
A continuación, consulte los registros que se generan. Este código asume que su servidor se llama | DevOps ingeniero |
Recursos relacionados
Información adicional
Adjuntar permisos al rol de instancia del nodo del clúster
{ "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"
Cómo añadir el complemento 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" } }