Effectuer une rotation des clés de signature KSA

Un compte de service Kubernetes (KSA) fournit une identité aux processus qui s'exécutent dans un pod.

Les comptes de service Kubernetes sont différents des comptes de service Google Cloud que les applications utilisent pour effectuer des appels autorisés aux API Google Cloud.

Google Distributed Cloud utilise une clé cryptographique privée pour signer les jetons KSA qu'il émet aux pods. Il utilise la clé publique correspondante pour valider les jetons lorsque les pods envoient des requêtes au serveur d'API Kubernetes. Lorsqu'un pod utilise Workload Identity pour appeler les API Google Cloud, Google Cloud utilise la même clé publique pour authentifier l'identité du pod.

Lors de la création du cluster d'utilisateur, Google Distributed Cloud génère les clés privées et publiques. Toujours lors de la création du cluster, Google Distributed Cloud enregistre le cluster dans un parc et fournit la clé publique à Google Cloud.

Par la suite, vous pourrez alterner la paire de clés privée/publique. La rotation émet automatiquement de nouveaux jetons signés par la nouvelle clé privée. À la fin de la rotation, le cluster dispose d'une nouvelle clé privée, d'une nouvelle clé publique et de jetons actualisés. Google Cloud dispose également de la nouvelle clé publique.

Jetons liés et anciens jetons

Un pod peut utiliser un jeton hérité ou un jeton lié pour l'authentification et l'autorisation lorsqu'il appelle le serveur d'API Kubernetes. Les jetons liés ont une durée de vie limitée et sont distribués aux pods à l'aide de volumes projetés. Les anciens jetons n'expirent jamais et sont conservés dans les secrets Kubernetes. Nous vous recommandons d'utiliser des jetons liés, car ils sont plus sécurisés.

Les jetons liés et les anciens jetons sont actualisés lors d'une rotation des clés.

Démarrer une rotation des clés

Avant de démarrer une rotation des clés, tenez compte des points suivants:

  • Lors d'une rotation des clés, vous ne pouvez pas démarrer une autre rotation des clés, une rotation de l'autorité de certification ou une mise à jour du cluster.

  • La rotation des clés ne peut pas être mise en veille ni annulée. Toutes les anciennes clés sont supprimées.

  • Une rotation des clés supprime les nœuds de cluster existants et crée des nœuds.

Pour démarrer une rotation des clés:

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

Remplacez les éléments suivants :

  • USER_CLUSTER_CONFIG: chemin d'accès au fichier de configuration du cluster d'utilisateur

  • ADMIN_KUBECONFIG_FILE: chemin d'accès au fichier kubeconfig du cluster d'administrateur

Incluez --skip-prompt si vous ne souhaitez pas y être invité.

Afficher l'état d'une rotation des clés

Pour afficher l'état d'une rotation des clés:

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

Si la rotation des clés est déjà terminée, un message semblable à celui-ci s'affiche:

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

Si la rotation des clés de signature KSA est toujours en cours, un message semblable à celui-ci s'affiche:

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