Sei interessato?
Kubernetes API
L'autenticazione degli utenti con
Indice
Kubernetes API
Contesto
Integrazione con Identity Provider
Conclusione

Gestire gli accessi utente in Kubernetes può diventare complicato, soprattutto quando si vuole garantire un’autenticazione sicura. Fortunatamente, Kubernetes mette a disposizione l’API Certificate, che rende tutto molto più snello. Vediamo come funziona, attraverso un esempio pratico.
Il contesto
Immagina che un nuovo sviluppatore, desouser, entri a far parte del team e debba accedere al cluster Kubernetes aziendale. Invece di creare l’utente manualmente o condividere certificati esistenti (cosa sconsigliata per motivi di sicurezza), possiamo seguire un flusso semplice per generare e approvare le credenziali in modo sicuro.
1. Creazione della chiave e della CSR
Per prima cosa, desouser genera una chiave privata e una richiesta di firma del certificato (CSR) usando openssl:
openssl genrsa -out desouser.key 2048
openssl req -new -key desouser.key -subj “/CN=desouser” -out desouser.csr
2. Invio della richiesta di certificato
La CSR deve essere convertita in base64 e inviata all’amministratore del cluster:
cat desouser.csr | base64 | tr -d “\n”
Questa stringa viene poi inclusa in un file YAML per creare la richiesta di certificato in Kubernetes:
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: desouser
spec:
request: “LS0tLS1CRUdJTi…..” # CSR codificata in base64
signerName:
kubernetes.io/kube-apiserver
client
expirationSeconds: 86400 # 1 giorno di validità
usages:
– client auth
3. Approvazione da parte dell’amministratore
L’amministratore approva la richiesta con:
kubectl certificate approve desouser
4. Recupero del certificato firmato
Una volta approvata, desouser può scaricare il certificato generato dal cluster:
kubectl get csr desouser -o jsonpath='{.status.certificate}’ | base64 -d > desouser.crt
5. Assegnazione dei permessi
Per fare in modo che desouser possa lavorare nel cluster, è necessario assegnargli dei permessi, ad esempio tramite un Role e un RoleBinding:
kubectl create role developer –verb=create –verb=get –verb=list –verb=update –verb=delete –resource=pods
kubectl create rolebinding developer-binding-desouser –role=developer –user=desouser
6. Configurazione dell’accesso
Infine, desouser deve configurare il proprio file kubeconfig per usare le nuove credenziali:
kubectl config set-credentials desouser –client-key=desouser.key –client-certificate=desouser.crt –embed-certs=true
kubectl config set-context desouser –cluster=kubernetes –user=desouser
kubectl config use-context desouser
Integrazione con Identity Provider esterni
Oltre alla gestione diretta dei certificati, Kubernetes consente di integrare provider di identità esterni, grazie al supporto per OpenID Connect (OIDC). Questo è particolarmente utile in ambienti aziendali dove già esistono strumenti di gestione utenti centralizzati come Azure Active Directory, Google Workspace, Okta o Keycloak.
Questa modalità consente l’uso di Single Sign-On (SSO), una gestione centralizzata delle credenziali, e il supporto per gruppi e policy definite esternamente.
Configurazione dell’API server
Per abilitare l’autenticazione via OIDC, il kube-apiserver deve essere avviato con i seguenti parametri:
Configurazione utente nel kubeconfig
L’utente può autenticarsi tramite browser o CLI, ricevere un token JWT, e usarlo nel proprio kubeconfig:
Assegnazione dei permessi
Anche in questo caso, si devono creare le regole RBAC per concedere i permessi all’utente:
Conclusione
Kubernetes offre diversi strumenti per gestire in modo sicuro l’accesso al cluster. La combinazione tra l’API Certificate e l’integrazione con provider OIDC permette di coprire sia scenari con utenti tecnici (come desouser) sia l’adozione aziendale su larga scala. Il tutto mantenendo un controllo rigoroso e personalizzabile tramite il sistema RBAC integrato.
A cura di Nabil Sato