Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

k3s secrets-encrypt

K3s prend en charge l’activation du chiffrement des secrets au repos. Pour plus d’informations, voir Chiffrement des Secrets.

Outil de Chiffrement des Secrets

Version Gate

Disponible à partir de v1.21.8+k3s1

K3s contient un outil CLI secrets-encrypt, qui permet un contrôle automatique sur les éléments suivants :

  • Désactivation/Activation du chiffrement des secrets

  • Ajout de nouvelles clés de chiffrement

  • Rotation et suppression des clés de chiffrement

  • Rechiffrement des secrets

Le non-respect de la procédure appropriée pour la rotation des clés de chiffrement peut laisser votre cluster définitivement corrompu. Procédez avec prudence.

Rotation des Clés de Chiffrement

Version Gate

Disponible à partir des versions de septembre 2024 : v1.30.5+k3s1, v1.31.1+k3s1.

  • Serveur unique

  • Haute disponibilité

Pour faire tourner les clés de chiffrement des secrets sur un cluster à serveur unique :

  1. Démarrez le serveur K3s avec le drapeau --secrets-encryption

    Démarrer K3s sans chiffrement et l’activer ultérieurement n’est actuellement pas pris en charge.

  2. Faire tourner les clés de chiffrement des secrets

    k3s secrets-encrypt rotate-keys
  3. Attendre la fin du rechiffrement. Surveiller les journaux du serveur, ou attendre :

    $ k3s secrets-encrypt status
    Encryption Status: Enabled
    Current Rotation Stage: reencrypt_finished

Pour faire tourner les clés de chiffrement des secrets sur des configurations à haute disponibilité :

  1. Démarrer les trois serveurs K3s avec le drapeau --secrets-encryption. Pour des raisons de concision, les serveurs seront appelés S1, S2, S3.

    Démarrer K3s sans chiffrement et l’activer ultérieurement n’est actuellement pas pris en charge.

  2. Faire tourner les clés de chiffrement des secrets sur S1

    k3s secrets-encrypt rotate-keys
  3. Attendre la fin du rechiffrement. Surveiller les journaux du serveur, ou attendre :

    $ k3s secrets-encrypt status
    Encryption Status: Enabled
    Current Rotation Stage: reencrypt_finished

    K3s réencryptera environ 5 secrets par seconde. Les clusters avec un grand nombre de secrets peuvent prendre plusieurs minutes à réencrypter. Vous pouvez suivre les progrès dans les journaux du serveur.

  4. Redémarrer K3s sur S1 avec les mêmes arguments. Si K3s est exécuté en tant que service :

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  5. Une fois S1 opérationnel, redémarrer K3s sur S2 et S3

Rotation des clés de chiffrement héritées

Nouvelle procédure

Si vous utilisez les versions K3s v1.30+, nous recommandons d’utiliser la Rotation des clés de chiffrement à la place.

  • Serveur unique

  • Haute disponibilité

Pour faire tourner les clés de chiffrement des secrets sur un cluster à serveur unique :

  1. Démarrez le serveur K3s avec le drapeau --secrets-encryption

    Démarrer K3s sans chiffrement et l’activer ultérieurement n’est actuellement pas pris en charge.

  2. Préparer

    k3s secrets-encrypt prepare
  3. Tuer et redémarrer le serveur K3s avec les mêmes arguments. Si K3s est exécuté en tant que service :

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  4. Faire tourner

    k3s secrets-encrypt rotate
  5. Tuer et redémarrer le serveur K3s avec les mêmes arguments.

  6. Réencrypter

    K3s réencryptera environ 5 secrets par seconde.
    Les clusters avec un grand nombre de secrets peuvent prendre plusieurs minutes à réencrypter.

    k3s secrets-encrypt reencrypt

Les étapes sont les mêmes pour les clusters de base de données intégrés et externes.

Pour faire tourner les clés de chiffrement des secrets sur des configurations à haute disponibilité :

  1. Démarrez les trois serveurs K3s avec le drapeau --secrets-encryption. Pour des raisons de concision, les serveurs seront appelés S1, S2, S3.

    • Démarrer K3s sans chiffrement et l’activer ultérieurement n’est actuellement pas pris en charge.

    • Bien que cela ne soit pas obligatoire, il est recommandé de choisir un nœud serveur à partir duquel exécuter les commandes secrets-encrypt.

  2. Préparer sur S1

    k3s secrets-encrypt prepare
  3. Tuer et redémarrer S1 avec les mêmes arguments. Si K3s est exécuté en tant que service :

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  4. Une fois S1 opérationnel, tuer et redémarrer S2 et S3

  5. Faire tourner sur S1

    k3s secrets-encrypt rotate
  6. Tuer et redémarrer S1 avec les mêmes arguments

  7. Une fois S1 opérationnel, tuer et redémarrer S2 et S3

  8. Réencrypter sur S1

    K3s réencryptera environ 5 secrets par seconde.
    Les clusters avec un grand nombre de secrets peuvent prendre plusieurs minutes à réencrypter.

    k3s secrets-encrypt reencrypt
  9. Tuer et redémarrer S1 avec les mêmes arguments

  10. Une fois S1 opérationnel, tuer et redémarrer S2 et S3

Désactiver/Réactiver le chiffrement des secrets

  • Serveur unique

  • Haute disponibilité

Après avoir lancé un serveur avec le drapeau --secrets-encryption, le chiffrement des secrets peut être désactivé.

Pour désactiver le chiffrement des secrets sur un cluster à nœud unique :

  1. Désactiver

    k3s secrets-encrypt disable
  2. Tuer et redémarrer le serveur K3s avec les mêmes arguments. Si K3s est exécuté en tant que service :

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  3. Réencrypter avec des drapeaux

    k3s secrets-encrypt reencrypt --force --skip

Pour réactiver le chiffrement des secrets sur un cluster à nœud unique :

  1. Activer

    k3s secrets-encrypt enable
  2. Tuer et redémarrer le serveur K3s avec les mêmes arguments.

  3. Réencrypter avec des drapeaux

    k3s secrets-encrypt reencrypt --force --skip

Après avoir lancé un cluster HA avec les drapeaux --secrets-encryption, le chiffrement des secrets peut être désactivé.

Bien que cela ne soit pas obligatoire, il est recommandé de choisir un nœud serveur à partir duquel exécuter les commandes secrets-encrypt.

Pour des raisons de concision, les trois serveurs utilisés dans ce guide seront appelés S1, S2, S3.

Pour désactiver le chiffrement des secrets sur un cluster HA :

  1. Désactiver sur S1

    k3s secrets-encrypt disable
  2. Tuer et redémarrer S1 avec les mêmes arguments. Si K3s est exécuté en tant que service :

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  3. Une fois S1 opérationnel, tuer et redémarrer S2 et S3

  4. Réencrypter avec des drapeaux sur S1

    k3s secrets-encrypt reencrypt --force --skip

Pour réactiver le chiffrement des secrets sur un cluster HA :

  1. Activer sur S1

    k3s secrets-encrypt enable
  2. Tuer et redémarrer S1 avec les mêmes arguments

  3. Une fois S1 opérationnel, tuer et redémarrer S2 et S3

  4. Réencrypter avec des drapeaux sur S1

    k3s secrets-encrypt reencrypt --force --skip

État du chiffrement des secrets

L’outil secrets-encrypt comprend une commande status qui affiche des informations sur l’état actuel du chiffrement des secrets sur le nœud.

Un exemple de la commande sur un nœud à serveur unique :

$ k3s secrets-encrypt status
Encryption Status: Enabled
Current Rotation Stage: start
Server Encryption Hashes: All hashes match

Active  Key Type  Name
------  --------  ----
 *      AES-CBC   aescbckey

Un autre exemple sur un cluster HA, après avoir fait tourner les clés, mais avant de redémarrer les serveurs :

$ k3s secrets-encrypt status
Encryption Status: Enabled
Current Rotation Stage: rotate
Server Encryption Hashes: hash does not match between node-1 and node-2

Active  Key Type  Name
------  --------  ----
 *      AES-CBC   aescbckey-2021-12-10T22:54:38Z
        AES-CBC   aescbckey

Les détails de chaque section sont les suivants :

  • État du chiffrement : Affiche si le chiffrement des secrets est désactivé ou activé sur le nœud

  • Étape de rotation actuelle : Indique l’étape de rotation actuelle sur le nœud.
    Les étapes sont : start, prepare, rotate, reencrypt_request, reencrypt_active, reencrypt_finished

  • Hachages de chiffrement des serveurs : Utile pour les clusters HA, cela indique si tous les serveurs sont au même stade avec leurs fichiers locaux. Cela peut être utilisé pour identifier si un redémarrage des serveurs est nécessaire avant de passer à l’étape suivante. Dans l’exemple HA ci-dessus, le nœud-1 et le nœud-2 ont des hachages différents, indiquant qu’ils n’ont actuellement pas la même configuration de chiffrement. Le redémarrage des serveurs synchronisera leur configuration.

  • Table des clés : Résume les informations sur les clés de chiffrement des secrets trouvées sur le nœud.

    • Actif : Le "*" indique lesquelles, le cas échéant, des clés sont actuellement utilisées pour le chiffrement des secrets. Une clé active est utilisée par Kubernetes pour chiffrer tous les nouveaux secrets.

    • Type de clé : Toutes les clés utilisant cet outil sont de type AES-CBC. Voir plus d’informations ici.

    • Nom : Nom de la clé de chiffrement.