View a markdown version of this page

Concesión de RBAC de Kubernetes adicional a controladores administrados del modo automático de EKS - 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.

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) o ClusterRole (en todo el clúster) que describa el permiso adicional, y un RoleBinding o ClusterRoleBinding cuyo nombre de subjects: sea el grupo eks: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 de ClusterRole + ClusterRoleBinding (en todo el clúster).

  • Restrinja resources, resourceNames y verbs al conjunto más pequeño que desbloquee su caso de uso. Por ejemplo, conceda get en un solo Secret con nombre en lugar de list, watch en todos los objetos de tipo Secret.

  • Elimine el Role y RoleBinding cuando 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:managed está presente en los clústeres del modo automático de EKS cuyo rol vinculado al servicio es AWSServiceRoleForAmazonEKS.

  • Un enlace a eks:managed se aplica a todos los controladores administrados del modo automático de EKS. Para mantener pequeño el radio de acción práctico, utilice resourceNames y objetos de tipo Role con 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.