Rotar las claves de firma de KSA

Una cuenta de servicio de Kubernetes (KSA) proporciona una identidad a los procesos que se ejecutan en un pod.

Las cuentas de servicio de Kubernetes son diferentes de las Google Cloud cuentas de servicio que usan las aplicaciones para hacer llamadas autorizadas a las APIs de Google Cloud .

Google Distributed Cloud usa una clave criptográfica privada para firmar los tokens de KSA que emite a los pods. Usa la clave pública correspondiente para validar los tokens cuando los pods envían solicitudes al servidor de la API de Kubernetes. Cuando un pod usa Workload Identity para llamar a las APIs de Google Cloud , Google Cloud usa la misma clave pública para autenticar la identidad del pod.

Durante la creación del clúster de usuarios, Google Distributed Cloud genera las claves privada y pública. Además, durante la creación del clúster, Google Distributed Cloud registra el clúster en una flota y proporciona la clave pública a Google Cloud.

Más adelante, puedes rotar el par de claves privada y pública. La rotación emite automáticamente nuevos tokens firmados con la nueva clave privada. Al final de la rotación, el clúster tendrá una nueva clave privada, una nueva clave pública y tokens actualizados. Además,Google Cloud tiene la nueva clave pública.

Tokens vinculados y tokens antiguos

Un pod puede usar un token antiguo o un token enlazado para la autenticación y la autorización cuando llama al servidor de la API de Kubernetes. Los tokens vinculados tienen un tiempo de vida limitado y se distribuyen a los pods mediante volúmenes proyectados. Los tokens antiguos nunca caducan y se almacenan en Secrets de Kubernetes. Recomendamos usar tokens vinculados porque son más seguros.

Tanto los tokens vinculados como los antiguos se actualizan durante la rotación de claves.

Limitaciones

Iniciar una rotación de claves

Antes de iniciar una rotación de claves, ten en cuenta lo siguiente:

  • Durante un cambio de clave, no puedes iniciar otro cambio de clave, cambio de autoridad de certificación ni actualización de clúster.

  • La rotación de claves no se puede pausar ni revertir. Se eliminan todas las llaves antiguas.

  • La rotación de claves elimina los nodos de clústeres y crea nodos nuevos.

Para iniciar una rotación de claves, sigue estos pasos:

gkectl update credentials ksa-signing-key rotate \
    --config USER_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONIFG \
    [--skip-prompt]

Haz los cambios siguientes:

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

  • ADMIN_KUBECONFIG_FILE: ruta del archivo kubeconfig del clúster de administrador

Incluye --skip-prompt si no quieres que se te pida.

Ver el estado de una rotación de claves

Para ver el estado de una rotación de claves, sigue estos pasos:

gkectl update credentials ksa-signing-key status \
    --config USER_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONIFG

Si la rotación de claves ya se ha completado, verás un mensaje similar a este:

State of KSASigningKeyRotation with KSASigningKeyVersion 2 is -
status: True,
reason: KSASigningKeyRotationCompleted,
message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[2]}

Si la rotación de la clave de firma de KSA aún está en curso, verás un mensaje similar a este:

State of KSASigningKeyRotation with KSASigningKeyVersion 2 is -
status: False,
reason: KSASigningKeyRotationProcessedReason,
message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[1,2]}