Rotar las claves de cuenta de servicio

En esta página se describe cómo rotar las claves de las siguientes cuentas de servicio:

Para rotar las claves de tu cuenta de servicio, sigue estos pasos:

  1. Crea un directorio para almacenar una copia de seguridad de tus secretos actuales:

    mkdir backup
  2. Anota la siguiente información de la cuenta de servicio correspondiente:

    Acceso a componentes

    Clúster Secret Espacio de nombres
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Administrador private-registry-creds kube-system
    Usuario private-registry-creds kube-system
    • Si no usas un registro privado, el secreto private-registry-creds contiene la clave de la cuenta de servicio de acceso a componentes.
    • Si usas un registro privado, el secreto private-registry-creds contiene las credenciales de tu registro privado, no la clave de la cuenta de servicio de acceso al componente.

    Connect-register

    Clúster Secret Espacio de nombres
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt

    Monitorización de registros

    Clúster Secret Espacio de nombres
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Usuario google-cloud-credentials kube-system
    Usuario stackdriver-service-account-key knative-serving

    Registros de auditoría

    Clúster Secret Espacio de nombres
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Administrador kube-apiserver CLUSTER_NAME

    Stackdriver

    Clúster Secret Espacio de nombres
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Usuario google-cloud-credentials kube-system
    Usuario stackdriver-service-account-key knative-serving
  3. Crea una copia de seguridad de cada secreto con el siguiente comando:

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

    Haz los cambios siguientes:

    • NAMESPACE: el espacio de nombres en el que se encuentra el secreto. Por ejemplo, kube-system.
    • KUBECONFIG: la ruta al archivo kubeconfig del clúster de administrador o de usuario.
    • SECRET: el nombre del secreto. Por ejemplo, admin-cluster-creds.

    Por ejemplo, ejecuta los siguientes comandos para la cuenta del servicio de registro de auditoría:

    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 crear un archivo de clave de cuenta de servicio, ejecuta el siguiente comando:

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

    Haz los cambios siguientes:

    • NEW_KEY_FILE: el nombre del nuevo archivo de clave de cuenta de servicio
    • IAM_ACCOUNT: la dirección de correo de la cuenta de servicio
  5. En el archivo de configuración del clúster de administrador, busca el campo componentAccessServiceAccountKeyPath, la sección gkeConnect, la sección stackdriver y la sección cloudAuditLogging. En esos lugares, sustituye las rutas a los archivos de clave de cuenta de servicio.

  6. En el archivo de configuración del clúster de usuarios, busca el campo componentAccessServiceAccountKeyPath, la sección gkeConnect, la sección stackdriver y la sección cloudAudigLogging. En esos lugares, sustituye las rutas a los archivos de clave de cuenta de servicio.

  7. Para guardar los cambios que has hecho, ejecuta los siguientes comandos:

    Puedes rotar las claves de un componente a la vez o rotar todas las claves a la vez configurando el componente en 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
    

    Sustituye lo siguiente:

    • COMPONENT: una de las siguientes opciones:

      • componentaccess
      • register
      • cloudauditlogging
      • stackdriver
      • sakeys (rota todas las claves de los componentes)
    • ADMIN_CLUSTER_KUBECONFIG: la ruta al archivo kubeconfig del clúster de administrador.

    • ADMIN_CLUSTER_CONFIG: la ruta al archivo de configuración del clúster de administrador.

    • USER_CLUSTER_CONFIG: la ruta al archivo de configuración del clúster de usuarios.

Nueva creación de nodos

Algunas rotaciones de claves de cuentas de servicio pueden tardar más tiempo porque es necesario volver a crear el nodo:

Cuenta de servicio Es necesario volver a crear los nodos
Acceso a componentes Si usas Artifact Registry: Sí
Si usas un registro privado: No
Registros de auditoría Clúster de administrador: sí, pero solo los nodos del plano de control
Clúster de usuarios con kubeception: no
Clúster de usuarios con Controlplane V2: sí, pero solo los nodos del plano de control
Logging-monitoring No
Connect-register No

En el caso de una rotación de claves que requiera que se vuelvan a crear los nodos, estos se sustituyen mediante un proceso de actualización gradual, es decir, se vuelven a crear uno a uno.

El posible tiempo de inactividad durante una rotación de claves es similar al tiempo de inactividad de una actualización de clúster. Para obtener más información, consulta Tiempo de inactividad durante las actualizaciones.

Restaurar copias de seguridad

Si necesitas restaurar las copias de seguridad de los secretos que has creado anteriormente, ejecuta el siguiente comando:

kubectl apply -f backup/

Diferencias avanzadas entre clústeres para rotar claves de cuentas de servicio

El comando gkectl update credentials solo se admite parcialmente en clústeres avanzados. En la siguiente tabla se muestran las variaciones de comandos que se admiten y las que no:

Comando Descripción Asistencia
gkectl update credentials certificate-authorities rotate Rota las autoridades de certificación. Compatible
gkectl update credentials certificate-authorities status Vista previa: consulta el estado de rotación de las autoridades de certificación. Compatible
gkectl update credentials certificate-authorities update-kubeconfig Descarga un archivo kubeconfig con el certificado de cliente más reciente. Compatible
gkectl update credentials cloudauditlogging Actualiza las credenciales de los registros de auditoría de Cloud. No admitida
gkectl update credentials componentaccess Actualiza las credenciales de la clave de la cuenta de servicio de acceso a componentes de los clústeres creados con Google Distributed Cloud para VMware. Compatible
gkectl update credentials f5bigip Actualiza las credenciales del balanceador de carga F5 BIG-IP. No es necesario
gkectl update credentials ksa-signing-key rotate Rota la clave de firma del token de la cuenta de servicio de Kubernetes (KSA). No admitida
gkectl update credentials ksa-signing-key status Consulta el estado de un cambio de clave de firma de token de KSA en curso. No admitida
gkectl update credentials Actualiza las credenciales del clúster. Compatible
gkectl update credentials privateregistry Actualiza las credenciales de registro privado de un clúster. Compatible
gkectl update credentials register Actualiza las credenciales de la clave de cuenta de servicio de registro. Compatible
gkectl update credentials sakeys Actualiza las credenciales de las claves de cuenta de servicio de un clúster. Compatible
gkectl update credentials stackdriver (Vista previa) Actualización Credenciales de Google Cloud Observability. Compatible
gkectl update credentials vsphere Actualiza las credenciales de vSphere de un clúster. Compatible

Para ver una lista completa de las funciones y las capacidades de Google Distributed Cloud para VMware que se admiten o no en los clústeres avanzados, consulta Diferencias al ejecutar clústeres avanzados.