Launcher Prodotti Bitnami Documentazioneimaxe CLI Blog Contatti
imaxe secrets segreti v1.0.0

Segreti locali, sicuri per impostazione predefinita

Genera, legge e ruota i segreti dell'istanza (password, passphrase, chiavi) con un CSPRNG e permessi 0600. Idempotente su AMI in serie: generate crea il segreto solo se non esiste, e get dà un output pulito per la pipe.

$ imaxe secrets generate mariadb --len 32 --format password
Versione
v1.0.0
Sottocomandi
4
Config
/etc/imaxe/secrets.yml
Richiede root
Permessi
0600

Cosa fa questo modulo #

Quasi ogni servizio della tua istanza ha bisogno di un segreto: la password del database, la passphrase di uno strumento di integrità, una chiave di API… Conservarli a mano —o peggio, lasciarli con i valori predefiniti— è uno dei modi più comuni perché una macchina finisca compromessa.

Il modulo secrets si occupa di questo ciclo di vita in locale: genera ogni segreto con un generatore crittograficamente sicuro (CSPRNG), lo salva con permessi 0600 (solo root può leggerlo), lo restituisce con un output pulito pronto per essere concatenato in una pipe, e lo ruota quando ti serve. Tutto è organizzato per domini (per esempio mariadb o tripwire), e ogni dominio può avere diversi campi.

Sicuro per impostazione predefinita su AMI in serie

generate è idempotente: se il segreto di un dominio esiste già, non lo tocca. Così una stessa immagine può creare i suoi segreti al primo avvio di ogni istanza senza che due macchine condividano la stessa password. I valori non vengono mai registrati né mostrati in list.

Guida rapidaoperazioni passo passo

Operazioni comuni #

Scegli cosa vuoi fare. Ogni ricetta porta il comando già scritto — cambia solo il dominio con il tuo e premi Copia.

1

Generare il segreto di un servizio

Crea una password forte per un dominio, solo se ancora non esiste.

Connettiti via SSH al tuo server con l'utente ubuntu.

Genera il segreto del dominio mariadb. Essendo idempotente, puoi lanciarlo tutte le volte che vuoi senza timore di sovrascrivere:

terminal
$ sudo imaxe secrets generate mariadb

Ti serve una passphrase lunga per un altro strumento e in un campo specifico? Regola --format, --len e --field:

terminal
$ sudo imaxe secrets generate tripwire --field local.passphrase --format passphrase --len 40
Il segreto resta salvato con permessi 0600. Se esisteva già, non è stato cambiato — il comando termina comunque con successo.
2

Leggere un segreto per usarlo

Ottieni il valore grezzo, pronto per essere concatenato in un altro comando.

get stampa unicamente il valore, senza fronzoli né interruzioni extra, così puoi passarlo a un altro processo tramite pipe:

terminal
$ sudo imaxe secrets get mariadb

Il segreto è in un campo specifico del dominio? Indicalo con --field:

terminal
$ sudo imaxe secrets get tripwire --field local.passphrase
L'output è pulito: puoi fare PASS="$(sudo imaxe secrets get mariadb)" e usarlo direttamente nel tuo script.
3

Ruotare un segreto

Sostituisci il valore con uno nuovo e segna il dominio come ruotato.

Genera un valore nuovo per il dominio. A differenza di generate, rotate sostituisce il segreto esistente:

terminal
$ sudo imaxe secrets rotate mariadb
Il dominio resta segnato come ruotato (vedrai la data in list). Ricordati di aggiornare il servizio che usa quel segreto con il nuovo valore di get.
4

Vedere quali domini esistono

Consulta i metadati senza esporre alcun valore.

Elenca i domini con i loro metadati (quando sono stati creati e quando sono stati ruotati). Non mostra mai il segreto in sé:

terminal
$ sudo imaxe secrets list

Ti serve per uno script o un controllo automatico? Richiedi l'output in JSON:

terminal
$ sudo imaxe secrets list --json
Vedi a colpo d'occhio quali segreti gestisce l'istanza e quali conviene ruotare, senza trapelare alcun valore sullo schermo né nel log.
Attento a dove finisce il valore

Il segreto è leggibile solo da root mentre vive su disco. Non appena lo leggi con get passa al tuo terminale e alla tua shell: evita di lasciarlo nella cronologia (history), in variabili d'ambiente esportate di troppo o nei log. Preferisci sostituzioni di comando puntuali come "$(sudo imaxe secrets get mariadb)".

Riferimento CLIcomandi, flag e file

Sinossi #

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

Tutti i sottocomandi richiedono privilegi di root (usa sudo) perché leggono e scrivono file 0600 sotto /etc/imaxe/. Aggiungi --json a list per ottenere output leggibile dalla macchina, adatto allo scripting. Ricorda: get emette il valore grezzo, senza decorazioni, pronto per la pipe.

Sottocomandi #

SottocomandoCosa faFlag rilevanti
generateCrea il segreto di un dominio se non esiste (idempotente, CSPRNG). Senza dominio, genera quelli di generate_on_first_boot.--len, --format, --field
getRestituisce il valore di un segreto con output pulito, adatto alla pipe.--field
rotateGenera un segreto nuovo e segna il dominio come ruotato.--field
listElenca i domini e i metadati (creato, ruotato). Non mostra mai i valori.--json

Argomenti e flag #

FlagTipoPredefinitoDescrizione
<dominio>stringDominio del segreto (ad es. mariadb, tripwire). Obbligatorio in get e rotate. In generate, vuoto = i domini di generate_on_first_boot.
--fieldstringvalueCampo all'interno del dominio. Permette di salvare più segreti per dominio (ad es. local.passphrase).
--lenint32In generate: lunghezza del segreto in caratteri.
--formatenumpasswordIn generate: formato del valore — password, passphrase o hex.
--jsonboolfalseIn list, emette i metadati come JSON strutturato in stdout.

File e percorsi #

PercorsoContenuto
/etc/imaxe/secrets.ymlConfigurazione del modulo: valori predefiniti (length, format), domini ed elenco di generate_on_first_boot. Viene salvato con permessi 0600.

Esempio di secrets.yml:

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

Con quella configurazione, un sudo imaxe secrets generate senza dominio al primo avvio crea i segreti di mariadb e tripwire con la lunghezza e il formato predefiniti.

Codici di uscita e log #

Ogni esecuzione restituisce un codice che puoi verificare con echo $? — utile per concatenare negli script:

0OKOperazione completata (incluso il caso idempotente senza modifiche).
1ERRErrore generico non classificato. Controlla i permessi e il file di config.
2USAGEArgomenti non validi o mancanti (ad es. get senza dominio).
3NOTFOUNDIl dominio o campo richiesto non esiste.

Uso tipico in uno script, sfruttando l'output pulito di get:

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

Risoluzione dei problemi #

SintomoCausa probabileSoluzione
Esce NOTFOUND (codice 3)Il dominio o il --field non è ancora stato generato.Crealo prima con secrets generate <dominio> (e lo stesso --field).
Esce USAGE (codice 2)get o rotate lanciati senza indicare il dominio.Passa il dominio come argomento; è obbligatorio in quei sottocomandi.
generate non cambia il valoreIl segreto esisteva già: generate è idempotente per design.Se vuoi un valore nuovo, usa secrets rotate <dominio>.
Permission denied in letturaIl file è 0600 e lo hai lanciato senza privilegi.Esegui il comando con sudo; solo root accede al segreto.

Bloccato con il modulo Segreti?

Scrivici allegando l'output di «imaxe <module> status --json» e ti rispondiamo in fretta.

Contatta il supporto