Questo tutorial mostra come criptare i secret di Kubernetes a livello di applicazione utilizzando una chiave che gestisci in Cloud Key Management Service (Cloud KMS). Il processo di crittografia dei secret fornisce un ulteriore livello di sicurezza per i carichi di lavoro sensibili.
Questa pagina è rivolta agli esperti di sicurezza che vogliono criptare i secret. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli utente e attività comuni di GKE Enterprise.
Prima di leggere questa pagina, assicurati di avere familiarità con i seguenti concetti:
Per seguire le indicazioni dettagliate per questa attività direttamente nella Google Cloud console, fai clic su Procedura guidata:
Panoramica
Per impostazione predefinita, Google Kubernetes Engine (GKE) cripta i contenuti dei clienti archiviati a riposo, inclusi i secret. GKE gestisce questa crittografia predefinita per conto tuo senza che tu debba fare altro. La crittografia dei secret a livello di applicazione offre un ulteriore livello di sicurezza per i dati sensibili, come i secret. Utilizzi una chiave gestita con Cloud KMS per criptare i dati at-rest a livello di applicazione.
Lo stato degli oggetti API Kubernetes nel cluster, come i secret, viene archiviato in un database. Questo database dello stato del cluster utilizza una delle seguenti tecnologie:
- etcd: le istanze del database etcd vengono eseguite su ogni VM del control plane. La crittografia dei secret a livello di applicazione aiuta a proteggere dagli autori di attacchi che ottengono l'accesso a una copia offline di etcd.
- Spanner: GKE esegue un database Spanner sull'infrastruttura di Google. Il database è separato dalle VM del control plane del cluster e non può essere scaricato come copia offline.
Per utilizzare la crittografia dei secret a livello di applicazione, devi prima creare una chiave Cloud KMS e concedere all'account di servizio GKE l'accesso alla chiave. Puoi utilizzare una chiave con uno qualsiasi dei livelli di protezione supportati da Cloud KMS.
Assicurati che la chiave si trovi nella stessa posizione del cluster per ridurre la latenza e per evitare casi in cui le risorse dipendono da servizi distribuiti su più domini di errore. Dopo aver creato una chiave, puoi attivare la funzionalità su un cluster nuovo o esistente specificando la chiave che vuoi utilizzare. Quando attivi la funzionalità, GKE cripta tutti i secret nuovi ed esistenti utilizzando la tua chiave di crittografia.
Crittografia envelope
Kubernetes offre la crittografia envelope dei secret con un provider KMS, il che significa che una chiave locale, comunemente chiamata chiave di crittografia dei dati (DEK), viene utilizzata per criptare i secret. La DEK stessa è criptata con un'altra chiave chiamata chiave di crittografia della chiave (KEK). Kubernetes non memorizza la KEK.
La crittografia envelope offre i seguenti vantaggi:
- Prestazioni migliorate rispetto alla crittografia con chiave pubblica: GKE utilizza l'API Cloud KMS solo per criptare le nuove DEK con la KEK o per decriptare una DEK quando la cache locale è vuota.
- Migliore gestione delle chiavi su larga scala: una singola KEK può criptare più DEK. Il numero di chiavi che devi archiviare nel servizio Cloud KMS è molto inferiore al numero di chiavi che criptano i tuoi dati.
- Possibilità di utilizzare una radice di attendibilità centrale: i secret archiviati in Kubernetes possono basarsi su una radice di attendibilità esterna. Ciò significa che puoi utilizzare una radice di attendibilità centrale, ad esempio un modulo di sicurezza hardware, per tutti i tuoi secret. Un malintenzionato che accede ai tuoi container offline non può ottenere i tuoi secret.
Con la crittografia dei secret a livello di applicazione in GKE, GKE cripta i secret utilizzando DEK locali e il provider AES-CBC. GKE cripta le DEK con una KEK che gestisci in Cloud KMS.
Per scoprire di più sulla crittografia envelope, vedi Crittografia envelope.
Cosa succede quando crei un secret
Quando crei un nuovo secret, ecco cosa succede:
Il server API Kubernetes genera una DEK univoca per il secret utilizzando un generatore di numeri casuali.
Il server API Kubernetes utilizza la DEK localmente per criptare il secret.
Il plug-in KMS invia la DEK a Cloud KMS per la crittografia. Il plug-in KMS utilizza il account di servizio GKE del tuo progetto per l'autenticazione a Cloud KMS.
Cloud KMS cripta la DEK utilizzando la KEK e la invia di nuovo al plug-in KMS.
Il server API Kubernetes salva il secret criptato e la DEK criptata. La DEK in formato non crittografato non viene salvata su un disco e viene archiviata solo nella memoria del server API.
Il server API Kubernetes crea una voce della cache che mappa la DEK criptata alla DEK in testo non criptato in memoria. In questo modo, il server API può decriptare il secret senza utilizzare Cloud KMS.
Quando un client richiede un secret dal server dell'API Kubernetes, ecco cosa succede:
Il server API Kubernetes recupera il secret criptato e la DEK criptata.
Il server API Kubernetes controlla la cache per una voce di mapping esistente e decripta il secret senza utilizzare Cloud KMS.
Se non viene trovata una voce della cache, il plug-in KMS invia la DEK a Cloud KMS per la decriptazione utilizzando la KEK. La DEK decriptata viene quindi utilizzata per decriptare il secret.
Il server API Kubernetes restituisce il secret decriptato al client.
Cosa succede quando distruggi una chiave
Se prevedi di eliminare una vecchia versione della KEK dopo una rotazione della chiave, utilizza la nuova versione della KEK per ricriptare il secret. Se vuoi, puoi conservare la versione precedente della KEK per evitare di crittografare nuovamente i secret, ma continuerai a ricevere la fatturazione per tutte le KEK attive in Cloud KMS. Per informazioni dettagliate sui prezzi, consulta Prezzi di Cloud KMS.
A meno che tu non utilizzi una proiezione del volume dei token del service account, i service account utilizzati dai tuoi carichi di lavoro su GKE utilizzano anche i secret e, se una chiave viene eliminata, questi diventano non disponibili. L'impossibilità di accedervi comporta l'esito negativo dei workload.
Si applicano le seguenti eccezioni:
I pod con accesso esistente ai secret come volumi montati o variabili di ambiente mantengono l'accesso.
Il server API Kubernetes può comunque utilizzare le voci di mappatura DEK memorizzate nella cache per decriptare un secret dopo aver eliminato la KEK. In questo modo, i pod riavviati o ripianificati possono accedere al secret, a meno che non si verifichi una delle seguenti situazioni:
- Il control plane del cluster viene riavviato.
- Il pod del server API Kubernetes viene riavviato.
- La voce di mapping DEK per il secret non si trova nella cache del server dell'API Kubernetes.
Prima di eliminare una KEK, controlla se viene utilizzata dal cluster. Puoi anche creare un criterio di avviso per l'eliminazione delle chiavi in Cloud KMS. Elimina le versioni precedenti della KEK solo quando hai la certezza che nessun dato nel cluster sia criptato utilizzando la versione precedente. Prima di eliminare una KEK, controlla se la chiave è in uso. Per maggiori dettagli, vedi Eliminare e ripristinare le versioni delle chiavi.
Puoi pianificare l'eliminazione di una versione della chiave dopo un periodo configurabile. In questo periodo, se cambi idea, puoi ripristinare la versione della chiave per evitare l'eliminazione. Tuttavia, una volta raggiunto il momento di eliminazione pianificato e la versione della chiave viene eliminata, questa azione è irreversibile. Tutti i dati criptati con questa versione della chiave non potranno più essere decriptati.
Prima di iniziare
Per svolgere gli esercizi di questo argomento, hai bisogno di due progetti Google Cloud :
Progetto chiave:è qui che crei una KEK.
Progetto cluster:qui crei un cluster che abilita la crittografia dei secret a livello di applicazione.
Puoi utilizzare lo stesso progetto per il progetto chiave e il progetto cluster. Tuttavia, la prassi consigliata è utilizzare progetti separati.
Nel progetto della chiave, assicurati di aver attivato l'API Cloud KMS.
Nel progetto delle chiavi, l'utente che crea la chiave automatizzata e la chiave deve disporre delle seguenti autorizzazioni IAM:
cloudkms.keyRings.getIamPolicy
cloudkms.keyRings.setIamPolicy
Queste autorizzazioni (e molte altre) vengono concesse al
roles/cloudkms.admin
ruolo Identity and Access Management predefinito. Puoi scoprire di più su come concedere le autorizzazioni per gestire le chiavi nella documentazione di Cloud KMS.Nel progetto cluster, assicurati di aver abilitato l'API Google Kubernetes Engine.
Assicurati di aver installato Google Cloud CLI.
Aggiorna
gcloud
all'ultima versione:gcloud components update
Crea una chiave Cloud KMS
Per creare una chiave Cloud KMS, devi prima creare un keyring. Le chiavi e i portachiavi sono risorse regionali. Quando crei un portachiavi, specifica una località che corrisponda a quella del tuo cluster GKE:
Un cluster di zona deve utilizzare un keyring di una regione superset. Ad esempio, un cluster nella zona
us-central1-a
può utilizzare solo una chiave nella regioneus-central1
.Un cluster regionale deve utilizzare un keyring della stessa località. Ad esempio, un cluster nella regione
asia-northeast1
deve essere protetto con un keyring della regioneasia-northeast1
.
La regione global
di Cloud KMS non è supportata per l'utilizzo con GKE.
Puoi utilizzare gcloud CLI o la console Google Cloud .
Console
Nel progetto chiave, crea una chiave automatizzata:
Vai alla pagina Key Management nella console Google Cloud .
Fai clic su Crea keyring.
Nel campo Nome della chiave automatizzata, inserisci il nome della chiave automatizzata.
Dall'elenco Posizione, seleziona la posizione del tuo cluster Kubernetes.
Fai clic su Crea.
Poi, crea una chiave:
Vai alla pagina Key Management nella console Google Cloud .
Fai clic sul nome del keyring per cui creerai una chiave.
Fai clic su Crea chiave.
Nel campo Nome chiave, inserisci il nome della chiave.
Accetta i valori predefiniti per Periodo di rotazione e A partire dal giorno oppure imposta un periodo di rotazione della chiave e un'ora di inizio se vuoi utilizzare valori diversi.
[Facoltativo] Nel campo Etichette, fai clic su Aggiungi etichetta se vuoi aggiungere etichette alla chiave.
Fai clic su Crea.
gcloud
Nel progetto chiave, crea una chiave automatizzata:
gcloud kms keyrings create RING_NAME \
--location=LOCATION \
--project=KEY_PROJECT_ID
Sostituisci quanto segue:
RING_NAME
: il nome del nuovo portachiavi.LOCATION
: la località in cui vuoi creare il portachiavi.KEY_PROJECT_ID
: il tuo ID progetto chiave.
Crea una chiave:
gcloud kms keys create KEY_NAME \
--location=LOCATION \
--keyring=RING_NAME \
--purpose=encryption \
--project=KEY_PROJECT_ID
Sostituisci quanto segue:
KEY_NAME
: il nome della nuova chiave.LOCATION
: la posizione di Cloud KMS in cui hai creato le chiavi automatizzate.RING_NAME
: il nome del tuo keyring.KEY_PROJECT_ID
: il tuo ID progetto chiave.
Concedere l'autorizzazione per utilizzare la chiave
Il account di servizio GKE nel progetto del cluster ha il seguente nome:
service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
Sostituisci CLUSTER_PROJECT_NUMBER
con il numero di progetto del tuo cluster.
Per trovare il numero di progetto utilizzando gcloud CLI, esegui questo comando:
gcloud projects describe CLUSTER_PROJECT_ID \
--format="value(projectNumber)"
Per concedere l'accesso al account di servizio, puoi utilizzare la console Google Cloud o gcloud CLI.
Console
Concedi al tuo account di servizio GKE il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS:
- Nella console Google Cloud , vai alla pagina Gestione delle chiavi.
Fai clic sul nome del keyring che contiene la chiave che ti interessa.
Seleziona la casella di controllo relativa al tasto che ti interessa.
La scheda Autorizzazioni nel riquadro di destra della finestra diventa disponibile.
Nella finestra di dialogo Aggiungi membri, specifica l'indirizzo email del account di servizio GKE a cui stai concedendo l'accesso.
Nel menu a discesa Seleziona un ruolo, seleziona Cloud KMS CryptoKey Encrypter/Decrypter.
Fai clic su Salva.
gcloud
Concedi al tuo account di servizio GKE il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS:
gcloud kms keys add-iam-policy-binding KEY_NAME \
--location=LOCATION \
--keyring=RING_NAME \
--member=serviceAccount:SERVICE_ACCOUNT_NAME \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project=KEY_PROJECT_ID
Sostituisci quanto segue:
KEY_NAME
: il nome della chiave.LOCATION
: la posizione di Cloud KMS in cui hai creato le chiavi automatizzate.RING_NAME
: il nome del tuo keyring.SERVICE_ACCOUNT_NAME
: il nome del tuo account di servizio GKE.KEY_PROJECT_ID
: il tuo ID progetto chiave.
Assicurati che la chiave abbia una quota sufficiente se è una chiave Cloud HSM
Se utilizzi una chiave Cloud HSM, il progetto Google Cloud che contiene la chiave è limitato dalla quota di chiavi. Assicurati di disporre di una quota sufficiente per utilizzare le chiavi Cloud HSM con la crittografia dei secret a livello di applicazione. Se la quota è esaurita, i nodi potrebbero perdere la connettività al control plane del cluster.
Abilita la crittografia dei secret a livello di applicazione
Puoi abilitare la crittografia dei secret a livello di applicazione su cluster GKE Standard e GKE Autopilot nuovi o esistenti utilizzando gcloud CLI o la console Google Cloud .
Dopo aver abilitato la crittografia dei secret a livello di applicazione, esegui una rotazione delle chiavi. Puoi configurare la rotazione automatica delle chiavi in Cloud KMS.
Abilitare su un nuovo cluster
Puoi creare un nuovo cluster con la crittografia dei secret a livello di applicazione abilitata utilizzando la consoleGoogle Cloud o gcloud CLI.
Console - Autopilot
Per creare un cluster Autopilot con la crittografia dei secret a livello di applicazione abilitata, segui questi passaggi:
Nella console Google Cloud , vai alla pagina Crea un cluster Autopilot.
Configura il cluster come preferisci.
Nel riquadro di navigazione, fai clic su Impostazioni avanzate ed espandi la sezione Sicurezza.
Seleziona la casella di controllo Crittografia dei secret a livello di applicazione e scegli la chiave che hai creato in Crea una chiave Cloud KMS.
Fai clic su Crea.
Console - Standard
Per creare un cluster Standard con la crittografia dei secret a livello di applicazione abilitata, segui questi passaggi:
Nella console Google Cloud , vai alla pagina Crea un cluster Kubernetes.
Configura il cluster come preferisci.
Nel riquadro di navigazione, in Cluster, fai clic su Sicurezza.
Seleziona la casella di controllo Crittografia dei secret a livello di applicazione e scegli la chiave che hai creato in Crea una chiave Cloud KMS.
Fai clic su Crea.
gcloud
Per creare un cluster che supporti la crittografia dei secret a livello di applicazione, specifica un valore per il parametro --database-encryption-key
nel comando di creazione.
gcloud container clusters create-auto CLUSTER_NAME \
--cluster-version=latest \
--location=CONTROL_PLANE_LOCATION \
--database-encryption-key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME \
--project=CLUSTER_PROJECT_ID
Sostituisci quanto segue:
CLUSTER_NAME
: il nome che scegli per il nuovo cluster.CONTROL_PLANE_LOCATION
: la regione di Compute Engine del piano di controllo del cluster.KEY_PROJECT_ID
: il tuo ID progetto chiave.LOCATION
: la posizione di Cloud KMS in cui hai creato le chiavi automatizzate.RING_NAME
: il nome del tuo keyring.KEY_NAME
: il nome della chiave.CLUSTER_PROJECT_ID
: l'ID progetto del tuo cluster.
Puoi abilitare la crittografia dei secret a livello di applicazione su un nuovo cluster Standard utilizzando
il comando gcloud container clusters create
con gli stessi flag.
Abilitare su un cluster esistente
Puoi utilizzare gcloud CLI o la console Google Cloud per aggiornare un cluster esistente in modo che utilizzi la crittografia dei secret a livello di applicazione. GKE cripta tutti i secret esistenti e nuovi utilizzando la chiave di crittografia specificata.
L'aggiornamento di un cluster esistente per utilizzare la crittografia dei secret a livello di applicazione riavvia il control plane del cluster. Per i cluster zonali, il control plane non è più disponibile.
Console
Per aggiornare un cluster in modo che supporti la crittografia dei secret a livello di applicazione:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster da modificare.
In Sicurezza, nel campo Crittografia dei secret a livello di applicazione, fai clic su edit Modifica crittografia dei secret a livello di applicazione.
Seleziona la casella di controllo Abilita la crittografia dei secret a livello di applicazione e scegli la chiave che hai creato in Creare una chiave Cloud KMS.
Fai clic su Salva modifiche.
gcloud
Per abilitare la crittografia dei secret a livello di applicazione su un cluster esistente, esegui il seguente comando:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--database-encryption-key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME \
--project=CLUSTER_PROJECT_ID
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster.CONTROL_PLANE_LOCATION
: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.KEY_PROJECT_ID
: il tuo ID progetto chiave.LOCATION
: la posizione di Cloud KMS in cui hai creato le chiavi automatizzate.RING_NAME
: il nome del tuo keyring.KEY_NAME
: il nome della chiave.CLUSTER_PROJECT_ID
: l'ID progetto del tuo cluster.
Aggiornare una chiave Cloud KMS
Puoi utilizzare gcloud CLI o la console Google Cloud per aggiornare un cluster esistente in modo che utilizzi una nuova chiave Cloud KMS.
L'aggiornamento di un cluster esistente per utilizzare una nuova chiave Cloud KMS riavvia il control plane del cluster. Per i cluster zonali, il control plane non è più disponibile.
Console
Per aggiornare un cluster in modo che utilizzi una nuova chiave Cloud KMS:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster da modificare.
In Sicurezza, nel campo Crittografia dei secret a livello di applicazione, fai clic su edit Modifica crittografia dei secret a livello di applicazione.
Seleziona la nuova chiave di crittografia che vuoi utilizzare.
Fai clic su Salva modifiche.
gcloud
Aggiorna il cluster esistente in modo che utilizzi una nuova chiave Cloud KMS:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--database-encryption-key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME \
--project=CLUSTER_PROJECT_ID
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster.CONTROL_PLANE_LOCATION
: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.KEY_PROJECT_ID
: il tuo ID progetto chiave.LOCATION
: la posizione di Cloud KMS in cui hai creato le chiavi automatizzate.RING_NAME
: il nome del tuo keyring.KEY_NAME
: il nome della chiave.CLUSTER_PROJECT_ID
: l'ID progetto del tuo cluster.
Disabilita la crittografia dei secret a livello di applicazione
Per disattivare la crittografia dei secret a livello di applicazione, puoi utilizzare gcloud CLI o la consoleGoogle Cloud .
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster da modificare.
In Sicurezza, nel campo Crittografia dei secret a livello di applicazione, fai clic su edit Modifica crittografia dei secret a livello di applicazione.
Deseleziona la casella di controllo Abilita la crittografia dei secret a livello di applicazione.
Fai clic su Salva modifiche.
gcloud
Per disabilitare la crittografia dei secret a livello di applicazione, esegui questo comando:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--disable-database-encryption \
--project=CLUSTER_PROJECT_ID
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster.CONTROL_PLANE_LOCATION
: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.CLUSTER_PROJECT_ID
: l'ID progetto del tuo cluster.
Verifica che la crittografia dei secret a livello di applicazione sia abilitata
Puoi verificare se un cluster utilizza la crittografia dei secret a livello di applicazione utilizzando la consoleGoogle Cloud o gcloud CLI.
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic sul nome del cluster da modificare.
In Sicurezza, verifica che nel campo Crittografia dei secret a livello di applicazione venga visualizzato
Enabled
e che sia elencata la chiave corretta.
gcloud
Per verificare se un cluster utilizza la crittografia dei secret a livello di applicazione:
gcloud container clusters describe CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--format='value(databaseEncryption)' \
--project=CLUSTER_PROJECT_ID
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster.CONTROL_PLANE_LOCATION
: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.CLUSTER_PROJECT_ID
: l'ID progetto del tuo cluster.
Se il cluster utilizza la crittografia dei secret a livello di applicazione, l'output è simile al seguente:
keyName=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME;state=ENCRYPTED
Ruotare le chiavi
Ruota le chiavi in base a una pianificazione regolare, anche dopo aver abilitato la crittografia dei secret a livello di applicazione. Per istruzioni su come configurare la rotazione automatica delle chiavi o ruotare manualmente le chiavi, consulta Rotazione delle chiavi.
Quando esegui una rotazione della chiave, i secret esistenti rimangono criptati con la versione precedente della chiave di crittografia della chiave (KEK). Per assicurarti che una versione più recente della KEK esegua il wrapping di un secret, crittografa nuovamente il secret dopo la rotazione della chiave.
Ad esempio, crei e memorizzi un secret, Secret1
.
È criptato con DEK1
, a sua volta incluso in KEKv1
.
Dopo la rotazione della KEK, cripta nuovamente Secret1
in modo che venga sottoposta a wrapping da DEK2
,
che a sua volta viene sottoposta a wrapping con KEKv2
, la KEK ruotata.
La rotazione della versione della chiave è un'operazione coerente e potrebbe verificarsi un ritardo prima che la nuova versione della chiave diventi effettiva. Per saperne di più, consulta la sezione Coerenza delle versioni delle chiavi.
Criptare nuovamente i secret
Dopo aver eseguito una rotazione della chiave, devi criptare nuovamente i secret per eseguirne il wrapping con la nuova versione della KEK. Puoi crittografare nuovamente i secret in uno dei seguenti modi:
- Manualmente, eseguendo un comando
kubectl
in un terminale. - Automaticamente, utilizzando un carico di lavoro ricorrente, ad esempio un CronJob, per eseguire un comando
kubectl
a intervalli regolari.
Dopo la rotazione di una chiave, attendi almeno tre ore prima che la nuova versione diventi coerente. Quindi, attiva la ri-crittografia eseguendo un comando come il seguente:
kubectl get secrets --namespace=NAMESPACE -o json \
| kubectl annotate --overwrite -f - encryption-key-rotation-time="TIME"
Sostituisci quanto segue:
NAMESPACE
: lo spazio dei nomi in cui aggiornare i secret. Nei cluster standard, puoi utilizzare facoltativamente il flag--all-namespaces
per aggiornare ogni secret nel cluster con lo stesso comando. Nei cluster Autopilot, puoi aggiornare solo gli spazi dei nomi di tua proprietà.TIME
: una stringa che indica quando avviene la rotazione (ad esempio,20200909-090909
).
Dopo la rotazione delle chiavi, la versione precedente della chiave continua a esistere e potrebbe generare costi. La distruzione della versione della chiave è definitiva, quindi assicurati che la versione precedente della chiave non sia più in uso prima di distruggerla. Per maggiori informazioni, vedi Visualizzare l'utilizzo delle chiavi.
Limitazioni
- GKE supporta fino a 30.000 secret per cluster per la crittografia dei secret a livello di applicazione. Se memorizzi più di 30.000 secret, il cluster potrebbe diventare instabile al momento dell'upgrade, causando una potenziale interruzione dei carichi di lavoro.
- Assicurati che la dimensione media dei metadati di un secret in ogni spazio dei nomi sia inferiore a 5 KiB. Se la dimensione media dei metadati è superiore a 5 KiB, il cluster potrebbe entrare in uno stato errato in cui alcuni secret vengono criptati mentre altri vengono decriptati dopo l'attivazione o la disattivazione della funzionalità.
Devi selezionare una chiave nella stessa regione del cluster. Ad esempio, un cluster zonale in
us-central1-a
può utilizzare solo una chiave nella regioneus-central1
. Per i cluster regionali, le chiavi devono trovarsi nella stessa posizione per ridurre la latenza ed evitare casi in cui le risorse dipendono da servizi distribuiti su più domini di errore.La chiave non deve trovarsi nello stesso progetto del cluster. Per ulteriori informazioni sulle località supportate per Cloud KMS, consulta la pagina Google Cloud località.
GKE supporta solo le chiavi di Cloud KMS. Non puoi utilizzare un altro provider KMS Kubernetes o un altro provider di crittografia.
Risoluzione dei problemi
Per informazioni sulla risoluzione dei problemi relativi alla crittografia dei secret a livello di applicazione, inclusa la risoluzione dei problemi con gli aggiornamenti della crittografia dei secret non riusciti, consulta Risolvere i problemi relativi alla crittografia dei secret a livello di applicazione.
La chiave Cloud KMS è disabilitata
Il account di servizio predefinito di GKE non può utilizzare una chiave Cloud KMS disattivata per la crittografia dei secret a livello di applicazione.
Per riattivare una chiave disattivata, consulta Attivare una versione della chiave disattivata.
La versione della chiave Cloud KMS viene eliminata
Quando lo stato del cluster contiene il messaggio:
KEY_VERSION_URI is not enabled, current state is: DESTROYED
,
significa che la versione della chiave utilizzata per la crittografia dei secret a livello di applicazione è stata eliminata.
Sostituisci KEY_VERSION_URI
con l'URI della versione della chiave.
Passaggi successivi
- Scopri di più sui secret in Kubernetes.
- Scopri di più sulla gestione dei secret utilizzando Cloud KMS.
- Scopri come proteggere il tuo cluster.