Documentazione / Usare CloseYourIt
Segreti
Password, chiavi e file riservati in un posto solo, per progetto e ambiente, letti dall'app senza un .env sul disco.
Il Vault tiene in un posto solo password, chiavi, token e file riservati. Ogni valore è cifrato, appare sempre mascherato e può essere diverso per ogni ambiente (produzione, staging…). La tua applicazione lo legge con un comando, senza che tu lo copi a mano.
Dove va un segreto
Il Vault ha tre spazi. Prima di salvare, chiediti a chi serve il valore:
| Spazio | Per cosa | Chi lo vede |
|---|---|---|
| Secret personali | un valore che serve solo a te | solo tu |
| Secret di progetto | un valore che serve a un progetto solo | chi lavora sul progetto |
| Secret dell'organizzazione | un valore che serve a più progetti | solo i progetti a cui lo deleghi |
Ogni spazio ha due schede: Variabili (coppie nome e valore) e File (per esempio un certificato o un file di configurazione, fino a 10 MB).
Salvare un segreto
- Apri Vault e scegli lo spazio giusto.
- Aggiungi la variabile con il suo nome, poi scrivi il valore per ogni ambiente in cui serve.
- Se è un secret dell'organizzazione, delegalo ai progetti che devono usarlo. Puoi revocarlo quando vuoi. Un secret di progetto è già pronto all'uso.
Nella tabella dei secret di progetto le righe sono chiuse: premi il lucchetto in fondo alla riga per cambiarla. Così non modifichi per sbaglio quello che stavi solo guardando.
Dal terminale fai lo stesso con cyi secrets set (progetto), cyi shared set (organizzazione) e cyi personal set (personali). Per caricarne molti insieme da un file .env o JSON c'è cyi secrets import. Vedi la CLI.
Usare i segreti nella tua app
Il comando avvia l'app con i segreti già dentro, come variabili d'ambiente. Non scrive niente sul disco:
cyi run -p acme-api -e production -- bundle exec rails server
Per i tuoi secret personali: cyi personal run -- <comando>.
Se ti serve davvero un file, cyi secrets download -p acme-api -e production --out .env lo scrive. Il valore di un solo segreto lo stampa cyi secrets get. In fondo a ogni pagina dei segreti trovi il comando già compilato.
Storico e ritorno indietro
Ogni cambio di valore crea una versione nuova. Apri la cronologia del segreto, guarda i valori precedenti e ripristina quello giusto.
Chi ha letto cosa
Ogni lettura resta registrata: quelle fatte dalla pagina e quelle fatte dal terminale. Lo stesso vale per modifiche, cancellazioni e sincronizzazioni.
- Per un progetto: scheda Registro accessi nei suoi segreti.
- Per tutta l'organizzazione: Vault → Storico, con filtri per azione, progetto e ambiente.
Anche un tentativo di leggere un ambiente che non ti spetta resta scritto, come Bloccato. Per essere avvisato di letture o tentativi, crea una regola con l'evento Segreto letto o Accesso a un segreto negato: vedi Avvisi.
Un valore diverso per una persona
A volte una persona ha bisogno di un valore suo: la sua copia del database, la sua casella di prova per le email. Con i Valori su misura lo cambi solo per lei.
- Apri il progetto, la scheda dei segreti, poi Valori su misura.
- Scegli la persona, l'ambiente e il nome esatto della variabile. La persona deve poter già leggere quei segreti.
- Scrivi il valore e salva. Da quel momento lo riceve quando scarica i segreti, senza fare niente.
- Quando non serve più, toglilo: la persona torna subito al valore normale.
Da sapere:
- Li assegna solo chi gestisce i segreti del progetto. Chi riceve il valore non può cambiarlo né toglierlo.
- L'elenco mostra a chi è stato dato cosa, mai il valore.
- Verso GitHub parte sempre il valore normale del progetto, mai quello su misura.
- Un valore su misura non apre un ambiente che la persona non può vedere.
Approvazione in due
Sugli ambienti che scegli tu, una modifica non parte subito: resta in attesa finché un'altra persona non la approva.
- Nelle impostazioni del progetto accendi Approvazione in due per i secret.
- Sull'ambiente da proteggere (per esempio produzione) accendi anche l'approvazione.
Da lì in poi chi cambia o cancella un segreto in quell'ambiente lascia una richiesta. La richiesta compare in Approvazioni a chi può deciderla. Chi l'ha fatta non può approvarla da solo. Dal terminale: cyi vault requests list, cyi vault requests approve <id> e cyi vault requests reject <id> --reason "…".
Sincronizzare con GitHub
Se il progetto ha un repository collegato con la GitHub App, i segreti del Vault finiscono negli ambienti (Environments) del repository. Le build li trovano già pronti.
- Con la sincronizzazione accesa, ogni modifica parte da sola.
- Per farla partire a mano: Sincronizza ora nella scheda GitHub del progetto, oppure
cyi secrets sync -p acme-api. - CloseYourIt toglie da GitHub solo i segreti che aveva messo lui. Quelli impostati a mano sul repository restano.
- Se la sincronizzazione fallisce, ricevi una notifica con il motivo.
Lo stesso valore in più progetti
Se due o più progetti tengono lo stesso valore, anche con nomi diversi, CloseYourIt te lo dice. Il confronto avviene senza che nessuno legga i valori.
- La proposta compare in Vault → Da sistemare e nei segreti dei progetti coinvolti.
- Aprila: vedi quali progetti hanno quel valore e con che nome.
- Scegli il nome che avrà nell'organizzazione. Ogni progetto può continuare a leggerlo col suo nome di oggi.
- Conferma. Il valore diventa un secret dell'organizzazione e ogni progetto lo riceve subito, senza cambiare il codice.
Senza la tua conferma non cambia niente. Se due progetti hanno lo stesso valore per caso, premi Non proporre più.