Kubernetes RBAC es un eficaz método de autorización basado en roles que se utiliza para proporcionar un acceso granular a los recursos de un clúster Kubernetes.

Sin embargo, si no se utiliza correctamente, puede provocar fácilmente una catástrofe de cumplimiento. Por eso necesitamos herramientas RBAC para auditar y localizar los permisos de riesgo en Kubernetes.

En este artículo, hablaremos sobre qué es el RBAC de Kubernetes, por qué es importante auditar los permisos de riesgo y ¡descubriremos las herramientas que mejor nos pueden ayudar en la auditoría de permisos de riesgo!

¿Qué es RBAC?

El control de acceso basado en roles (RBAC) es un mecanismo de seguridad en el que cada autorización de acceso se basa en los roles que se asignan a un usuario. Con este sistema es posible, por tanto, restringir el acceso a los recursos de un clúster Kubernetes (namespaces, pods, jobs) a aplicaciones o usuarios.

En Kubernetes, las políticas RBAC pueden utilizarse para gestionar los derechos de acceso de un usuario del sistema (Usuario o Grupo), así como los de las cuentas de servicio (Cuenta de Servicio).

Existen otras formas de autorizar a los usuarios en Kubernetes, como ABAC (control de acceso basado en atributos), a través de Webhook o Node Authorization, pero el mecanismo de autorización más utilizado y nativo disponible en la versión estable es RBAC.

Prácticamente toda la interacción con los recursos se realiza a través de su servidor API, lo que significa que, al final, todo se limita a realizar peticiones HTTP a dicho servidor (un componente esencial del nodo/s maestro o Panel de Control ).

Kubernetes dispone de cuatro objetos relacionados con RBAC que pueden combinarse para establecer los permisos de acceso a los recursos del clúster. Se trata de Role, ClusterRole, RoleBinding y ClusterRoleBinding.Para trabajar con estos objetos, al igual que con todos los objetos de Kubernetes, es necesario utilizar la API de Kubernetes.

Roles en Kubernetes

En Kubernetes, existen dos tipos de roles llamados Role y ClusterRole. La mayor diferencia entre ambos es que el Role pertenece a un espacio de nombres concreto, mientras que el ClusterRole es global al cluster. Así, en el caso de ClusterRole, su nombre debe ser único ya que pertenece al cluster. En el caso de un Role, dos espacios de nombres diferentes pueden tener un Role con el mismo nombre.

Otra diferencia que debe mencionarse es que Role permite el acceso a recursos que se encuentran dentro del mismo espacio de nombres, mientras que ClusterRole, además de poder dar acceso a recursos en cualquier espacio de nombres, también puede dar acceso a recursos en el mismo espacio de nombres como nodos entre otros.

Ahora que conocemos los tipos de roles, lo siguiente es saber a quién podemos asignar estos roles. En este caso, tenemos Cuentas de Usuario, Cuentas de Servicio y Grupos.

Las cuentas de usuario son cuentas asignadas a un usuario en particular, mientras que las cuentas de servicio son utilizadas por los procesos. Por ejemplo, imaginemos que nuestra aplicación necesita acceder mediante programación a recursos del cluster, para ello utilizaríamos una cuenta de servicio.

Por último, necesitamos el «pegamento» que vincula un rol a una cuenta (de usuario o de servicio) o a un grupo. Existen dos recursos en Kubernetes para ello: RoleBinding y ClusterRoleBinding. El RoleBinding puede hacer referencia a un rol que se encuentre en el mismo espacio de nombres, mientras que el ClusterRoleBinding puede hacer referencia a cualquier rol en cualquier espacio de nombres y asignar permisos de forma global.

Como nota, los permisos sólo permiten el acceso a los recursos, ya que «por defecto, todo está denegado» y es posible asignar varios roles a un mismo usuario

El único requisito previo para utilizar RBAC es que esté habilitado en nuestro clúster mediante la opción"-authorization-mode=RBAC«. Podemos comprobarlo utilizando el comando

kubectl api-versions

¿Qué son los permisos RBAC de riesgo y cómo solucionarlos?

Cualquier permiso que permita o pueda permitir el acceso no autorizado a los recursos del pod se considera un permiso arriesgado. Por ejemplo, si un usuario tiene permiso de edición puede editar su propio rol y puede acceder a recursos a los que, de otro modo, no está autorizado a acceder. Esto puede dar lugar a un problema de cumplimiento.

Del mismo modo, si los permisos antiguos se dejan sin marcar, algunos usuarios pueden acceder a recursos que ya no necesitan.

Es difícil y lleva mucho tiempo encontrar manualmente estos permisos de riesgo cuando se tiene un gran número de Roles. Para hacer este proceso hay una serie de herramientas de auditoría de permisos RBAC que ayudan a escanear todo su Cluster para localizar cualquier permiso arriesgado. También es importante comprender que la eficacia de RBAC depende de una política RBAC actualizada que, a su vez, requiere una auditoría de permisos regular.

A continuación encontrará algunas de las mejores herramientas RBAC para auditar permisos basadas en diferentes idiomas e interfaces de usuario.

KubiScan

KubiScan es una herramienta RBAC basada en Python para escanear permisos de riesgo en un clúster Kubernetes. La herramienta debe ejecutarse en el nodo maestro y luego puede ejecutarse directamente desde el terminal para obtener una lista de los permisos de riesgo. Kubiscan puede utilizarse para encontrar Roles, ClusterRoles, RoleBindings, ClusterBindings, Subjects, Pods e incluso Containers que presenten riesgos.

Krane

Krane de Appvia es una herramienta de análisis estático y visualización de Kubernetes RBAC basada en Ruby. Puede ejecutarse tanto localmente como CLI o en una canalización CI/CD. Además, también puede funcionar como un servicio independiente dentro de un contenedor Kubernetes. Krane ofrece la posibilidad de analizar los permisos RBAC a través de vistas facetadas de árbol y grafos de red. También da alertas para cualquier permiso de riesgo a través de su integración Slack.

Herramienta RBAC

RBAC Tool de InsightCloudSec es una herramienta independiente de auditoría de permisos construida con Go. No sólo le permite escanear y resaltar los permisos RBAC riesgosos, sino que también le permite generar una política RBAC a partir de la auditoría de permisos a través de su función Auditgen. La herramienta RBAC también ofrece la característica de visualización RBAC.

Fairwinds

FairwindsInsight es una herramienta independiente que ofrece una serie de funciones de seguridad y cumplimiento de Kubernetes. Su función de aplicación de políticas le permite auditar los permisos RBAC y analizarlos con respecto a las políticas estándar y personalizadas. Fairwinds ofrece una demostración a petición.

Gestor de permisos

Permission Manager de Signup es una herramienta de gestión de permisos de Kubernetes basada en Javascript. Ofrece una forma fácil y con iniciativa de gestionar los permisos de usuario dentro de un clúster Kubernetes. Permission Manager también ofrece una edición empresarial de la herramienta que le permite realizar auditorías básicas de permisos RBAC.

Conclusión 👩‍💻

Kubernetes RBAC es una forma eficaz de gestionar el acceso a los recursos en un clúster Kubernetes. Sin embargo, si no se implementa correctamente puede dar lugar a problemas de seguridad y cumplimiento. Esto, sin embargo, puede evitarse auditando continuamente los permisos a través de herramientas de auditoría RBAC.

Puede que también le interese Las mejores prácticas de Kubernetes.