Come cifrare ETCD di Kubernetes con OVHcloud KMS
Scopri come configurare Kubernetes per cifrare lo storage ETCD con l'interfaccia KMIP di OVHcloud KMS
Obiettivo
Questa guida spiega come configurare il provider di crittografia del kube-apiserver che permette ai cluster Kubernetes di cifrare e decifrare i dati a riposo utilizzando OVHcloud KMS tramite il protocollo KMIP.
Prerequisiti
- Disporre di un account cliente OVHcloud.
- Aver ordinato un dominio OKMS.
Procedura
Installazione del binario
Il binario può essere installato direttamente dai pacchetti Go.
Oppure è possibile compilarlo a partire dai sorgenti.
Configurazione di OVHcloud KMS (OKMS)
Per utilizzare OVHcloud KMS come provider di crittografia per Kubernetes, sono necessari i seguenti elementi:
- Un utente OVHcloud e i permessi per gestire le chiavi KMIP di OKMS.
- Un certificato di accesso per il tuo dominio OKMS.
- Una chiave KMIP AES nel tuo OKMS.
Creazione dell'utente e dei diritti di accesso
Crea un utente locale IAM con diritti di accesso sul tuo dominio.
Se utilizzi invece delle policy IAM, l'utente deve disporre almeno dei seguenti diritti sul dominio OKMS:
okms:kmip:encryptokms:kmip:decryptokms:kmip:locate
In caso contrario, l'utente deve appartenere a un gruppo dotato del ruolo ADMIN.
In alternativa, è possibile creare un utente utilizzando la CLI OVHcloud:
Creazione del certificato di accesso
Crea un certificato di accesso OKMS e collega l'utente creato in precedenza.
Salva il certificato cert.pem e la chiave privata key.pem generati, poiché saranno necessari per la configurazione del provider di crittografia.
Creazione della chiave KMIP AES
Per creare una chiave KMIP AES, puoi utilizzare la CLI OKMS:
Inizia scaricando il binario dell'ultima versione oppure compilandolo a partire dai sorgenti.
Successivamente, puoi creare una chiave utilizzando:
Conserva l'ID della chiave generata. Per il resto della guida utilizzeremo l'ID 70001308-5674-43fe-93dd-6270ecac0710 come esempio.
Per maggiori dettagli sull'utilizzo di okms-cli, consulta il repository GitHub.
Configurazione del provider di crittografia
Il provider di crittografia può essere eseguito direttamente sugli host kube-apiserver con il seguente comando:
Il provider di crittografia supporta le seguenti opzioni:
Configurazione di Kubernetes
Sulla base della guida ufficiale di Kubernetes per cifrare i dati con un provider KMS, aggiungi le seguenti opzioni al tuo kube-apiserver:
Assicurati di montare nel kube-apiserver la directory che contiene il socket Unix su cui è in ascolto il server KMS.
Un esempio di encryption-config.yaml:
Convalida della configurazione
Crea un secret con kubectl create secret generic okms-test-secret -n default --from-literal=mykey=mydata, quindi verifica il contenuto del secret nello storage ETCD eseguendo il seguente comando:
L'output dovrebbe essere illeggibile:
Implementazione della rotazione delle chiavi
Per ruotare la tua chiave, dovrai eseguire due provider di crittografia, ciascuno in ascolto su un socket Unix diverso.
Di seguito è riportato un esempio di file di configurazione della crittografia per tutti i server API prima di utilizzare la nuova chiave:
Una volta che tutti i server API sono stati riavviati e sono in grado di decifrare utilizzando la nuova chiave, sposta il provider con la nuova chiave in cima.
Una volta che tutti i secret sono stati ricifrati con la nuova chiave, puoi rimuovere il vecchio provider di crittografia.
Per saperne di più
Contatta la nostra Community di utenti.
Scopri come utilizzare Kubernetes External Secrets Operator con Secret Manager.