Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Permisos de cuentas de servicio

4 tareas · 38 min · Principiante

Miércoles 14 de octubre, 08:40. En la auditoría de ayer una cuenta de servicio pidió secretos de otro namespace y la API le dijo que no. Para entender ese rechazo hay que mirar qué puede hacer cada cuenta de servicio del clúster: qué roles tiene, con qué enlaces y con qué alcance. Aquí lees las cuentas, los roles y los enlaces de Lácteos de la Mojana y aprendes qué permisos son normales y cuáles son una exposición. Todo es lectura de una exportación de ejemplo.

0 de 4 · 0%

Objetivo de la sala

Miércoles 14 de octubre, 08:40. En la auditoría de ayer una cuenta de servicio pidió secretos de otro namespace y la API le dijo que no. Para entender ese rechazo hay que mirar qué puede hacer cada cuenta de servicio del clúster: qué roles tiene, con qué enlaces y con qué alcance. Aquí lees las cuentas, los roles y los enlaces de Lácteos de la Mojana y aprendes qué permisos son normales y cuáles son una exposición. Todo es lectura de una exportación de ejemplo.

En Kubernetes los permisos se definen con roles (un Role vale dentro de un namespace; un ClusterRole, en todo el clúster o sobre recursos sin namespace) y se asignan con enlaces (RoleBinding y ClusterRoleBinding) a un sujeto: un usuario, un grupo o una cuenta de servicio. Un RoleBinding puede apuntar a un ClusterRole, pero entonces ese rol solo vale dentro del namespace del enlace. Los permisos solo se suman: no existen reglas de denegación.

Abre la consola. Ejecuta SELECT * FROM enlaces.

Responde para continuar

Un RoleBinding en el namespace pedidos apunta a un ClusterRole. ¿Dónde vale ese permiso?

Cada pod corre con una cuenta de servicio, y si el token está montado dentro del pod, quien consiga ejecutar algo allí puede usarlo contra la API con los permisos de esa cuenta. La cuenta llamada default existe en cada namespace y, con RBAC activo, no recibe permisos por sí misma: lo que tenga se lo dio alguien con un enlace.

Ejecuta SELECT * FROM enlaces WHERE rol = 'admin-cluster'.

Responde para continuar

Escribe el sujeto que tiene el rol de administrador del clúster.

En la auditoría, la cuenta de servicio de pedidos recibió dos rechazos al pedir secretos de otro namespace. Los permisos explican ese rechazo: en ese namespace, el rol que toca secretos está enlazado a otra cuenta, no a la de pedidos.

Ejecuta SELECT * FROM enlaces WHERE rol = 'lector-secretos'.

Responde para continuar

Escribe la cuenta de servicio que sí tiene un rol de lectura de secretos en ese otro namespace.

Un pod web con el token montado y permisos de administrador sobre todo el clúster es una exposición: no hay que probar que alguien la usó para reportarla, porque el riesgo está en lo que permite. Pero el SOC informa y recomienda: quitar o reducir un enlace en producción es una decisión de quien administra el clúster, con su control de cambios, porque puede romper la aplicación. Ejecuta SELECT * FROM cuentas WHERE pods > 0 AND token_montado = 'si' para ver cuántas cuentas están en esa situación.

Responde para continuar

Aparece un pod web con el token montado y un enlace de administrador del clúster. ¿Qué se hace?

Ver pista de ayuda

El SOC documenta y recomienda; el cambio en producción tiene dueño.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad