Más información sobre cómo Pod Identity de EKS concede a los pods acceso a los servicios de AWS - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Más información sobre cómo Pod Identity de EKS concede a los pods acceso a los servicios de AWS

Las aplicaciones de los contenedores de un pod pueden usar un SDK de AWS o AWS CLI para llevar a cabo solicitudes de API a servicios de AWS mediante permisos de AWS Identity and Access Management (IAM). Las aplicaciones deben firmar sus solicitudes de API AWS con credenciales de AWS.

Pod Identities de EKS ofrecen la posibilidad de administrar las credenciales para las aplicaciones, de un modo similar a cómo los perfiles de instancia de Amazon EC2 proporcionan credenciales a instancias de Amazon EC2. En lugar de crear y distribuir las credenciales de AWS a los contenedores o de utilizar el rol de la instancia de Amazon EC2, puede asociar el rol de IAM con una cuenta de servicio de Kubernetes y configurar los pods para usar la cuenta de servicio.

Cada asociación de Pod Identity de EKS asigna un rol a una cuenta de servicio en un espacio de nombres del clúster especificado. Si tiene la misma aplicación en varios clústeres, puede crear asociaciones idénticas en cada clúster sin modificar la política de confianza del rol.

Si un pod usa una cuenta de servicio que tiene una asociación, Amazon EKS establece las variables de entorno en los contenedores del pod. Las variables de entorno configuran los SDK de AWS, incluida la AWS de CLI, para usar las credenciales de la Pod Identity de EKS.

Ventajas de las Pod Identities de EKS

Las Pod Identities de EKS proporcionan los siguientes beneficios:

  • Privilegio mínimo: puede limitar los permisos de IAM a una cuenta de servicio y solo los pods que utilizan esa cuenta de servicio tienen acceso a esos permisos. Esta característica también elimina la necesidad de soluciones de terceros como kiam o kube2iam.

  • Aislamiento de credenciales: Cuando se restringe el acceso al Servicio de metadatos de instancias (IMDS) de Amazon EC2, los contenedores de un pod solo pueden recuperar las credenciales para el rol de IAM asociado a la cuenta de servicio que usa el contenedor. Un contenedor nunca tiene acceso a credenciales que utilizan otros contenedores de otros pods. Si no se restringe el IMDS, los contenedores del pod también tienen acceso al rol de IAM del nodo de Amazon EKS y es posible que los contenedores puedan acceder a las credenciales de los roles de IAM de otros pods del mismo nodo. Para obtener más información, consulte Restringir el acceso al perfil de instancias asignado al nodo de trabajo.

nota

Los pods configurados con hostNetwork: true siempre tendrán acceso al IMDS, pero los SDK y la CLI de AWS utilizarán las credenciales de Pod Identity cuando estén habilitados.

  • Auditabilidad: El acceso y el registro de eventos está disponible a través de AWS CloudTrail para facilitar una auditoría retrospectiva.

importante

Los contenedores no funcionan como un límite de seguridad, y el uso de Pod Identity no cambia esto. Los pods asignados al mismo nodo compartirán un kernel y posiblemente otros recursos, según la configuración del pod. Aunque los pods que se ejecutan en nodos separados estarán aislados en la capa de procesamiento, hay aplicaciones de nodos que tienen permisos adicionales en la API de Kubernetes más allá del ámbito de una instancia individual. Algunos ejemplos son kubelet, kube-proxy, controladores de almacenamiento CSI o sus propias aplicaciones de Kubernetes.

Pod Identity de EKS es un método más sencillo que Roles de IAM para cuentas de servicio, ya que no utiliza proveedores de identidad de OIDC. Pod Identity de EKS incluye las siguientes mejoras:

  • Operaciones independientes: en muchas organizaciones, la creación de proveedores de identidad de OIDC es una responsabilidad de equipos diferentes a la de administrar los clústeres de Kubernetes. Pod Identity de EKS tiene una clara separación de funciones, en donde toda la configuración de las asociaciones de Pod Identity de EKS se realiza en Amazon EKS y toda la configuración de los permisos de IAM se realiza en IAM.

  • Reutilización: La Pod Identity de EKS utiliza una única entidad principal de IAM en lugar de los principios independientes para cada clúster que utilizan los roles de IAM para cuentas de servicio. El administrador de IAM añade la siguiente entidad principal a la política de confianza de cualquier función para que Pod Identities de EKS puedan utilizarla.

    "Principal": { "Service": "pods.eks.amazonaws.com" }
  • Escalabilidad: cada conjunto de credenciales temporales lo asume el servicio de autenticación de EKS en Pod Identity de EKS, en lugar de cada AWS SDK que se ejecuta en cada pod. A continuación, el agente de Pod Identity de Amazon EKS que se ejecuta en cada nodo emite las credenciales de los SDK. De este modo, la carga se reduce a una vez para cada nodo y no se duplica en cada pod. Para obtener más información del proceso, consulte Descripción del funcionamiento de Pod Identity de EKS.

Para obtener más información sobre cómo comparar las dos alternativas, consulte Concesión de acceso a las cargas de trabajo de Kubernetes a AWS mediante las cuentas de servicio de Kubernetes.

Información general de configuración de las Pod Identities de EKS

Siga estos procedimientos para activar Pod Identities de EKS:

  1. Configuración del agente de Pod Identity de Amazon EKS: solo complete este procedimiento una vez para cada clúster. No necesita completar este paso si el modo automático de EKS está habilitado en el clúster.

  2. Asignación de un rol de IAM a una cuenta de servicio de Kubernetes: complete este procedimiento para cada conjunto único de permisos que desee que tenga una aplicación.

  3. Configuración de pods para acceder a los servicios de AWS con cuentas de servicio: complete este procedimiento para cada pod que necesite acceso a servicios de AWS.

  4. Uso de Pod Identity con el SDK de AWS: confirme que la carga de trabajo utilice un SDK de AWS de una versión compatible y que utilice la cadena de credenciales predeterminada.

Límites

  • Se admiten hasta 5000 asociaciones de EKS Pod Identity por clúster para asignar roles de IAM a cuentas de servicio de Kubernetes.

Consideraciones

  • Asociación de roles de IAM: Cada cuenta de servicio de Kubernetes en un clúster se puede asociar a un rol de IAM de la misma cuenta de AWS que el clúster. Para cambiar el rol, edite la asociación de EKS Pod Identity. Para el acceso entre cuentas, delegue el acceso al rol mediante los roles de IAM. Para obtener más información, consulte Delegación del acceso entre cuentas de AWS mediante roles de IAM en la Guía del usuario de IAM.

  • Agente de EKS Pod Identity: Se requiere el agente de Pod Identity para utilizar EKS Pod Identity. El agente se ejecuta como un Kubernetes DaemonSet en los nodos del clúster y proporciona credenciales solo a los pods del mismo nodo. Utiliza la hostNetwork del nodo y ocupa los puertos 80 y 2703 en la dirección local de enlace (169.254.170.23 para IPv4, [fd00:ec2::23] para IPv6). Si IPv6 está deshabilitado en su clúster, deshabilite IPv6 para el agente de Pod Identity. Para obtener más información, consulte Deshabilitar IPv6 en el agente de EKS Pod Identity.

  • Consistencia eventual: Las asociaciones de EKS Pod Identity tienen consistencia final, con posibles demoras de varios segundos después de las llamadas a la API. Evite crear o actualizar asociaciones en rutas de código críticas y de alta disponibilidad. En cambio, realice estas acciones en rutinas de inicialización o configuración separadas y menos frecuentes. Para obtener más información, consulte Grupos de seguridad por pod en la Guía de prácticas recomendadas de EKS.

  • Consideraciones sobre el proxy y el grupo de seguridad: Para los pods que utilizan un proxy, añada 169.254.170.23 (IPv4) y [fd00:ec2::23] (IPv6) a las variables de entorno de no_proxy/NO_PROXY para evitar que se produzcan errores en las solicitudes al agente de EKS Pod Identity. Si utiliza grupos de seguridad para pods con la CNI de AWS VPC, establezca el indicador ENABLE_POD_ENI en “true” y el indicador POD_SECURITY_GROUP_ENFORCING_MODE “standard”. Para obtener más información, consulte Asignación de los grupos de seguridad a pods individuales.

Versiones del clúster de Pod Identity de EKS

Para usar EKS Pod Identity, el clúster debe tener una versión de la plataforma igual o posterior a la que se indica en la siguiente tabla, o una versión de Kubernetes posterior a las versiones que se muestran en la tabla. Para buscar la versión sugerida del Agente de Amazon EKS Pod Identity para una versión de Kubernetes, consulte Comprobación de la compatibilidad de la versión del complemento de Amazon EKS con un clúster.

Versión de Kubernetes Versión de la plataforma

Versiones de Kubernetes no enumeradas

Todas las versiones de la plataforma compatibles

1.28

eks.4

1.27

eks.8

1.26

eks.9

Restricciones de Pod Identity de EKS

Pod Identities de EKS están disponibles en las siguientes ubicaciones:

Pod Identities de EKS no están disponibles en las siguientes ubicaciones:

  • AWS Outposts.

  • Amazon EKS Anywhere.

  • Los clústeres de Kubernetes que se crean y ejecutan en Amazon EC2. Los componentes de Pod Identity de EKS solo están disponibles en Amazon EKS.

No puede usar Pod Identities de EKS con:

  • Pods que se ejecutan en cualquier lugar, excepto instancias Linux Amazon EC2. No se admiten los pods de Linux y Windows que se ejecutan en AWS Fargate (Fargate). No se admiten pods que se ejecutan en instancias Windows de Amazon EC2.