¿Kubernetes integrado? Ahora pruebe estas 5 herramientas RBAC para auditar permisos

Publicado: 2022-03-14

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

Sin embargo, si no se usa correctamente, puede causar fácilmente una catástrofe de cumplimiento. Es por eso que necesitamos herramientas RBAC para auditar y ubicar permisos riesgosos en Kubernetes.

En este artículo, discutiremos qué es Kubernetes RBAC, por qué es importante auditar los permisos riesgosos y descubriremos las herramientas que pueden ayudarnos mejor en la auditoría de permisos riesgosos.

¿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 roles que se asignan a un usuario. Con este sistema, por lo tanto, es posible restringir el acceso a los recursos de un clúster de Kubernetes (espacios de nombres, pods, trabajos) a aplicaciones o usuarios.

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

Hay otras formas de autorizar usuarios en Kubernetes como ABAC (Control de acceso basado en atributos), a través de Webhook o Autorización de nodo, pero el mecanismo de autorización nativo más utilizado y disponible en versión estable es RBAC.

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

Kubernetes tiene cuatro objetos relacionados con RBAC que se pueden combinar para establecer permisos de acceso a los recursos del clúster. Estos son Role, ClusterRole, RoleBinding y ClusterRoleBinding. Para trabajar con estos objetos, como todos los objetos de Kubernetes, se debe usar la API de Kubernetes.

Funciones en Kubernetes

En Kubernetes, hay dos tipos de roles llamados Rol y ClusterRole. La mayor diferencia entre los dos es que Role pertenece a un espacio de nombres concreto, mientras que ClusterRole es global para el clúster. Entonces, en el caso de ClusterRole, su nombre debe ser único ya que pertenece al clúster. En el caso de Rol, dos espacios de nombres diferentes pueden tener un Rol con el mismo nombre.

Otra diferencia que se debe mencionar es que Role permite el acceso a recursos que están 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 procesos. Por ejemplo, imagina que nuestra aplicación necesita acceder mediante programación a recursos del clúster, para ello usaríamos una cuenta de servicio.

Finalmente, necesitamos el "pegamento" que une un rol a una cuenta (usuario o servicio) o grupo. Hay dos recursos en Kubernetes para esto: RoleBinding y ClusterRoleBinding. RoleBinding puede hacer referencia a un rol que está en el mismo espacio de nombres, mientras que ClusterRoleBinding puede hacer referencia a cualquier rol en cualquier espacio de nombres y asignar permisos globalmente.

Como nota, los permisos solo 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 usar RBAC es que esté habilitado en nuestro clúster mediante la opción " –authorization-mode=RBAC ". Podemos verificar esto usando el comando:

 kubectl api-versions

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

Cualquier permiso que permita o pueda permitir el acceso no autorizado a los recursos del pod se considera un permiso riesgoso. Por ejemplo, si un usuario tiene permiso de edición, puede editar su propio Rol y acceder a recursos a los que de otro modo no tendría acceso. Esto puede resultar en un problema de cumplimiento. Del mismo modo, si los permisos antiguos se dejan sin marcar, algunos usuarios pueden acceder a los recursos que ya no necesitan.

Es difícil y lleva mucho tiempo encontrar manualmente un permiso tan arriesgado cuando tiene una gran cantidad de roles. Para realizar este proceso, hay una serie de herramientas de auditoría de permisos de RBAC que ayudan a escanear todo el clúster para localizar cualquier permiso de riesgo. También es importante comprender que la eficacia de RBAC depende de una política de RBAC actualizada que, a su vez, requiere auditorías periódicas de permisos.

Las siguientes son algunas de las mejores herramientas de RBAC para auditar permisos en función de diferentes idiomas e interfaces de usuario.

KubiScan

KubiScan es una herramienta RBAC basada en Python para escanear permisos riesgosos en un clúster de Kubernetes. La herramienta debe ejecutarse dentro del nodo maestro y luego puede ejecutarse directamente desde la terminal para brindar una lista de permisos riesgosos. Kubiscan se puede usar para encontrar Roles riesgosos, ClusterRoles, RoleBindings, ClusterBindings, Subjects, Pods e incluso Container.

Krane

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

Herramienta RBAC

La herramienta RBAC de InsightCloudSec es una herramienta de auditoría de permisos independiente creada con Go. No solo 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 función de visualización RBAC.

vientos favorables

Fairwinds Insight es una herramienta independiente que proporciona una serie de características de seguridad y cumplimiento de Kubernetes. Su función de cumplimiento de políticas le permite auditar los permisos de RBAC y compararlos con las políticas estándar y personalizadas. Fairwinds ofrece una demostración bajo demanda.

Administrador de permisos

Permission Manager de Sighup es una herramienta de administración de permisos de Kubernetes basada en Javascript. Ofrece una forma fácil e iniciativa de administrar los permisos de usuario dentro de un clúster de 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 eficiente de administrar el acceso a los recursos en un clúster de Kubernetes. Sin embargo, si no se implementa correctamente, puede generar problemas de seguridad y cumplimiento. Sin embargo, esto se puede evitar auditando continuamente los permisos a través de las herramientas de auditoría de RBAC.

También puede estar interesado en las mejores prácticas de Kubernetes.