Configuration du chiffrement des secrets

K3s prend en charge l’activation du chiffrement des secrets au repos. Lors du premier démarrage du serveur, passer le drapeau --secrets-encryption effectuera automatiquement les actions suivantes :

  • Générer une clé AES-CBC

  • Générer un fichier de configuration de chiffrement avec la clé générée

  • Passer la configuration à l’API Kube en tant que configuration du fournisseur de chiffrement

Le chiffrement des secrets ne peut pas être activé sur un serveur existant sans le redémarrer.
Utilisez curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s sh -s - server --secrets-encryption si vous installez à partir d’un script, ou d’autres méthodes décrites dans Options de configuration.

Choix du fournisseur de chiffrement

Verrou de version

Disponible à partir des versions d’avril 2025 : v1.30.12+k3s1, v1.31.8+k3s1, v1.32.4+k3s1, v1.33.0+k3s1.

En utilisant le drapeau --secrets-encryption-provider, vous pouvez choisir parmi les fournisseurs de chiffrement pris en charge par K3s :

  • aescbc : AES-CBC avec un remplissage PKCS#7. C’est le fournisseur de chiffrement par défaut.

  • secretbox : XSalsa20 et Poly1305

Migration des fournisseurs

Vous pouvez migrer du fournisseur de chiffrement aescbc au fournisseur de chiffrement secretbox en suivant ces étapes :

  1. Assurez-vous que le fournisseur de chiffrement secretbox est pris en charge par votre version de K3s.

  2. Mettez à jour/ajoutez le drapeau secrets-encryption-provider dans votre fichier de configuration K3s à secretbox.

  3. Faites tourner les clés de chiffrement, en suivant la section Rotation des clés de chiffrement ci-dessous.

Fichier de configuration de chiffrement généré

Lorsque vous démarrez le serveur avec --secrets-encryption, K3s générera un fichier de configuration de chiffrement à /var/lib/rancher/k3s/server/cred/encryption-config.json.

Voici un exemple du fichier de configuration de chiffrement généré avec le fournisseur par défaut aescbc :

{
  "kind": "EncryptionConfiguration",
  "apiVersion": "apiserver.config.k8s.io/v1",
  "resources": [
    {
      "resources": [
        "secrets"
      ],
      "providers": [
        {
          "aescbc": {
            "keys": [
              {
                "name": "aescbckey",
                "secret": "xxxxxxxxxxxxxxxxxxx"
              }
            ]
          }
        },
        {
          "identity": {}
        }
      ]
    }
  ]
}

Outil de chiffrement des secrets

K3s contient un outil utilitaire 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

  • Réchiffrement des secrets

Pour plus d’informations, consultez la documentation de la commande k3s secrets-encrypt.