Ruotare le chiavi di crittografia del disco di avvio di etcd e del control plane

Questa pagina mostra come ruotare le chiavi di crittografia del disco di avvio di etcd e del control plane che hai configurato per GKE control plane authority. Questo documento è rivolto agli amministratori di cluster e agli ingegneri della sicurezza.

Prima di leggere questo documento, acquisisci familiarità con i seguenti concetti di GKE control plane authority:

Pianifica le rotazioni delle chiavi

Questo documento mostra come ruotare i seguenti componenti delle credenziali nel control plane:

  • La chiave di crittografia per etcd e i dischi di avvio del control plane.
  • La chiave di crittografia per il backup interno di etcd utilizzato da Google Cloud per il ripristino di emergenza.

Puoi anche ruotare le autorità di certificazione (CA) gestite dal cliente e le chiavi di firma dei account di servizio che configuri con GKE control plane authority. Per saperne di più, consulta Ruota le CA e le chiavi di firma del control plane gestite dal cliente.

Le chiavi in Cloud Key Management Service (Cloud KMS) non scadono. Se la tua organizzazione ha un requisito di sicurezza per rotazione della chiave, ruota le chiavi manualmente. Per ridurre al minimo le interruzioni dei workload in esecuzione, non configurare la rotazione della chiave automatica per queste chiavi.

Quando ruoti le chiavi di crittografia per i dischi di avvio del control plane ed etcd, GKE crea un nuovo disco criptato utilizzando la nuova chiave. Per i cluster regionali, questa operazione non comporta tempi di inattività grazie al control plane replicato. Per i cluster di zona, il control plane non è disponibile finché non è disponibile il nuovo disco.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Per utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo il comando gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
  • Disporre di un cluster esistente che utilizza la crittografia del disco di avvio del control plane e di etcd ed esegue GKE versione 1.35.2-gke.1842000 o successiva.

  • Identifica gli ID progetto dei seguenti progetti Google Cloud :

    • Progetto chiave: il progetto che contiene le tue risorse Cloud KMS.
    • Progetto cluster: il progetto che contiene il tuo cluster GKE.
  • Per eseguire le attività di convalida descritte in questo documento, verifica che l'audit log di accesso ai dati DATA_READ sia abilitato per l'API Cloud Key Management Service (KMS). Per saperne di più, consulta Abilita i log di controllo dell'accesso ai dati.

Ruoli e autorizzazioni richiesti

Per ottenere le autorizzazioni necessarie per ruotare le CA e le chiavi gestite dal cliente, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Gestisci le chiavi o le versioni delle chiavi: Cloud KMS Admin (roles/cloudkms.admin) sul progetto delle chiavi
  • Configura i cluster per l'utilizzo di nuove chiavi: Kubernetes Engine Cluster Admin (roles/container.clusterAdmin) nel progetto del cluster

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Limitazioni

Puoi aggiornare i cluster alle nuove versioni delle chiavi esistenti, ma non puoi aggiornarli in modo che utilizzino chiavi completamente nuove per queste operazioni di crittografia.

Concedi i ruoli IAM all'agente di servizio GKE

Per ruotare le chiavi di crittografia per i dischi di avvio ed etcd, concedi il ruolo Kubernetes Engine KMS Crypto Key User (roles/container.cloudKmsKeyUser) sulle chiavi di crittografia nel progetto delle chiavi all'agente di servizio GKE nel progetto del cluster:

gcloud kms keys add-iam-policy-binding KCP_DISK_KEY_NAME \
    --keyring=KEYRING_NAME \
    --location=LOCATION \
    --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
    --role=roles/container.cloudKmsKeyUser \
    --project=KEY_PROJECT_ID

Sostituisci quanto segue:

  • KCP_DISK_KEY_NAME: il nome della chiave di crittografia per i dischi di avvio del control plane e i dischi etcd.
  • KEYRING_NAME: il nome delle chiavi automatizzate che contengono la chiave.
  • LOCATION: la Google Cloud posizione delle chiavi automatizzate. Deve corrispondere alla località del cluster. Per un elenco delle regioni, filtra per "Regione" nella tabella delle località di Cloud KMS.
  • CLUSTER_PROJECT_NUMBER: il numero di progetto numerico del progetto del cluster.
  • KEY_PROJECT_ID: l'ID progetto del tuo progetto chiave.

Ruota la chiave per i dischi di avvio di etcd e del control plane

  1. Crea una nuova versione della chiave primaria per il disco di avvio e la chiave di crittografia etcd:

    gcloud kms keys versions create \
        --key=KCP_DISK_KEY_NAME \
        --keyring=KEYRING_NAME \
        --location=LOCATION \
        --project=KEY_PROJECT_ID \
        --primary
    

    La propagazione delle modifiche nel progetto potrebbe richiedere fino a 10 minuti.

  2. Trova la versione patch attuale del control plane del cluster:

    gcloud container clusters describe CLUSTER_NAME \
        --location=LOCATION \
        --format='value(currentMasterVersion)'
    

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del tuo cluster GKE.
    • LOCATION: la località del control plane del cluster GKE, ad esempio us-central1.
  3. Esegui l'upgrade del control plane del cluster alla stessa versione che utilizza già.

    gcloud container clusters upgrade CLUSTER_NAME \
        --master \
        --location=LOCATION \
        --cluster-version=CONTROL_PLANE_VERSION \
        --project=CLUSTER_PROJECT_ID
    

    Sostituisci quanto segue:

    • CONTROL_PLANE_VERSION: la versione del control plane del cluster dall'output del passaggio precedente.
    • CLUSTER_PROJECT_ID: l'ID progetto del tuo progetto cluster.

Al termine dell'operazione di upgrade del control plane, il cluster utilizza la nuova versione della chiave per criptare i dischi di avvio del control plane e gli eventuali dischi etcd.

Ruota la chiave di crittografia del backup interno di etcd

Questa sezione mostra come ruotare la chiave di crittografia per il backup interno di etcd, che Google Cloud utilizza per il ripristino di emergenza. Puoi configurare la rotazione automatica per questa chiave, ma ti consigliamo di eseguire la rotazione manuale. Dopo aver ruotato la chiave, il cluster utilizza la nuova versione della chiave per criptare i nuovi backup interni di etcd.

I backup interni di etcd utilizzano la versione chiave primaria e vengono eseguiti ai seguenti intervalli:

  • Ogni 30 minuti per i cluster di zona.
  • Ogni 10 minuti per i cluster Autopilot e i cluster Standard regionali.

Dopo aver ruotato la chiave, non disabilitare o distruggere immediatamente la versione precedente della chiave. Attendi che sia trascorso un tempo sufficiente per consentire a GKE di creare nuovi backup interni di etcd che utilizzano la nuova versione della chiave.

  • Crea una nuova versione della chiave primaria per la chiave di crittografia del backup interno di etcd:

    gcloud kms keys versions create \
        --key=ETCD_BACKUP_KEY_NAME \
        --keyring=KEYRING_NAME \
        --location=LOCATION \
        --project=KEY_PROJECT_ID \
        --primary
    

    Sostituisci quanto segue:

    • ETCD_BACKUP_KEY_NAME: il nome della chiave di crittografia del backup interno di etcd.
    • KEYRING_NAME: il nome delle chiavi automatizzate che contengono la chiave.
    • LOCATION: la Google Cloud posizione delle chiavi automatizzate. Deve corrispondere alla località del cluster. Per un elenco delle regioni, filtra per "Regione" nella tabella delle località di Cloud KMS.
    • KEY_PROJECT_ID: l'ID progetto del tuo progetto chiave.

Passaggi successivi