Kasten K10 Authentik

Una de las características de Kasten K10 más utilizadas, es la integración con sistemas de autenticacion e identidad centralizados, a través de diferentes protocolos, para la gestión de acceso a los diferentes clusters de kubernetes utilizando RBAC por medio de K10 y/o para el acceso de K10 Multi-Cluster en ambientes con múltiples clusters de kubernetes. En este post, revisaremos la fácil configuración de Authentik e integración con Kasten K10.

Pasos Iniciales

En esta guía veremos lo fácil de la configuración de Authentik con Kasten K10, utilizando las variables por defecto de la instalación de Kasten K10 en relación a los grupos que utiliza para la la gestión de acceso basado por roles.

Como es de costumbre, revisaremos la documentación oficial de los recursos que utilizaremos.

Authentik https://goauthentik.io/

Kasten K10 https://docs.kasten.io/latest/

RBAC Kasten K10 https://docs.kasten.io/latest/access/rbac.html

RBAC Kasten K10 Multi-Cluster Manager https://docs.kasten.io/latest/multicluster/rbac.html

Authentik

Que es Authentik? Como ya hemos visto en este blog, existen múltiples soluciones Open Source para la gestión de identidad, roles, integración con kubernetes y/o acceso único de sesión (SSO), por ejemplo anteriormente hemos revisado Keycloak, en este post revisaremos Authentik, es cual es otra plataforma muy utilizada en distintas empresas para la gestión de acceso único, como también, la protección de acceso por autenticación de aplicaciones vía distintos protocolos o a través de proxy.

Kasten K10, soporta múltiples protocolos de autenticacion, por supuesto, utilizaremos OpenID el cual nos permite fácilmente autenticarnos entre Kasten y Kasten K10 para la gestión centralizada de usuarios. La instalación de Authentik es muy simple y posee distintas formas de instalación, en mi caso, lo instale sobre kubernetes con helm, puedes revisar las opciones en:

https://goauthentik.io/docs/installation

Configuracion Requerimientos Authentik

Luego de la instalacion, Authentik solicita crear las credenciales del usuario inicial “akadmin”, para luego iniciar sesion en Authentik, ingresamos a la “Interfaz de Administrador”:

Ahora ingresaremos desde el menu en “Customisation”, “Property Mappings” y por ultimo clic en “Create”:

En esta etapa seleccionaremos “Scope Mapping” clic en “Next” y agregaremos el scope “groups” y la expresion como se aprecia en la siguiente imagen:

return {
        "groups": [group.name for group in request.user.ak_groups.all()],
}

Con la configuracion anterior, podremos utilizar o mapear los grupos de Kasten K10 para asignar accesos a la consola de K10, es decir, podremos crear usuarios en Authentik, crear y asignar los grupos de K10 a los usuarios creados y acceder, por tanto, validaremos que funcione correctamente haciendo clic en el icono de prueba, seleccionando un usuario y presionando “Test”

Al traer los grupos a cuales pertenece el usuario significa que el “Scope” esta correctamente funcionando. Si el usuario no tiene ningun grupo asignado no mostrará nada, por tanto, ahora procederemos a crear el primer grupo de administracion para Kasten K10 en Authentik.

Creación de Usuarios y Grupos en Authentik

Para integrar Authentik con Kasten K10, necesitamos por supuesto crear usuarios y grupos que esta relacionados con K10, en este caso, comenzaremos creando el grupo “k10:admins”, el cual permite tener acceso como administrador a la consola de K10 o Multi-Cluster Manager, ingresaremos en “Directory” luego en “Groups” y haremos clic en “Create”:

Ingresamos el nombre del grupo “k10:admins” y clic en “Create”:

Ahora crearemos un usuario y en la misma creacion lo agregaremos al mismo grupo que recien creamos. Por tanto, ahora ingresaremos en “Directory” y luego “Users”, ingresamos el “Username”, “Name”, “Email”, y haciendo clic en “+” lo agregamos al grupo que creamos anteriormente.

Lkuego, seleccionamos el usuario recien creado y hacemos clic en “Set Password” e ingresamos la contraseña deseada:

Creación de OpenID en Authentik

Ahora para que Authentik, pueda integrarse con Kasten K10, necesitamos habilitar y configurar el protocolo OpenID, ingresamos en “Applications”, luego en “Providers” y haremos clic en “Create”

En esta etapa debemos seleccionar “OAuth2/OpenID Provider” y hacer clic en “Next” para pasar a la etapa más importante, ahora ingresamos el nombre y dejamops por defecto “Authorization Flow”:

Ahora en “Protocol Settings”

Donde:

  • Client Type: Confidential
  • Client ID: Se genera Automaticamente (copiar en un notepad)
  • Client Secret: Se genera Automaticamente (copiar en un notepad)
  • Redirect Uri / Origins: https://kasten.24xsiempre.com/k10/auth-svc/v0/oidc/redirect
  • Signing Key: Authentik Self-signed

Luego en “Advanced protocol Settings”, asegurarse que el Scopes “groups” se encuentre seleccionado:

Y por ultimo hacer clic en “Finish”.

Creación de Aplicación en Authentik

Para que Authentik provea el servicio, se genera una aplicación, ingresando en “Applications” y nuevamente en “Applications” para hacer clic en “Create”, ingresamos el “Name”, el “Slug” y en “Provider” seleccionamos el proveedor de OpenID que creamos anteriormente, finalizando con clic en “Create”

Configuracion Kasten K10

Como vimos anteriormente en la documentacion, https://docs.kasten.io/latest/access/rbac.html#k10-admin-binding, sabemos que tenemos el gruopo “k10:admins” y ya lo tenemos mapeado con nuestra instalacion de Authentik, a continuacion veremos el comando a ejecutar en nuestra instalacion de Kasten K10 o en el cluster primario de K10 Multi-Cluster Manager:

helm upgrade k10 kasten/k10 --namespace=kasten-io --set auth.oidcAuth.enabled=true --set auth.oidcAuth.providerURL="https://atk.24xsiempre.com/application/o/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="SuperDuperClientID" --set auth.oidcAuth.clientSecret="SuperDuperClientSecret" --set auth.oidcAuth.usernameClaim="email" --reuse-values --set externalGateway.create=true

Ahora veremos que significa cada una de estas variables:

  • –set auth.oidcAuth.enabled=true / Habilitamos autenticación OpenID
  • –set auth.oidcAuth.providerURL=”https://atk.24xsiempre.com/application/o/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=”SuperDuperClientID” / ID del Cliente
  • –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

Acceso Consola Kasten K10

Al ingresar a la dirección url https://kasten.24xsiempre.com/k10/#/ y redireccionará al login de Authentik:

Ingresaremos usuario y contraseña

Con esto finalizamos la configuración!

 

Agregar un comentario

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