Lanceur Produits Bitnami Documentationimaxe CLI Blog Contact
imaxe secrets secrets v1.0.0

Des secrets locaux, sécurisés par défaut

Génère, lit et fait tourner les secrets de l'instance (mots de passe, phrases secrètes, clés) avec un CSPRNG et des permissions 0600. Idempotent sur les AMI en série : generate ne crée le secret que s'il n'existe pas, et get renvoie une sortie propre pour le pipe.

$ imaxe secrets generate mariadb --len 32 --format password
Version
v1.0.0
Sous-commandes
4
Config
/etc/imaxe/secrets.yml
Nécessite root
oui
Permissions
0600

Ce que fait ce module #

Presque chaque service de votre instance a besoin d'un secret : le mot de passe de la base de données, la phrase secrète d'un outil d'intégrité, une clé d'API… Les conserver à la main — ou pire, les laisser par défaut — est l'une des façons les plus courantes pour une machine de finir compromise.

Le module secrets prend en charge ce cycle de vie en local : il génère chaque secret avec un générateur cryptographiquement sûr (CSPRNG), le stocke avec des permissions 0600 (seul root peut le lire), le renvoie avec une sortie propre prête à enchaîner dans un pipe, et le fait tourner quand vous en avez besoin. Tout s'organise par domaines (par exemple mariadb ou tripwire), et chaque domaine peut comporter plusieurs champs.

Sécurisé par défaut sur les AMI en série

generate est idempotent : si le secret d'un domaine existe déjà, il n'y touche pas. Ainsi, une même image peut créer ses secrets au premier démarrage de chaque instance sans que deux machines partagent le même mot de passe. Les valeurs ne sont jamais journalisées ni affichées dans list.

Guide rapidetâches pas à pas

Tâches courantes #

Choisissez ce que vous voulez faire. Chaque recette fournit la commande déjà écrite — il suffit de remplacer le domaine par le vôtre et de cliquer sur Copier.

1

Générer le secret d'un service

Crée un mot de passe fort pour un domaine, uniquement s'il n'existe pas encore.

Connectez-vous en SSH à votre serveur avec l'utilisateur ubuntu.

Générez le secret du domaine mariadb. Comme la commande est idempotente, vous pouvez la lancer autant de fois que vous voulez sans crainte d'écraser quoi que ce soit :

terminal
$ sudo imaxe secrets generate mariadb

Besoin d'une phrase secrète longue pour un autre outil et dans un champ précis ? Ajustez --format, --len et --field :

terminal
$ sudo imaxe secrets generate tripwire --field local.passphrase --format passphrase --len 40
Le secret est stocké avec des permissions 0600. S'il existait déjà, il n'a pas été modifié — la commande se termine tout de même avec succès.
2

Lire un secret pour l'utiliser

Obtenez la valeur brute, prête à enchaîner dans une autre commande.

get n'affiche que la valeur, sans fioritures ni sauts de ligne superflus, pour que vous puissiez la transmettre à un autre processus par pipe :

terminal
$ sudo imaxe secrets get mariadb

Le secret se trouve dans un champ précis du domaine ? Indiquez-le avec --field :

terminal
$ sudo imaxe secrets get tripwire --field local.passphrase
La sortie est propre : vous pouvez faire PASS="$(sudo imaxe secrets get mariadb)" et l'utiliser directement dans votre script.
3

Faire tourner un secret

Remplace la valeur par une nouvelle et marque le domaine comme ayant été renouvelé.

Générez une nouvelle valeur pour le domaine. Contrairement à generate, rotate remplace bel et bien le secret existant :

terminal
$ sudo imaxe secrets rotate mariadb
Le domaine est marqué comme renouvelé (vous verrez la date dans list). Pensez à mettre à jour le service qui utilise ce secret avec la nouvelle valeur de get.
4

Voir quels domaines existent

Consultez les métadonnées sans exposer aucune valeur.

Liste les domaines avec leurs métadonnées (date de création et date de renouvellement). N'affiche jamais le secret lui-même :

terminal
$ sudo imaxe secrets list

Vous en avez besoin pour un script ou une vérification automatique ? Demandez la sortie en JSON :

terminal
$ sudo imaxe secrets list --json
Vous voyez d'un coup d'œil quels secrets l'instance gère et lesquels il convient de renouveler, sans faire fuir aucune valeur à l'écran ni dans le log.
Attention à l'endroit où finit la valeur

Le secret n'est lisible que par root tant qu'il réside sur le disque. Dès que vous le lisez avec get, il passe dans votre terminal et votre shell : évitez de le laisser dans l'historique (history), dans des variables d'environnement exportées de trop ou dans des logs. Préférez des substitutions de commande ponctuelles comme "$(sudo imaxe secrets get mariadb)".

Référence CLIcommandes, flags et fichiers

Synopsis #

usage
imaxe secrets <subcomando> [<dominio>] [--field CLAVE] [flags]

Toutes les sous-commandes nécessitent les privilèges root (utilisez sudo) car elles lisent et écrivent des fichiers 0600 sous /etc/imaxe/. Ajoutez --json à list pour obtenir une sortie lisible par machine, adaptée au scripting. Rappelez-vous : get émet la valeur brute, sans décoration, prête pour le pipe.

Sous-commandes #

Sous-commandeRôleFlags pertinents
generateCrée le secret d'un domaine s'il n'existe pas (idempotent, CSPRNG). Sans domaine, génère ceux de generate_on_first_boot.--len, --format, --field
getRenvoie la valeur d'un secret avec une sortie propre, adaptée au pipe.--field
rotateGénère un nouveau secret et marque le domaine comme renouvelé.--field
listListe les domaines et leurs métadonnées (créé, renouvelé). N'affiche jamais les valeurs.--json

Arguments et flags #

FlagTypePar défautDescription
<dominio>stringDomaine du secret (p. ex. mariadb, tripwire). Obligatoire pour get et rotate. Pour generate, vide = les domaines de generate_on_first_boot.
--fieldstringvalueChamp au sein du domaine. Permet de stocker plusieurs secrets par domaine (p. ex. local.passphrase).
--lenint32Dans generate : longueur du secret en caractères.
--formatenumpasswordDans generate : format de la valeur — password, passphrase ou hex.
--jsonboolfalseDans list, émet les métadonnées sous forme de JSON structuré sur stdout.

Fichiers et chemins #

CheminContenu
/etc/imaxe/secrets.ymlConfiguration du module : valeurs par défaut (length, format), domaines et liste de generate_on_first_boot. Stocké avec des permissions 0600.

Exemple de secrets.yml :

/etc/imaxe/secrets.yml
defaults:
  length: 32
  format: password
domains: {}
generate_on_first_boot:
  - mariadb
  - tripwire

Avec cette configuration, un sudo imaxe secrets generate sans domaine au premier démarrage crée les secrets de mariadb et tripwire avec la longueur et le format par défaut.

Codes de sortie et logs #

Chaque exécution renvoie un code que vous pouvez vérifier avec echo $? — utile pour enchaîner dans des scripts :

0OKOpération terminée (inclut le cas idempotent sans changement).
1ERRErreur générique non classée. Vérifiez les permissions et le fichier de config.
2USAGEArguments invalides ou manquants (p. ex. get sans domaine).
3NOTFOUNDLe domaine ou le champ demandé n'existe pas.

Usage typique dans un script, en tirant parti de la sortie propre de get :

terminal
$ sudo imaxe secrets generate mariadb \
  && sudo imaxe secrets get mariadb | some-tool --stdin-password \
  || echo "falló con código $?"

Résolution des problèmes #

SymptômeCause probableSolution
Renvoie NOTFOUND (code 3)Le domaine ou le --field n'a pas encore été généré.Créez-le d'abord avec secrets generate <dominio> (et le même --field).
Renvoie USAGE (code 2)get ou rotate lancés sans indiquer le domaine.Passez le domaine en argument ; il est obligatoire pour ces sous-commandes.
generate ne change pas la valeurLe secret existait déjà : generate est idempotent par conception.Si vous voulez une nouvelle valeur, utilisez secrets rotate <dominio>.
Permission denied à la lectureLe fichier est 0600 et vous l'avez lancé sans privilèges.Exécutez la commande avec sudo ; seul root accède au secret.

Bloqué sur le module Secrets ?

Écrivez-nous avec la sortie de « imaxe <module> status --json » et nous vous répondons rapidement.

Contacter le support