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.
Concesión de RBAC de Kubernetes adicional a controladores administrados del modo automático de EKS
El modo automático de Amazon EKS administra los siguientes controladores en su nombre: equilibrio de carga, redes, computación, almacenamiento en bloques e información de clústeres. Estos controladores se ejecutan en el plano de control de EKS. Se autentican en el clúster como el rol vinculado al servicio AWSServiceRoleForAmazonEKS y sus permisos dentro del clúster provienen de las políticas de acceso administradas de AWS adjuntas a esa entrada de acceso.
Puede ampliar el RBAC de Kubernetes de un controlador administrado. Esto resulta útil cuando la política administrada aún no concede el permiso necesario; por ejemplo, get en un Secret específico.
En los clústeres del modo automático de Amazon EKS, la entrada de acceso creada automáticamente para AWSServiceRoleForAmazonEKS también declara eks:managed del grupo de Kubernetes. El RBAC de Kubernetes es aditivo. Un RoleBinding (o ClusterRoleBinding) cuyo nombre de subjects: sea el grupo eks:managed concede a los controladores administrados permisos adicionales además de las políticas de acceso administradas.
Funcionamiento
-
Los controladores administrados del modo automático de EKS se conectan al clúster como el rol vinculado al servicio
AWSServiceRoleForAmazonEKS. -
La entrada de acceso creada automáticamente para ese rol declara
kubernetesGroups: ["eks:managed"]. -
Cree un
Role(con espacio de nombres) oClusterRole(en todo el clúster) que describa el permiso adicional, y unRoleBindingoClusterRoleBindingcuyo nombre desubjects:sea el grupoeks:managed. -
El RBAC de Kubernetes combina el enlace con las políticas de acceso administradas para que los controladores administrados reciban ambos conjuntos de permisos.
Para confirmar que el grupo esté presente, ejecute:
CLUSTER=<your-cluster> REGION=<your-region> ACCT=$(aws sts get-caller-identity --query Account --output text) aws eks describe-access-entry \ --cluster-name "$CLUSTER" --region "$REGION" \ --principal-arn "arn:aws:iam::${ACCT}:role/aws-service-role/eks.amazonaws.com/AWSServiceRoleForAmazonEKS" \ --query 'accessEntry.kubernetesGroups'
Resultado previsto:
[ "eks:managed" ]
Definición del ámbito de la concesión de forma precisa
El grupo eks:managed se aplica a todos los controladores administrados del modo automático de EKS. Limite la concesión adicional tan estrictamente como lo permita su caso de uso, de modo que solo exponga exactamente lo que necesita un controlador administrado:
-
Prefiera
Role+RoleBinding(con espacio de nombres) en lugar deClusterRole+ClusterRoleBinding(en todo el clúster). -
Restrinja
resources,resourceNamesyverbsal conjunto más pequeño que desbloquee su caso de uso. Por ejemplo, concedageten un soloSecretcon nombre en lugar delist, watchen todos los objetos de tipoSecret. -
Elimine el
RoleyRoleBindingcuando ya no los necesite.
Consideraciones para el modo automático de Amazon EKS
-
Este mecanismo solo amplía el RBAC de Kubernetes de los controladores administrados del modo automático de EKS. No cambia los permisos de IAM de AWS concedidos por las políticas de acceso administradas.
-
El grupo
eks:managedestá presente en los clústeres del modo automático de EKS cuyo rol vinculado al servicio esAWSServiceRoleForAmazonEKS. -
Un enlace a
eks:managedse aplica a todos los controladores administrados del modo automático de EKS. Para mantener pequeño el radio de acción práctico, utiliceresourceNamesy objetos de tipoRolecon espacio de nombres. Esto expone solo los recursos que nombra y solo a través de los verbos que conceda. -
Se trata de un patrón de transición pensado para los casos en los que una política de acceso administrada aún no cubre el permiso que se necesita. Si una política administrada de AWS ya cubre el permiso, utilice la política administrada en su lugar.
Ejemplo
Para ver un tutorial paso a paso que concede get al controlador del equilibrador de carga del modo automático de EKS en un Secret de OIDC con nombre, lo que desbloquea la anotación alb.ingress.kubernetes.io/auth-type: oidc en una Ingress de ALB, consulte Concesión de acceso a un secreto específico al controlador del equilibrador de carga del modo automático de EKS.