@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

Inicio - Kubernetes - Hardening Kubernetes: Permisos (RBAC)
kubernetes-permisos-rbac-1

Hardening Kubernetes: Permisos (RBAC)

Hardening Kubernetes: Permisos (RBAC)

Como ya hemos comentado la gestión de identidades y usuarios no está integrada en la plataforma y debe ser administrada por plataformas externas (Directorio Activo, Keycloak…). Sin embargo, lo que sí hace Kubernetes es manejar la autenticación y la autorización.

Cuando hablamos de dar permisos en un clúster de Kubernetes, tendremos que hablar del control de acceso basado en Roles. O lo que se denomina Role Based Access Control o RBAC, el cual maneja políticas de seguridad para usuarios, grupos o Pods, y que está implementado de una forma estable desde la versión 1.8 de Kubernetes.

Existen otras formas de autorizar usuarios como ABAC (Attribute-based access control), mediante Webhook o Node Authorization, pero explicaremos RBAC que es la más popular.

Ya hemos hablado de los usuarios en el punto anterior. En el caso de los Pods, para que un Pod pueda acceder a la API de Kubernetes necesitamos darle permisos específicos para ello. De hecho, los Roles se definen a nivel del espacio de nombres o Namespace.

Roles, Cluster Roles, Role/Cluster Bindings y Service Accounts

Vamos a definir brevemente en qué consisten los tipos de permisos que somos capaces de dar mediante RBAC.

  • Roles: sirven para declarar servicios que afectan a Namespaces. Es decir, si necesitas darle permisos a un usuario, para acceder a un Namespace necesitas generar un role.
    • Recursos: son Pods, NameSpace, Servicios, Deployments…
    • Verbos: acciones que puedo lanzar a esos recursos (Get, List…)
  • Cluster Role: si lo que buscamos es dar permisos a todo el Cluster y todos los Namespaces generaremos un Cluster Role.
  • Role/Cluster Binding: define qué usuarios tienen qué roles. Sirve para asignar los usuarios a un Role o Cluster Role y poder asignar los permisos.
    • Role: definición de los permisos para cada tipo de recurso de Kubernetes
    • Subject: son los propios usuarios o grupos de usuarios
    • Service Account: usuario que se crea para asignar los permisos
  • Service Accounts: para dar permisos a Pods, necesitamos generar Service Accounts o cuentas de servicio

Como apunte, los permisos sólo permiten acceso a recursos, porque «por defecto se deniega todo» y es posible asignar varios roles al mismo usuario

El único pre-requisito para usar RBAC que esté habilitado en nuestro clúster mediante la opción «–authorization-mode=RBAC». Eso lo podemos comprobar mediante el comando:

Si está habilitado tendremos un valor tipo:

Para implementar un Role en un Namespace concreto lo definiríamos:

Y luego generaríamos el RoleBinding a partir de él en el mismo Namespace. Le asignamos al usuario «elblogdenegu» el role de ejemplo «example-role», generando un Role binding «example-rolebinding»:

Si lo que queremos es generar permisos sin depender de Namespace (para dárselos, por ejemplo, a un nodo) definiríamos ClusterRole:

Y definiríamos un ClusterRoleBinding de la siguiente forma:

Por último, explicamos cómo dar todos los permisos a un grupo de usuarios o a cuentas de servicio. Al definir el RoleBinding en el apartado subjects le definiríamos el grupo de la siguiente forma:

Si le añadimos el Namespace, sólo le daremos totales sobre el Namespace, lo hago con una cuenta de servicio:

Si os preguntáis como saber qué permisos existen, los podéis revisar en la API REFERENCE:

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/

 

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

Acerca de Raul Unzue Pulido

Administrador de sistemas virtuales e infraestructuras IT, linuxero y entusiasta de la tecnología.

Compruebe también

kubernetes-secretos-1

Hardening Kubernetes: Secretos

Hardening Kubernetes: Secretos Si queremos empezar a securizar nuestros proyectos de Kubernetes, podemos empezar con …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

16 + 1 =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales - El Blog de Negu