View a markdown version of this page

Refuerzo del RBAC de Kubernetes en Amazon 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.

Refuerzo del RBAC de Kubernetes en Amazon EKS

El control de acceso basado en roles (RBAC) de Kubernetes controla qué acciones pueden realizar las identidades dentro de un clúster. Muchos componentes del clúster, incluidos los controladores de CSI y otros complementos instalados como DaemonSets, requieren amplios permisos para funcionar. La revisión y el alcance de estos permisos reducen el alcance potencial de cualquier acceso no intencionado.

En este tema se describen las consideraciones sobre los permisos para los componentes comunes del clúster y los controles recomendados.

Permisos de cuentas de servicio de DaemonSet

Los pods de DaemOnset se ejecutan en todos los nodos del clúster, por lo que los tokens de sus cuentas de servicio y los permisos RBAC que esos tokens conceden están presentes en todos los nodos.

Un proceso no autorizado en un nodo puede acceder a los tokens de las cuentas de servicio de otros pods que se ejecutan en el mismo nodo, incluidos los pods de DaemonSet. Los permisos del RBAC otorgados a las cuentas de servicio de DaemonSet son los mismos en cada nodo del clúster.

Los componentes que se suelen implementar como DaemonSets incluyen:

  • Controladores de nodos de CSI (ebs-csi-node, efs-csi-node, mountpoint-s3-csi-node)

  • El complemento CNI de Amazon VPC (aws-node)

  • kube-proxy

Si un pod de DaemonSet tiene credenciales de AWS IAM mediante EKS Pod Identity o IAM Roles for Service Accounts (IRSA), un proceso que obtenga acceso fuera de su contenedor en el mismo nodo también podría acceder a esas credenciales. Esto amplía el alcance del impacto más allá del RBAC de Kubernetes y abarca cualquier permiso de API de AWS otorgado a un rol de IAM de DaemonSet.

importante

Al revisar los permisos, trate los permisos del RBAC de Kubernetes y los permisos de IAM de cada cuenta de servicio de DaemonSet como accesibles desde todos los nodos del clúster.

RBAC del controlador de CSI

Los controladores CSI suelen tener permisos amplios de RBAC, ya que interactúan con nodos, volúmenes persistentes y API de almacenamiento.

Permisos de objetos de nodos

Los controladores de CSI pueden requerir permisos RBAC para modificar los objetos de los nodos, con el fin de admitir características como la eliminación de taint u otras tareas de administración de nodos. Debido a las limitaciones del RBAC de Kubernetes, estos permisos se aplican a todos los objetos de nodo del clúster, no solo al nodo local en el que se ejecuta el controlador.

Para el controlador de CSI de EBS, el gráfico de Helm proporciona un parámetro (node.serviceAccount.disableMutation) que elimina el permiso de modificación de nodos de la cuenta de servicio ebs-csi-node. Al activar esto, se desactiva la característica de eliminación de taint.

Exposición del token de la cuenta de servicio

Los pods del controlador de CSI pueden usar los tokens de cuentas de servicio proyectados para la autenticación. En un nodo donde un proceso no autorizado haya obtenido acceso fuera de su contenedor, esos tokens pueden ser accesibles a través del sistema de archivos del contenedor o de la API de kubelet. Si la cuenta de servicio también está asociada a un rol de IAM a través de EKS Pod Identity o IRSA, se puede usar un token expuesto para obtener las credenciales de AWS IAM.

Aplique el principio de privilegio mínimo en RBAC

  • Revise los ClusterRoles vinculados al controlador de CSI y a las cuentas de servicio de DaemonSet. Elimine los permisos que no sean necesarios para sus cargas de trabajo.

  • En el caso del controlador de CSI de EBS, configure node.serviceAccount.disableMutation como true si no utiliza la característica de eliminación de taint.

  • Utilice kubectl auth can-i --list --as=system:serviceaccount:NAMESPACE:SERVICE_ACCOUNT para auditar los permisos en vigor.

Aplicación de estándares de seguridad de pod

Aplique los estándares de seguridad del pod de Kubernetes mediante el controlador Pod Security Admission integrado o un motor de políticas. Como mínimo, aplique el perfil baseline en todo el clúster y el perfil restricted para los espacios de nombres de las cargas de trabajo. Esto limita la capacidad de crear contenedores con privilegios fuera de los espacios de nombres del sistema.

Uso de políticas de red

Aplique políticas de red para restringir la salida del controlador de CSI y de los pods de DaemonSet solo a los puntos de conexión que necesiten (por ejemplo, el servidor de la API de Kubernetes y los puntos de conexión del servicio AWS). Esto reduce el alcance de las acciones posibles.

Supervisión de la actividad del RBAC

Active el registro de auditorías de Kubernetes y supervise las llamadas inesperadas a la API desde las cuentas de servicio de DaemonSet. Busque lo siguiente:

  • Modificaciones de nodos desde las cuentas de servicio de controladores de CSI

  • Creación de pods en los espacios de nombres del sistema

  • Llamadas inusuales de get o list a secretos

Para obtener más información, consulte Envío de los registros del plano de control a Registros de CloudWatch.