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/env | Données de variables d’environnement |
nanocl.io/tls | Donné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_VALUE1Tls
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.