Prácticas recomendadas de cifrado para Amazon EKS - AWS Guía prescriptiva

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.

Prácticas recomendadas de cifrado para Amazon EKS

Amazon Elastic Kubernetes Service (Amazon EKS) le ayuda a ejecutar AWS Kubernetes sin necesidad de instalar o mantener su propio plano de control o nodos de Kubernetes. En Kubernetes, los secretos lo ayudan a administrar la información confidencial, como los certificados de usuario, las contraseñas o las claves de API. De forma predeterminada, estos secretos se almacenan sin cifrar en el almacén de datos subyacente del servidor de API, que se denomina etcd. En Amazon EKS, los volúmenes de Amazon Elastic Block Store (Amazon EBS) etcd para los nodos se cifran con el cifrado de Amazon EBS. Cualquier usuario con acceso a la API o acceso a etcd puede recuperar o modificar un secreto. Además, cualquier persona autorizada a crear un pod en un espacio de nombres puede utilizar ese acceso para leer cualquier secreto de ese espacio de nombres. Puede cifrar estos secretos inactivos en Amazon EKS mediante claves AWS KMS keys administradas o claves AWS administradas por el cliente. Un enfoque alternativo etcd es usar AWS Secrets and Config Provider (ASCP) (GitHub repositorio). El ASCP se integra con las políticas basadas en recursos y IAM para limitar y restringir el acceso a los datos secretos solo en determinados pods de Kubernetes dentro de un clúster.

Puedes usar los siguientes servicios de AWS almacenamiento con Kubernetes:

  • Para Amazon EBS, puede utilizar el controlador de almacenamiento en árbol o el controlador CSI de Amazon EBS. Ambos incluyen parámetros para cifrar los volúmenes y brindar una clave administrada por el cliente.

  • En el caso de Amazon Elastic File System (Amazon EFS), puede utilizar el Controlador de CSI de Amazon EFS con soporte para aprovisionamiento dinámico y estático.

Tenga en cuenta las siguientes prácticas recomendadas de cifrado para este servicio:

  • Si utiliza etcd, que almacena los objetos secretos sin cifrar de forma predeterminada, realice lo siguiente para ayudar a proteger los secretos:

    • Cifrar los datos secretos en reposo (documentación de Kubernetes).

    • Utilícelo AWS KMS para cifrar en sobres los secretos de Kubernetes. Esto le permite cifrar sus secretos con una clave de datos única. Puede utilizar una AWS KMS clave de cifrado clave para cifrar la clave de datos. Puede rotar automáticamente la clave de cifrado de forma periódica. Con el AWS KMS complemento para Kubernetes, todos los secretos de Kubernetes se almacenan en texto cifrado. etcd Solo los puede descifrar el servidor API de Kubernetes. Para obtener más información, consulte Uso del soporte del proveedor de cifrado Amazon EKS para una defensa en profundidad y Cifrar secretos de Kubernetes con AWS KMS clústeres existentes.

    • Habilite o configure la autorización a través de reglas de control de acceso basado en roles (RBAC) que restringen la lectura y la escritura del secreto. Restrinja los permisos para crear secretos nuevos o reemplazar los existentes. Para obtener más información, consulte Información general sobre la autorización (documentación de Kubernetes).

    • Si define varios contenedores en un pod y solo uno de ellos necesita acceder a un secreto, defina el montaje del volumen para que los demás contenedores no tengan acceso a ese secreto. Los secretos que se montan como volúmenes se instancian como volúmenes tmpfs y se eliminan de forma automática del nodo cuando se elimina el pod. También puede utilizar variables de entorno, pero no recomendamos este enfoque porque los valores de las variables de entorno pueden aparecer en los registros. Para obtener más información, consulte Secretos (documentación de Kubernetes).

    • Cuando sea posible, evite conceder acceso a las solicitudes watch y list para secretos dentro de un espacio de nombres. En la API de Kubernetes, estas solicitudes son eficaces porque permiten al cliente inspeccionar los valores de cada secreto de ese espacio de nombres.

    • Permita que solo los administradores de clústeres accedan a etcd, incluido el acceso de solo lectura.

    • Si hay varias instancias etcd, asegúrese de que etcd utilice TLS para la comunicación entre pares etcd.

  • Si utiliza ASCP, realice lo siguiente para ayudar a proteger los secretos:

  • Para ayudar a mitigar el riesgo de fugas de datos de las variables de entorno, le recomendamos que utilice el controlador CSI AWS Secrets Manager y Config Provider for Secret Store (GitHub). Este controlador le permite hacer que los secretos almacenados en Secrets Manager y los parámetros almacenados en el Almacén de parámetros aparezcan como archivos montados en los pods de Kubernetes.

    nota

    AWS Fargate no es compatible.

  • Crea un filtro de CloudWatch métricas y una alarma de Amazon para enviar alertas sobre operaciones especificadas por el administrador, como la eliminación de un secreto o el uso de una versión secreta en el período de espera para eliminarlo. Para obtener más información, consulte Creación de una alarma basada en la detección de anomalías.