Rota claves de cuenta de servicio

En esta página, se describe cómo rotar claves para 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 los secretos actuales:

    mkdir backup
  2. Ten en cuenta la siguiente información para la cuenta de servicio relevante:

    Acceso a los 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 Secret private-registry-creds contiene la clave para tu cuenta de servicio de acceso a los componentes.
    • Si usas un registro privado, el Secret private-registry-creds contiene las credenciales de tu registro privado, no la clave de la cuenta de servicio de acceso a los componentes.

    Registro de Connect

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

    Registro y supervisión

    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

    Medición de uso

    Clúster Secret Espacio de nombres
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Usuario usage-metering-bigquery-service-account-key kube-system

    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

    Reemplaza lo siguiente:

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

    Por ejemplo, ejecuta los siguientes comandos para la cuenta de 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 nuevo archivo de claves de cuenta de servicio, ejecuta el siguiente comando:

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

    Reemplaza lo siguiente:

    • NEW_KEY_FILE: es el nombre del archivo de claves de tu cuenta de servicio nueva.
    • IAM_ACCOUNT: La dirección de correo electrónico de la cuenta de servicio
  5. En el archivo de configuración del clúster de administrador, busca el campo componentAccessServiceAccountKeyPath y las secciones gkeConnect, stackdriver y cloudAuditLogging. En esos lugares, reemplaza las rutas de acceso a los archivos de claves de la cuenta de servicio.

  6. En el archivo de configuración del clúster de usuario, busca el campo componentAccessServiceAccountKeyPath y las secciones gkeConnect, stackdriver, cloudAudigLogging y usageMetering. En esos lugares, reemplaza las rutas de acceso a los archivos de claves de la cuenta de servicio.

  7. Ejecuta los siguientes comandos para guardar los cambios que hiciste. Puedes rotar las teclas de un componente a la vez o rotar todas las teclas a la vez si configuras el componente como 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
    

    Reemplaza lo siguiente:

    • COMPONENT: Uno de los siguientes:

      • componentaccess
      • register
      • cloudauditlogging
      • usagemetering
      • stackdriver
      • sakeys (rota las claves de varios componentes)
    • ADMIN_CLUSTER_KUBECONFIG: la ruta al archivo kubeconfig para el clúster de administrador.

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

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

Recreación de nodos

Algunas rotaciones de claves de cuentas de servicio pueden tardar más tiempo porque se requiere la recreación de nodos:

Cuenta de servicio Requiere la recreación de nodos
Acceso a los componentes Si usas Container Registry: Sí
Si usas un registro privado: No
Registros de auditoría Clúster de administrador: Sí
Clúster de usuario con Controlplane V2 habilitado: Sí, pero solo los nodos del plano de control
Registro y supervisión No
Registro de Connect No
Medición de uso No

En el caso de una rotación de claves que requiere que se vuelvan a crear los nodos, estos se reemplazan en un proceso de actualización progresiva, es decir, se vuelven a crear uno por 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.

Restablecer las copias de seguridad

Si necesitas restablecer las copias de seguridad de los Secrets que creaste antes, ejecuta el siguiente comando:

kubectl apply -f backup/