Risolvere i problemi relativi alla crittografia dei secret a livello di applicazione


Questa pagina mostra come risolvere i problemi relativi alla crittografia dei secret a livello di applicazione in Google Kubernetes Engine (GKE).

Aggiornamento non riuscito

Quando aggiorni la configurazione di crittografia 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 che vengano scritti non criptati, se è questa la configurazione scelta.

Questa operazione di aggiornamento può non riuscire per una delle seguenti condizioni:

  • Il piano di controllo Kubernetes non è temporaneamente disponibile mentre l'aggiornamento è in corso.
  • Un AdmissionWebhook definito dall'utente impedisce a GKE di aggiornare gli oggetti Secret.
  • La chiave Cloud KMS aggiornata o precedente viene disattivata prima del completamento dell'operazione di aggiornamento.

Fino a quando l'operazione di aggiornamento non viene completata, non interagire con le chiavi Cloud KMS aggiornate o precedenti.

Campi di debug

I nuovi 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 recuperare dai guasti.

I passaggi che seguono si applicano solo ai cluster in cui il campo DatabaseEncryption.CurrentState non è vuoto. Se il campo CurrentState è vuoto, significa che la funzionalità non è ancora attivata in questa versione del cluster.

A questi campi si applicano i seguenti limiti:

  • Sono solo di output, il che significa che non puoi impostarli durante le richieste di creazione o aggiornamento del cluster.

Campo CurrentState

Puoi controllare lo stato attuale di un'operazione di aggiornamento DatabaseEncryption esaminando il campo CurrentState in Cluster.DatabaseEncryption.

Valore di CurrentState Descrizione

CURRENT_STATE_ENCRYPTED

CURRENT_STATE_DECRYPTED

L'ultima operazione di aggiornamento è andata a buon fine. Non sono necessarie altre azioni. Puoi eliminare le chiavi utilizzate in precedenza.

CURRENT_STATE_ENCRYPTION_PENDING

CURRENT_STATE_DECRYPTION_PENDING

L'aggiornamento è in corso.

CURRENT_STATE_ENCRYPTION_ERROR

CURRENT_STATE_DECRYPTION_ERROR

Si è verificato un errore con l'aggiornamento più recente. Non disattivare o distruggere le chiavi Cloud KMS utilizzate in precedenza, in quanto potrebbero essere ancora in uso da GKE.

Per ulteriori informazioni, consulta il campo LastOperationErrors.

Campo LastOperationErrors

Quando un'operazione di aggiornamento non riesce, 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. Di solito è l'unica chiave utilizzata dal cluster.

Tuttavia, DatabaseEncryption.DecryptionKeys contiene chiavi aggiuntive che vengono utilizzate anche dal cluster se è in corso un aggiornamento o dopo un errore.

Ripristinare un aggiornamento non riuscito

Per recuperare da un aggiornamento non riuscito:

  1. Esamina il messaggio di errore e risolvi eventuali problemi indicati.
  2. Riprova a inviare 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 inviato inizialmente o di ripristinare lo stato precedente del cluster. GKE potrebbe non essere in grado di passare a un altro stato di crittografia o della chiave 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 delle chiavi Cloud KMS per assicurarti che le versioni delle chiavi pertinenti siano utilizzabili.

Se l'errore indica che una chiave Cloud KMS è stata disattivata o eliminata, riattiva la chiave o la versione della chiave.

Errore: impossibile utilizzare la chiave Cloud KMS configurata per la crittografia a livello di applicazione

Se l'account servizio predefinito di GKE non riesce ad accedere alla chiave Cloud KMS, viene visualizzato il seguente messaggio di errore:

Cluster problem detected (Kubernetes Engine Service Agent account unable to use CloudKMS key configured for Application Level encryption).

Per risolvere il problema, riattiva la chiave disattivata.

Impossibile aggiornare il secret

Se l'API Kubernetes ha rifiutato la richiesta di aggiornamento a causa di un webhook di ammissione, potrebbe verificarsi il seguente errore:

error admission webhook WEBHOOK_NAME denied the request

Per risolvere questo errore, rimuovi l'webhook o modificalo in modo che GKE possa aggiornare i secret in tutti gli spazi dei nomi durante gli aggiornamenti delle chiavi.