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 della crittografia dei secret a livello di applicazione, GKE deve riscrivere tutti gli oggetti Secret nel cluster Kubernetes. GKE lo fa per garantire che tutti i secret siano criptati dalla nuova chiave Cloud KMS o scritti non criptati se questa è l'impostazione che configuri.

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

  • Il piano di controllo Kubernetes è temporaneamente non disponibile durante l'aggiornamento.
  • Un elemento AdmissionWebhook definito dall'utente impedisce a GKE di aggiornare gli oggetti secret.
  • La chiave Cloud KMS aggiornata o precedente viene 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

I nuovi cluster GKE che eseguono la versione 1.29 e successive contengono campi aggiuntivi che ti consentono di monitorare gli aggiornamenti a Cluster.DatabaseEncryption e aiutarti a ripristinare gli 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 su questa versione del cluster.

A questi campi si applicano i limiti seguenti:

  • Sono solo 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 di DatabaseEncryption esaminando il campo CurrentState in Cluster.DatabaseEncryption.

Valore di CurrentState Descrizione

CURRENT_STATE_ENCRYPTED

CURRENT_STATE_DECRYPTED

L'ultima operazione di aggiornamento è riuscita. Non sono necessarie ulteriori azioni. Puoi eliminare tutte le chiavi utilizzate in precedenza.

CURRENT_STATE_ENCRYPTION_PENDING

CURRENT_STATE_DECRYPTION_PENDING

Aggiornamento in corso.

CURRENT_STATE_ENCRYPTION_ERROR

CURRENT_STATE_DECRYPTION_ERROR

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

Per ulteriori informazioni, consulta il campo LastOperationErrors.

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 più recenti operazioni di aggiornamento non riuscite 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 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.

Eseguire il ripristino da un aggiornamento non riuscito

Per eseguire il ripristino in seguito a un aggiornamento non riuscito, procedi nel seguente modo:

  1. Esamina il messaggio di errore e risolvi gli 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 inviata in origine oppure di aggiornare il cluster allo stato precedente. GKE potrebbe non essere in grado di passare a una chiave o uno stato di crittografia diversi se non può leggere uno o più secret.

Le seguenti sezioni elencano i motivi più 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 siano utilizzabili le versioni della chiave pertinenti.

Ad esempio, se l'errore indica che una chiave Cloud KMS è stata disabilitata o eliminata, abilita nuovamente la chiave o la versione della chiave.

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 il webhook o modificalo in modo che GKE possa aggiornare i secret in tutti gli spazi dei nomi durante gli aggiornamenti delle chiavi.