Rotazione delle chiavi degli account di servizio

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

Per ruotare le chiavi degli account di servizio:

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

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

    Accesso ai componenti

    Cluster Secret Spazio dei nomi
    Amministratore credenziali-cluster-amministratore 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 secret di private-registry-creds contiene la chiave dell'account di servizio di accesso ai componenti.
    • Se utilizzi un registro privato, il secret private-registry-creds contiene le credenziali del registro privato, non la chiave dell'account di servizio di accesso ai componenti.

    Connetti-registra

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

    Monitoraggio-Logging

    Cluster Secret Spazio dei nomi
    Amministratore credenziali-cluster-amministratore 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 credenziali-cluster-amministratore kube-system
    Amministratore user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Amministratore kube-apiserver CLUSTER_NAME

    Misurazione dell'utilizzo

    Cluster Secret Spazio dei nomi
    Amministratore user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Utente usage-metering-bigquery-service-account-key kube-system

    Stackdriver

    Cluster Secret Spazio dei nomi
    Amministratore credenziali-cluster-amministratore 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 comandi seguenti 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: nome del nuovo file di chiavi dell'account di servizio
    • IAM_ACCOUNT: l'indirizzo email dell'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 posti, sostituisci i percorsi dei file delle chiavi dell'account di servizio.

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

  7. Salva le modifiche apportate eseguendo i comandi indicati di seguito. Puoi ruotare le chiavi di 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
      • usagemetering
      • stackdriver
      • sakeys (ruota le chiavi per più 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 dell'account di servizio potrebbero richiedere più tempo perché è necessaria la ricreazione dei nodi:

Account di servizio Ricreazione dei nodi obbligatoria
Accesso ai componenti Se utilizzi Container Registry: Sì
Se utilizzi un registro privato: No
Audit logging Cluster di amministrazione: Sì
Cluster utente con Contrlplane V2 abilitato: Sì, ma solo i nodi del piano di controllo
Monitoraggio del logging No
Connetti-registra No
Misurazione dell'utilizzo No

Per una rotazione della chiave che richiede la nuova creazione 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 a quello per un upgrade del cluster. Per maggiori dettagli, consulta Tempo di riposo durante gli upgrade.

Ripristino dei backup

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

kubectl apply -f backup/