Como fazer a rotação de chaves de contas de serviço

Nesta página, descrevemos como fazer a rotação de chaves das seguintes contas de serviço:

Para alternar as chaves da conta de serviço:

  1. Crie um diretório para armazenar um backup dos seus secrets atuais:

    mkdir backup
  2. Observe as seguintes informações sobre a conta de serviço relevante:

    Acesso a componentes

    Cluster Secret Namespace
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Administrador private-registry-creds kube-system
    Usuário private-registry-creds kube-system
    • Se você não estiver usando um registro particular, o secret private-registry-creds terá a chave para sua conta de serviço de acesso a componentes.
    • Se você estiver usando um registro particular, o Secret private-registry-creds manterá as credenciais do registro particular, não a chave da conta de serviço de acesso ao componente.

    Registro do Connect

    Cluster Secret Namespace
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt

    Geração de registros/monitoramento

    Cluster Secret Namespace
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Usuário google-cloud-credentials kube-system
    Usuário stackdriver-service-account-key knative-serving

    Registro de auditoria

    Cluster Secret Namespace
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Administrador kube-apiserver CLUSTER_NAME

    Medição de uso

    Cluster Secret Namespace
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Usuário usage-metering-bigquery-service-account-key kube-system

    Stackdriver

    Cluster Secret Namespace
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Usuário google-cloud-credentials kube-system
    Usuário stackdriver-service-account-key knative-serving
  3. Crie um backup de cada secret usando o seguinte comando:

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

    Substitua:

    • NAMESPACE: o namespace em que o secret está localizado. Por exemplo, kube-system.
    • KUBECONFIG: o caminho para o arquivo kubeconfig do cluster de administrador ou usuário.
    • SECRET: o nome do secret Por exemplo, admin-cluster-creds.

    Por exemplo, execute os seguintes comandos para a conta de serviço do registro de auditoria:

    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. Para criar um novo arquivo de chave da conta de serviço, execute o seguinte comando:

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

    Substitua:

    • NEW_KEY_FILE: o nome do novo arquivo de chave da conta de serviço.
    • IAM_ACCOUNT: o endereço de e-mail da conta de serviço.
  5. No arquivo de configuração do cluster de administrador, encontre o campo componentAccessServiceAccountKeyPath, a seção gkeConnect, a seção stackdriver e a seção cloudAuditLogging. Nesses locais, substitua os caminhos para os arquivos de chave da conta de serviço.

  6. No arquivo de configuração do cluster de usuário, localize o campo componentAccessServiceAccountKeyPath, a seção gkeConnect, a seção stackdriver, a seçãocloudAudigLogging e a seção usageMetering. Nesses locais, substitua os caminhos para os arquivos de chave da conta de serviço.

  7. Salve as alterações feitas usando os seguintes comandos:

    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
    

    Substitua:

    • COMPONENT: um de componentaccess, register, cloudauditlogging, usagemetering ou stackdriver.

    • ADMIN_CLUSTER_KUBECONFIG: o caminho para o arquivo kubeconfig do cluster do administrador.

    • ADMIN_CLUSTER_CONFIG: o caminho até o arquivo de configuração do cluster de administrador.

    • USER_CLUSTER_CONFIG: o caminho para o arquivo de configuração do cluster de usuário.

Recriação de nós

Algumas rotações de chaves da conta de serviço podem levar mais tempo porque é necessário recriar o nó:

Conta de serviço Recriação de nós necessária
Acesso a componentes Se estiver usando o Container Registry: sim
Se estiver usando um registro particular: não
Registro de auditoria Cluster de administrador: sim
Cluster de usuário com o Contrlplane V2 ativado: sim, mas apenas os nós do plano de controle
Geração de registros/monitoramento Não
Registro do Connect Não
Medição de uso Não

Como restaurar backups

Se você precisar restaurar os backups dos secrets criados anteriormente, execute o seguinte comando:

kubectl apply -f backup/