Ruotare le chiavi di sicurezza del cluster

Rotazione chiavi

La rotazione della chiave è l'azione di modificare il materiale crittografico sottostante contenuto in una chiave di crittografia della chiave (KEK). Può essere attivata automaticamente nell'ambito di una rotazione pianificata o manualmente, in genere dopo un incidente di sicurezza in cui le chiavi potrebbero essere state compromesse. La rotazione della chiave sostituisce solo il singolo campo della chiave che contiene i dati della chiave di crittografia/decrittografia non elaborati.

Rotazione automatica delle chiavi

AWS Key Management Service (KMS) supporta la rotazione automatica delle chiavi KMS. Se abilitata, AWS genera automaticamente nuovo materiale associato alla chiave di crittografia per la tua chiave una volta all'anno. Non sono richieste azioni manuali.

Dopo la rotazione della chiave, GKE su AWS cripta ogni nuovo Secret con la nuova chiave. Il secret creato in precedenza viene comunque decriptato con la chiave originale. Per questo motivo, AWS conserva il materiale della chiave precedente della CMK per sempre, consentendo la decriptazione delle DEK precedenti quando vengono letti i segreti precedenti.

Puoi verificare se la rotazione automatica è abilitata per una chiave KMS con il seguente comando:

aws kms get-key-rotation --key-id KMS_KEY_ID

Sostituisci KMS_KEY_ID con l'ID della tua chiave AWS KMS.

Puoi attivare la rotazione automatica delle chiavi eseguendo questo comando:

aws kms enable-key-rotation --key-id KMS_KEY_ID

Rotazione manuale delle chiavi

Questa sezione spiega come ruotare manualmente le chiavi di configurazione del control plane o del pool di nodi.

Chiave di configurazione del control plane

Per ruotare manualmente la chiave di configurazione del control plane, segui questi passaggi:

  1. Crea una nuova chiave Cloud Key Management Service. Salva il valore dell'ARN della chiave KMS. Lo utilizzerai in un secondo momento.

  2. Assicurati che il ruolo IAM associato al cluster disponga delle autorizzazioni per criptare e decriptare utilizzando la nuova chiave.

  3. Utilizza il comando gcloud container aws clusters update per aggiornare la chiave di crittografia.

     gcloud container aws clusters update CLUSTER_NAME \
        --location=GOOGLE_CLOUD_LOCATION \
        --config-encryption-kms-key-arn=CONFIG_ENCRYPTION_KMS_KEY_ARN
    

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster
    • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata che gestisce il cluster, ad esempio us-west1
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: il nuovo ARN della chiave KMS

Volume root del control plane

Per ruotare manualmente la chiave del volume radice del control plane, segui questi passaggi:

  1. Crea una nuova chiave Cloud Key Management Service. Salva il valore dell'ARN della chiave KMS. Lo utilizzerai in un secondo momento.

  2. Assicurati che il ruolo IAM associato al cluster disponga delle autorizzazioni per criptare e decriptare utilizzando la nuova chiave.

  3. Utilizza il comando gcloud container aws clusters update per aggiornare la chiave di crittografia.

     gcloud container aws clusters update CLUSTER_NAME \
        --location=GOOGLE_CLOUD_LOCATION \
        --root-volume-kms-key-arn=ROOT_VOLUME_KMS_KEY_ARN
    

    Sostituisci quanto segue:

    • CLUSTER_NAME: il nome del cluster
    • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata che gestisce il cluster, ad esempio us-west1
    • ROOT_VOLUME_KMS_KEY_ARN: Amazon Resource Name (ARN) della chiave AWS KMS per criptare il volume root

Chiave di configurazione del node pool

Per ruotare manualmente la chiave di configurazione del pool di nodi, segui questi passaggi:

  1. Crea una nuova chiave Cloud Key Management Service.

  2. Assicurati che il ruolo IAM associato al cluster disponga delle autorizzazioni per criptare e decriptare utilizzando la nuova chiave.

  3. Aggiorna l'alias KMS in uso:

     aws kms update-alias --alias-name KEY_ALIAS \
         --target-key-id CONFIG_ENCRYPTION_KMS_KEY_ARN
    

    Sostituisci quanto segue:

    • KEY_ALIAS: l'alias della chiave esistente
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: il nuovo ARN della chiave KMS
  4. Forza il cluster a criptare nuovamente tutti i secret del cluster utilizzando la nuova chiave di crittografia:

     kubectl get secrets --all-namespaces -o json | \
     kubectl annotate --overwrite -f - encryption-key-rotation-time=`date +"%Y%m%d-%H%M%S"`
    
  5. Disattiva la vecchia chiave KMS AWS. Per ulteriori informazioni, vedi Abilitare e disabilitare le chiavi.

Volumi root del node pool

Per ruotare manualmente la chiave del volume radice del pool di nodi, segui questi passaggi:

  1. Crea una nuova chiave Cloud Key Management Service.

  2. Assicurati che il ruolo IAM associato al cluster disponga delle autorizzazioni per criptare e decriptare utilizzando la nuova chiave.

  3. Aggiorna l'alias KMS in uso:

     aws kms update-alias --alias-name KEY_ALIAS \
         --target-key-id ROOT_VOLUME_KMS_KEY_ARN
    

    Sostituisci quanto segue:

    • KEY_ALIAS: l'alias della chiave esistente
    • ROOT_ENCRYPTION_KMS_KEY_ARN: il nuovo ARN della chiave KMS
  4. Aggiorna il pool di nodi:

     gcloud container aws node-pools update NODE_POOL_NAME \
         --root-volume-kms-key-arn=ROOT_VOLUME_KMS_KEY_ARN
    

    Sostituisci quanto segue:

    • NODE_POOL_NAME: il nome del tuo pool di nodi
    • ROOT_VOLUME_KMS_KEY_ARN: Amazon Resource Name (ARN) della chiave AWS KMS per criptare il volume root
  5. Disattiva la vecchia chiave KMS AWS. Per ulteriori informazioni, vedi Abilitare e disabilitare le chiavi.