Skip to Content

Secret

Un Secret contient une petite quantité de données sensibles, comme un mot de passe, un jeton ou une clé.
Ces informations pourraient autrement figurer dans une spécification Cargo.
Un Secret évite d’inclure les données confidentielles dans le code de l’application.

Les Secrets pouvant être créés indépendamment des Cargoes qui les utilisent, le risque d’exposition de leurs données est réduit lors de la création, consultation et modification des Cargoes.
Nanocl et les applications du cluster peuvent aussi prendre des précautions supplémentaires avec les Secrets, par exemple éviter d’écrire leurs données sur un stockage non volatil.

Par défaut, les Secrets Nanocl sont stockés sans chiffrement dans le stockage sous-jacent du serveur API (cockroachdb).
Toute personne disposant d’un accès API ou à cockroachdb peut récupérer ou modifier un Secret. Toute personne autorisée à créer un Cargo peut également lire n’importe quel Secret, y compris indirectement, par exemple en créant un déploiement.

Pour utiliser les Secrets en sécurité, prenez au minimum ces mesures :

  • Activez le chiffrement au repos des Secrets.
  • Envisagez des fournisseurs externes de stockage de Secret.

Utilisations des Secrets

Vous pouvez notamment utiliser les Secrets pour :

  • Définir les variables d’environnement d’un Cargo.
  • Stocker vos certificats TLS.

Le démon Nanocl utilise aussi des Secrets ; les jetons d’amorçage, par exemple, facilitent l’automatisation de l’enregistrement des nœuds.

Types de secrets

Lors de la création d’un Secret, indiquez son Kind dans le champ type de la ressource.
Le type facilite le traitement programmatique des données du Secret.

Nanocl propose plusieurs types intégrés pour les usages courants.
Ils diffèrent par les validations et les contraintes imposées par Nanocl.

Définissez votre propre type de Secret en attribuant votre chaîne à la valeur Kind de l’objet.

Nanocl n’impose aucune contrainte sur le nom du type. Pour un type intégré, vous devez cependant respecter toutes ses exigences.

Kind intégréUsage
nanocl.io/envDonnées de variables d’environnement
nanocl.io/tlsDonnées pour un client ou serveur TLS

Env

Les secrets de Kind Env sont des variables d’environnement pouvant être liées aux Cargoes.
Créez-les avec le Statefile suivant :

ApiVersion: v0.18 Secrets: - Name: env.super-secret Kind: nanocl.io/env Data: - MY_ENV=MY_VALUE - MY_ENV1=MY_VALUE1

Tls

Les secrets de Kind Tls sont des certificats pouvant être liés aux ProxyRules.
Créez-les avec le Statefile suivant :

ApiVersion: v0.18 Secrets: - Name: cert.my-certificate Kind: nanocl.io/tls Data: Certificate: | -----BEGIN CERTIFICATE----- MIIDETCCAfkCFFOJVQs8PxWlcJQDn... CertificateKey: | -----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0B...

Voici la spécification complète du Kind Tls :

Certificate
required
string

Contenu du certificat lorsqu’il est stocké dans un secret TLS.

CertificateClient
string or null

Contenu du certificat d’autorité lorsqu’il est stocké dans un secret TLS.

CertificateKey
required
string

Contenu de la clé privée lorsqu’elle est stockée dans un secret TLS.

Dhparam
string or null

Contenu des paramètres DH lorsqu’ils sont stockés dans un secret TLS.

VerifyClient
boolean or null

Activer ou désactiver la vérification des clients.

Un Tls Secret nécessite le contenu des fichiers plutôt que leur chemin.

Dernière mise à jour le