Ir al contenido
  1. Blog/

Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3

Autor
Marco Escobar
Data protection, Kubernetes, ciberseguridad e IA. Guías prácticas desde la trinchera: Veeam, Kasten, VMware, Oracle, cloud y lo que sea que esté rompiendo en el homelab esta semana.
Tabla de contenido
Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 1

Y seguimos con este excelente tema que estamos revisando, en el post anterior revisamos todo lo relacionado a la configuración de clusterroles, roles, bindings para Kasten K10, creando cluster roles para Administradores y para Operadores de un cluster en particular. En este ultimo post veremos la configuración de roles, clusterroles, bindings con Kasten K10 Multi-Cluster Manager y por supuesto con Keycloak para la gestion de Usuarios y Grupos.

Configuración Kasten K10 Multi-Cluster Keycloak
#

\\\* La idea de esta serie es explicar como generar los grupos, roles, clusterroles y demás recursos asociados a RBAC, sin la necesidad de estar modificando directamente en el cluster de kubernetes los permisos de usuario durante el tiempo, así toda la gestión de creación de usuario, grupos, asignación de grupos se realiza en Keycloak. ***

***La configuración de OpenID con Kasten K10 Multi-Cluster Manager es casi idéntica a la de Kasten K10, ya que se necesitan los mismos pasos para habilitar la autenticación, los repetiré en este post, en caso de que hayas llegado directo aquí.***

Debemos conectarnos al cluster primario de Kubernetes donde se encuentra instalado Kasten K10 Multi-Cluster Manager y procederemos a la configuración de autenticación con Keycloak, pero antes, necesitamos extraer el “Secret” desde nuestro “Client” kasten en el menú “Credentials” reemplazando en la variable “auth.oidcAuth.clientSecret”, (reemplazar SuperDuperClientSecret) y por supuesto reemplazando los valores por tus datos de DNS o IP, ejecutando el siguiente comando (por seguridad elimine parte del secret):

Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3
helm upgrade k10 kasten/k10 --namespace=kasten-io --set auth.oidcAuth.enabled=true --set auth.oidcAuth.providerURL="https://auth.24xsiempre.com/auth/realms/kasten" --set auth.oidcAuth.redirectURL="https://kasten.24xsiempre.com/" --set auth.oidcAuth.scopes="groups profile email" --set auth.oidcAuth.groupClaim="groups" --set auth.oidcAuth.prompt="login" --set auth.oidcAuth.clientID="kasten" --set auth.oidcAuth.clientSecret="SuperDuperClientSecret" --set auth.oidcAuth.usernameClaim="email" --reuse-values --set externalGateway.create=true
```bash



Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 2
Ahora veremos que significa cada uno de estas variables: - **--set auth.oidcAuth.enabled=true** / Habilitamos autenticación OpenID - **--set auth.oidcAuth.providerURL="https://auth.24xsiempre.com/auth/realms/kasten"** / Url para Autenticarse - **--set auth.oidcAuth.redirectURL="https://kasten.24xsiempre.com/"** / Url de aplicacion K10 - **--set auth.oidcAuth.scopes="groups profile email"** / Client Scopes para validar - **--set auth.oidcAuth.groupClaim="groups"** / Nombre del grupo de Client Scope - **--set auth.oidcAuth.prompt="login"** / Mensaje de Login - **--set auth.oidcAuth.clientID="kasten"** / Nombre del Cliente en el Realm creado. - **--set auth.oidcAuth.clientSecret="SuperDuperClientSecret"** / Secret del cliente - **--set auth.oidcAuth.usernameClaim="email"** / En caso de autenticacion de email - **--reuse-values** / Reusa valores ya configurados - **--set externalGateway.create=true** / Reconfigura servicio gateway en K10 para acceder remoto Un dato importante si ya tienes configurado un método de autenticación para Kasten, es mejor desactivarlo y luego ejecutar el comando anterior en caso de error. ## Acceso Usuarios Como ya tenemos todo configurado, la creación del usuario que realizamos en el post anterior, solo nos queda ingresar a la interfaz web de keycloak y asegurarnos que tenga estos permisos el usuario: - Usuario: kastenadmin - Password: SuperDuperPassword o la que se haya aplicado - Grupo: k10:admins Luego solo ingresaremos a la Url de Kasten en mi caso https://kasten.24xsiempre.com/k10/#/ y nos redirigirá a el formulario de ingreso de Keycloak en el realm de Kasten, ingresamos las credenciales:
Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 3
Y podremos observar que tenemos un ingreso exitoso y con todos los permisos ya que pertenecemos al grupo "k10:admins" y no tuvimos que editar ningún ClusterRole o Roles.
Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 4
Para confirmar los permisos, es posible validarlos gráficamente ya sea viendo "permissions" "unrestricted" o entrando al cluster primario, luego "Cluster Settings" , después "Support" y por ultimo clic en "View Current User Details" y podrás visualizar todos los permisos de ese usuario y al grupo que pertenece:
Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 5
## Creación de Roles de Acceso en Kasten K10 Multi-Cluster Manager Como vimos anteriormente, tenemos configurado el cluster primario de Kasten K10. Ahora configuraremos los roles necesarios asociados a grupos para acceder a Kasten K10 Multi-Cluster Manager ### Usuario Administrador Importante señalar que K10 Multi-Cluster Manager esta pensado solo para administradores, es posible dar acceso a un usuario regular sin permisos de administración sobre Multi-Cluster Manager, aun así, como vimos en el post anterior, es posible dar acceso completo a un usuario al cluster protegido por K10 inclusive si esta usando recursos o distribuciones de Multi-Cluster Manager Al usar Multi-Cluster Manager es posible administrar los usuarios con Keycloak. Como mencione anteriormente para la administración es necesario pertenecer al grupo "k10:admins"
Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 6
Y si validamos acceso:
Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 7
Ahora, necesito acceso a K10 Multi-Cluster Manager como usuario sin la posibilidad de modificar configuraciones globales. ### Usuario Operador Por lo general siempre es necesario un usuario con permisos limitados a nivel de K10 Multi-Cluster Manager, recordando siempre, que es posible asignar un rol de operación directo a un grupo de usuarios para Kasten K10 sin la necesidad de acceder al Multi-Cluster Manager, por tanto, en Keycloak cambiaremos el grupo del usuario "kastenadmin" a "k10:mc-user"
Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 8
Si validamos acceso obtendremos el siguiente error:
Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 9
El error anterior es por que no se a generado el RoleBinding para el grupo "k10:mc-user", por tanto lo realizaremos de la siguiente forma: ```bash kubectl create rolebinding k10-mc-user-demo --clusterrole=k10-mc-user \ --namespace=kasten-io-mc \ --group=k10:mc-user ```bash
Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 10
Validaremos la creacion del RoleBinding: ```bash kubectl get rolebindings -n kasten-io-mc
Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 11

Y validamos acceso a Kasten:

Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 12

Como vemos en la imagen anterior, no tiene acceso al cluster “qadesarrollo” y tampoco puede visualizar los recursos del cluster primario. Es una buena practica en caso de otorgar acceso al K10 Multi-Cluster Manager, restringir la administración del cluster primario, ya que en este cluster se concentra la configuración centralizada de todos los recursos.

Asignación K10ClusterRoles en Multi-Cluster Manager
#

Como ya realizamos el binding del grupo a nivel de clusterrole, necesitamos permitir acceso al usuario a la administración de un cluster de preferencia, por tanto, con un usuario administrador, que pertenezca al grupo “k10:admins”, agregaremos al usuario “kastenadmin” a un K10ClusterRole para que pueda administrar un cluster.

Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 13

Al generar el K10ClusterRole, indicamos que es administrador del cluster “qadesarrollo”, recuerda que existen 3 K10ClusterRoles que puedes asignar al usuario “k10-multi-cluster-admin”, “k10-multi-cluster-basic”, “k10-multi-cluster-config-view” y si validamos acceso nuevamente observaremos que ya tiene los permisos necesarios:

Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 14
Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 15

Conclusiones y Recomendaciones
#

Como vimos en esta serie de 3 posts, es posible utilizar todo el RBAC para acceder con permisos granulares a los recursos de Kasten K10 y Kasten K10 Multi-Cluster Manager, inclusive siendo administrados los cluster centralizadamente, es posible generar acceso directo al cluster deseado por algún cliente o usuario de Kasten sin la necesidad de acceso al Multi-Cluster, es por ellos que siempre se recomienda utilizar una solución de SSO, como en este caso Keycloak o la de tu preferencia ya que el protocolo OpenID es estandard. Como recomendación, siempre utilizar el principio de menor privilegio posible e ir otorgando permisos de acuerdo a la necesidad de la operación, como también, generar los ClusterRoles específicos para luego solo agregar grupos de usuarios.

Demo Kasten K10
#

Si por cualquier motivo, necesitas probar este tipo de acceso, he dejado la plataforma operativa en el laboratorio, para que cualquier usuario se registre y pueda acceder al K10 Multi-Cluster Manager y poder jugar con el ambiente de pruebas, para hacer el registro y conseguir acceso solo debes ingresar en:

https://kasten.24xsiempre.com

Y Hacer clic en “Registrate” / “Register”

Kasten RBAC Multi-Tenant Multi-Cluster Keycloak – 3 — captura 16

Al registrarte, pedirá verificación del correo y luego ya tendrás acceso al laboratorio. :)

Posts relacionados
#

Relacionados