Rotazione delle chiavi dell'account di servizio

Questa pagina descrive 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 tuoi 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, private-registry-creds Secret contiene la chiave per l'account di servizio di accesso al componente.
    • Se utilizzi un registry privato, il secret private-registry-creds contiene le credenziali per il registry privato, non la chiave dell'account di servizio di accesso del componente.

    Connect-register

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

    Monitoraggio dei log

    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

    Registrazione degli audit

    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

    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 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 del servizio di logging di controllo:

    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 della chiave dell'account di servizio, esegui il seguente 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 della chiave dell'account di servizio
    • IAM_ACCOUNT: l'indirizzo email dell'account per il servizio
  5. Nel file di configurazione del cluster amministrativo, individua il campo componentAccessServiceAccountKeyPath, la sezione gkeConnect, la sezione stackdriver e la sezione cloudAuditLogging. In questi punti, 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 questi punti, sostituisci i percorsi dei file delle chiavi dell'account di servizio.

  7. Salva le modifiche apportate eseguendo i seguenti comandi. Puoi ruotare i tasti di un componente alla volta oppure ruotare tutti i tasti 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 del nodo

Alcune rotazioni delle chiavi dell'account di servizio potrebbero richiedere più tempo perché è necessaria la nuova creazione dei nodi:

Account di servizio È necessaria la ricreazione dei nodi
Accesso ai componenti Se utilizzi Container Registry: Sì
Se utilizzi un registry 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
Misurazione dell'utilizzo No

Per una rotazione della chiave che richiede la ricreazione dei nodi, questi vengono sostituiti in un processo di aggiornamento continuo, ovvero 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 maggiori dettagli, consulta Tempo di inattività durante gli upgrade.

Ripristino dei backup

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

kubectl apply -f backup/