Rotazione delle chiavi account di servizio

In questa pagina viene descritto come ruotare le chiavi per i seguenti account di servizio:

Per ruotare le chiavi dell'account di servizio:

  1. Crea una directory per archiviare un backup dei secret attuali:

    mkdir backup
  2. Prendi nota delle seguenti informazioni per l'account di servizio pertinente:

    Accesso ai componenti

    Cluster Secret Spazio dei nomi
    Amministratore admin-cluster-creds kube-system
    Amministratore user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Amministratore private-registry-creds kube-system
    Utente private-registry-creds kube-system
    • Se non utilizzi un registro privato, il private-registry-creds Secret contiene la chiave per l'account di servizio di accesso ai componenti.
    • Se utilizzi un registro privato, il secret private-registry-creds contiene le credenziali per il registro privato, non la chiave dell'account di servizio di accesso ai componenti.

    Connect-register

    Cluster Secret Spazio dei nomi
    Amministratore admin-cluster-creds kube-system
    Amministratore user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt

    Logging-monitoring

    Cluster Secret Spazio dei nomi
    Amministratore admin-cluster-creds kube-system
    Amministratore user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Utente google-cloud-credentials kube-system
    Utente stackdriver-service-account-key knative-serving

    Audit logging

    Cluster Secret Spazio dei nomi
    Amministratore admin-cluster-creds kube-system
    Amministratore user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Amministratore kube-apiserver CLUSTER_NAME

    Stackdriver

    Cluster Secret Spazio dei nomi
    Amministratore admin-cluster-creds kube-system
    Amministratore user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Utente google-cloud-credentials kube-system
    Utente stackdriver-service-account-key knative-serving
  3. Crea un backup di ogni secret utilizzando il seguente comando:

    kubectl get secret SECRET --namespace NAMESPACE \
        --kubeconfig KUBECONFIG -o json > backup/SECRET-NAMESPACE.json

    Sostituisci quanto segue:

    • NAMESPACE: lo spazio dei nomi in cui si trova il secret. Ad esempio, kube-system.
    • KUBECONFIG: il percorso del file kubeconfig per il cluster di amministrazione o utente.
    • SECRET: il nome del secret. Ad esempio, admin-cluster-creds.

    Ad esempio, esegui i seguenti comandi per l'account di servizio di audit logging:

    kubectl get secret admin-cluster-creds --namespace kube-system \
            --kubeconfig KUBECONFIG -o json > backup/admin-cluster-creds-kube-system.json
    
    kubectl get secret user-cluster-creds --namespace NAMESPACE \
            --kubeconfig KUBECONFIG -o json > backup/user-cluster-creds-NAMESPACE.json
    
    kubectl get secret kube-apiserver --namespace NAMESPACE \
            --kubeconfig KUBECONFIG -o json > backup/kube-apiserver-NAMESPACE.json
  4. Per creare un nuovo file di chiavi dell'account di servizio, esegui questo comando:

    gcloud iam service-accounts keys create NEW_KEY_FILE --iam-account IAM_ACCOUNT

    Sostituisci quanto segue:

    • NEW_KEY_FILE: il nome del nuovo file di chiavi dell'account di servizio
    • IAM_ACCOUNT: l'indirizzo email del account di servizio
  5. Nel file di configurazione del cluster di amministrazione, individua il campo componentAccessServiceAccountKeyPath, la sezione gkeConnect, la sezione stackdriver e la sezione cloudAuditLogging. In questi punti, sostituisci i percorsi dei file di chiavi dell'account di servizio.

  6. Nel file di configurazione del cluster utente, individua il campo componentAccessServiceAccountKeyPath, la sezione gkeConnect, la sezione stackdriver e la sezione cloudAudigLogging. In questi punti, sostituisci i percorsi dei file di chiavi dell'account di servizio.

  7. Salva le modifiche apportate eseguendo i seguenti comandi:

    Puoi ruotare le chiavi per un componente alla volta oppure puoi ruotare tutte le chiavi contemporaneamente impostando il componente su sakeys.

    gkectl update credentials COMPONENT \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config ADMIN_CLUSTER_CONFIG \
        --admin-cluster
    
    gkectl update credentials COMPONENT \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG
    

    Sostituisci quanto segue;

    • COMPONENT: uno dei seguenti:

      • componentaccess
      • register
      • cloudauditlogging
      • stackdriver
      • sakeys (ruota tutte le chiavi dei componenti)
    • ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig per il cluster di amministrazione.

    • ADMIN_CLUSTER_CONFIG: il percorso del file di configurazione del cluster di amministrazione.

    • USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente.

Ricreazione dei nodi

Alcune rotazioni della chiave degli account di servizio potrebbero richiedere più tempo perché è necessaria la ricreazione dei nodi:

Service account Ricreazione dei nodi richiesta
Accesso ai componenti Se utilizzi Artifact Registry: Sì
Se utilizzi un registro privato: No
Audit logging Cluster di amministrazione: Sì, ma solo i nodi del control plane
Cluster utente che utilizza kubeception: No
Cluster utente che utilizza Controlplane V2: Sì, ma solo i nodi del control plane
Logging-monitoring No
Connect-register No

Per una rotazione della chiave che richiede la ricreazione dei nodi, i nodi vengono sostituiti in un processo di aggiornamento in sequenza, ovvero i nodi vengono ricreati uno alla volta.

Il possibile tempo di inattività durante una rotazione della chiave è simile al tempo di inattività per un upgrade del cluster. Per informazioni dettagliate, vedi Tempo di inattività durante gli upgrade.

Ripristino dei backup

Se devi ripristinare i backup dei secret creati in precedenza, esegui questo comando:

kubectl apply -f backup/

Differenze dei cluster avanzati per la rotazione delle chiavi degli account di servizio

Il comando gkectl update credentials è supportato solo parzialmente per i cluster avanzati. La tabella seguente elenca le varianti dei comandi supportate e non supportate:

Comando Descrizione Assistenza
gkectl update credentials certificate-authorities rotate Ruota le autorità di certificazione. Supportato
gkectl update credentials certificate-authorities status (Anteprima) Visualizza lo stato di rotazione delle autorità di certificazione. Supportato
gkectl update credentials certificate-authorities update-kubeconfig Scarica un file kubeconfig con il certificato client più recente. Supportato
gkectl update credentials cloudauditlogging Aggiorna le credenziali di Cloud Audit Logs. Non supportato
gkectl update credentials componentaccess Aggiorna le credenziali della chiave dell'account di servizio di accesso ai componenti per i cluster creati con Google Distributed Cloud per VMware. Supportato
gkectl update credentials f5bigip Aggiorna le credenziali del bilanciatore del carico F5 BIG-IP. Non necessario
gkectl update credentials ksa-signing-key rotate Ruota la chiave di firma del token dell'account di servizio Kubernetes (KSA). Non supportato
gkectl update credentials ksa-signing-key status Visualizza lo stato di una rotazione della chiave di firma del token KSA in corso. Non supportato
gkectl update credentials Aggiorna le credenziali del cluster. Supportato
gkectl update credentials privateregistry Aggiorna le credenziali del registro privato per un cluster. Supportato
gkectl update credentials register Aggiorna le credenziali della chiave dell'account di servizio di registrazione. Supportato
gkectl update credentials sakeys Aggiorna le credenziali delle chiavi dell'account di servizio per un cluster. Supportato
gkectl update credentials stackdriver (Anteprima) Aggiorna le credenziali di Google Cloud Observability. Supportato
gkectl update credentials vsphere Aggiorna le credenziali di vSphere per un cluster. Supportato

Per un elenco completo delle funzionalità di Google Distributed Cloud per VMware e delle capacità supportate o meno per i cluster avanzati, vedi Differenze durante l'esecuzione di cluster avanzati.