Un compte de service Kubernetes (KSA) fournit une identité aux processus exécutés dans un pod.
Les comptes de service Kubernetes sont différents des comptes de serviceGoogle 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 des API, Google Cloud utilise la même clé publique pour authentifier l'identité du pod. Google Cloud
Lors de la création d'un cluster utilisateur, Google Distributed Cloud génère les clés privées et publiques. Lors de la création du cluster, Google Distributed Cloud l'enregistre dans un parc et fournit la clé publique à Google Cloud.
Vous pourrez changer la paire de clés privée/publique ultérieurement. La rotation génère 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 jetons anciens
Un pod peut utiliser un jeton ancien 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 jetons anciens sont actualisés lors d'une rotation de clé.
Limites
- Si vous avez créé le cluster avec
enableAdvancedCluster
défini surtrue
(ce qui est nécessaire pour configurer des domaines de topologie), la rotation des clés n'est pas prise en charge.
Lancer une rotation de clé
Avant de commencer une rotation de clés, tenez compte des points suivants :
Pendant une rotation de clé, vous ne pouvez pas lancer une autre rotation de clé, de rotation de l'autorité de certification ou de mise à jour du cluster.
La rotation des clés ne peut pas être suspendue ni annulée. Toutes les anciennes clés sont supprimées.
La rotation de clés supprime les nœuds de cluster existants et crée de nouveaux nœuds.
Pour lancer une rotation de clé :
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 être invité à le faire.
Afficher l'état d'une rotation de clé
Pour afficher l'état d'une rotation de clé :
gkectl update credentials ksa-signing-key status \ --config USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONIFG
Si la rotation de clé est déjà terminée, un message de ce type s'affiche :
State of KSASigningKeyRotation with KSASigningKeyVersion 2 is - status: True, reason: KSASigningKeyRotationCompleted, message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[2]}
Si la rotation de la clé 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]}