La crittografia dei secret a livello di applicazione aggiunge un livello di protezione configurabile per i dati sensibili in Google Kubernetes Engine (GKE), come credenziali e chiavi. I problemi con questa configurazione possono impedire il corretto funzionamento di questo livello di sicurezza aggiuntivo.
Utilizza questo documento per risolvere i problemi relativi alla crittografia dei secret a livello di applicazione esaminando i campi di debug disponibili nell'oggetto Cluster dell'API GKE. Questi campi ti aiutano a diagnosticare la causa principale degli errori comuni, come gli aggiornamenti non riusciti o i problemi con la chiave Cloud KMS.
Queste informazioni sono importanti per gli amministratori e gli operatori della piattaforma e per gli ingegneri della sicurezza responsabili della protezione delle informazioni sensibili archiviate nei cluster GKE. Per ulteriori informazioni sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei Google Cloud contenuti, consulta Ruoli e attività comuni degli utenti GKE.
Aggiornamento non riuscito
Quando aggiorni la configurazione della crittografia dei secret a livello di applicazione, GKE deve riscrivere tutti gli oggetti Secret nel cluster Kubernetes. GKE esegue questa operazione per garantire che tutti i secret siano criptati dalla nuova chiave Cloud KMS o scritti senza crittografia, se è questa la configurazione.
Questa operazione di aggiornamento può non riuscire a causa di una delle seguenti condizioni:
- Il piano di controllo Kubernetes non è temporaneamente disponibile durante l'aggiornamento.
- Un
AdmissionWebhookdefinito dall'utente impedisce a GKE di aggiornare gli oggetti Secret. - La chiave Cloud KMS aggiornata o precedente è disabilitata prima del completamento dell'operazione di aggiornamento.
Finché l'operazione di aggiornamento non va a buon fine, non interagire con le chiavi Cloud KMS aggiornate o precedenti.
Campi di debug
Novità I cluster GKE che eseguono la versione 1.29 e successive contengono campi aggiuntivi che ti aiutano a monitorare gli aggiornamenti di Cluster.DatabaseEncryption e a eseguire il ripristino in caso di errori.
I passaggi seguenti si applicano solo ai cluster in cui il campo DatabaseEncryption.CurrentState non è vuoto. Se il campo CurrentState è vuoto, la funzionalità non è ancora abilitata in questa versione del cluster.
I seguenti limiti si applicano a questi campi:
- Sono solo output, il che significa che non puoi impostarli durante le richieste di creazione o aggiornamento del cluster.
Campo CurrentState
Puoi esaminare lo stato attuale di un'operazione di aggiornamento DatabaseEncryption
esaminando il campo CurrentState in Cluster.DatabaseEncryption.
Valore di CurrentState |
Descrizione |
|---|---|
|
|
L'ultima operazione di aggiornamento è andata a buon fine. Non è necessaria alcuna ulteriore azione. Puoi eliminare le chiavi utilizzate in precedenza. |
|
|
L'aggiornamento è in corso. |
|
|
Si è verificato un errore durante l'ultimo aggiornamento. Non disabilitare o eliminare le chiavi Cloud KMS utilizzate in precedenza, perché potrebbero essere ancora in uso da GKE.
Per ulteriori informazioni, consulta il campo |
Campo LastOperationErrors
Quando un'operazione di aggiornamento non va a buon fine, l'errore sottostante del piano di controllo GKE viene visualizzato nell'output di gcloud container clusters update.
I messaggi di errore delle due operazioni di aggiornamento non riuscite più recenti sono disponibili anche in Cluster.DatabaseEncryption.LastOperationErrors.
Campo DecryptionKeys
La chiave Cloud KMS utilizzata per le nuove operazioni di crittografia è mostrata in DatabaseEncryption.KeyName. In genere, questa è l'unica chiave utilizzata dal cluster.
Tuttavia, DatabaseEncryption.DecryptionKeys contiene chiavi aggiuntive utilizzate anche dal cluster se è in corso un aggiornamento o dopo un errore.
Ripristino da un aggiornamento non riuscito
Per eseguire il ripristino da un aggiornamento non riuscito:
- Esamina il messaggio di errore e risolvi eventuali problemi indicati.
- Riprova a eseguire la richiesta di aggiornamento eseguendo il comando non riuscito, ad esempio
gcloud container clusters update ... --database-encryption-key. Ti consigliamo di riprovare con la stessa richiesta di aggiornamento che hai emesso originariamente o di riportare il cluster allo stato precedente. GKE potrebbe non essere in grado di passare a una chiave o a uno stato di crittografia diverso se non riesce a leggere uno o più secret.
Le sezioni seguenti elencano i motivi comuni degli errori.
Errore della chiave Cloud KMS
Se il messaggio di errore contiene un riferimento a una o più chiavi Cloud KMS, esamina la configurazione della chiave Cloud KMS per assicurarti che le versioni delle chiavi pertinenti siano utilizzabili.
Se l'errore indica che una chiave Cloud KMS è stata disabilitata o eliminata, riabilita la chiave o la versione della chiave.
Errore: Unable to use CloudKMS key configured for Application Level encryption
Il seguente messaggio di errore si verifica se il service account predefinito di GKE non riesce ad accedere alla chiave Cloud KMS:
Cluster problem detected (Kubernetes Engine Service Agent account unable to use CloudKMS key configured for Application Level encryption).
Per risolvere il problema, riabilita la chiave disabilitata.
Impossibile aggiornare il secret
Il seguente errore potrebbe verificarsi se l'API Kubernetes ha rifiutato la richiesta di aggiornamento a causa di un webhook di ammissione:
error admission webhook WEBHOOK_NAME denied the request
Per risolvere questo errore, rimuovi il webhook o modificalo in modo che GKE possa aggiornare i secret in tutti gli spazi dei nomi durante gli aggiornamenti delle chiavi.
Errore: the namespace is managed
Il seguente errore si verifica quando tenti di ricriptare i secret che si trovano in uno spazio dei nomi gestito da GKE, ad esempio kube-system, in un cluster Autopilot. Il messaggio di errore è simile al seguente:
Error from server (Forbidden): secrets "alertmanager" is
forbidden: User cannot patch resource "secrets" in API group "" in the namespace "gke-gmp-system":
GKE Warden authz [denied by managed-namespaces-limitation]: the namespace "gke-gmp-system"
is managed and the request's verb "patch" is denied'
I cluster GKE Autopilot non consentono di modificare le risorse Kubernetes, inclusi i secret, negli spazi dei nomi gestiti.
Per risolvere questo errore:
- Se utilizzi i comandi
kubectlper ricriptare i secret, utilizza il flag--namespaceper limitare l'ambito del comando agli spazi dei nomi che gestisci. - Se utilizzi un CronJob per ricriptare i secret, eseguilo solo negli spazi dei nomi che gestisci.
Passaggi successivi
Se non riesci a trovare una soluzione al tuo problema nella documentazione, consulta Richiedere assistenza per ulteriore assistenza, inclusi consigli sui seguenti argomenti:
- Aprire una richiesta di assistenza contattando l'assistenza clienti Google Cloud.
- Ricevere assistenza dalla community ponendo domande su Stack Overflow e utilizzando il tag
google-kubernetes-engineper cercare problemi simili. Puoi anche unirti al#kubernetes-enginecanale Slack per ulteriore assistenza dalla community. - Aprire richieste di funzionalità o problemi utilizzando lo strumento di monitoraggio dei problemi pubblico.