Vai al contenuto
IntegratoServer e container

Servizi systemd che ricevono i segreti da Crunu

Esegui l’agente Crunu come servizio systemd in sandbox su Linux, avvia i tuoi servizi con crunu run o scrivi un file env per EnvironmentFile= con crunu pull.

Supporto
Funziona con Crunu oggi: il supporto per systemd fa parte del prodotto.
Funzionalità di Crunu
Macchine e Regole di rete
Verificato
Con Crunu 6.0.0 il 27 ottobre 2026
Esempio. Kiteline è un’azienda fittizia.

Funzionalità di Crunu che funzionano con systemd

Ogni funzionalità qui sotto funziona allo stesso modo in ogni integrazione: il server conserva testo cifrato, e solo le persone, le macchine e i token a cui concedi l’accesso possono decifrare.

  • Macchine

    Registra un server con un codice monouso: l’agente crunu tiene i suoi ambienti in memoria e avvia i tuoi programmi con quelle variabili.

    Scopri di più

  • Regole di rete

    Fornisci il contenuto di un ambiente solo alle reti IPv4 e IPv6 consentite, con regole firmate che non possono essere allentate di nascosto.

    Scopri di più

Come funziona con systemd

In questa pagina

Cosa fa Crunu con systemd

Su un server Linux, l’agente crunu gira come servizio systemd crunu-agent. Accede con le chiavi proprie della macchina, controlla il server ogni minuto, tiene gli ambienti decifrati solo in memoria e li passa a crunu run tramite un socket locale. Il tuo servizio si avvia tramite crunu run e riceve le variabili dall’agente, quindi nulla finisce su disco.

È anche così che Crunu tiene production fuori dalla CI: il server di produzione scarica da solo il proprio ambiente, e la pipeline si limita a consegnare il codice e a riavviare il servizio.

Registrare la macchina

In Crunu, apri Machines e scegli New machine. Scegli i suoi ambienti e come fornirli, poi copia il comando di installazione dalla finestra Enroll machine. Installa l’agente, controlla lo SHA-256 del binario e registra la macchina con un codice monouso letto da stdin:

Shell
printf '%s\n' 'crunu_enr_…' | sudo sh install.sh --version 6.0.0 --sha256 amd64=<sum> --sha256 arm64=<sum> --base-url https://releases.crunu.com/6.0.0 --server https://app.crunu.com --enroll -

La finestra compila per te il codice di registrazione e i checksum. Le release dell’agente sono pubblicate su releases.crunu.com: la versione 6.0.0 ha binari per Linux e macOS, pacchetti .deb, install.sh e un manifest firmato. Su un server che gestisci tu, la finestra mostra gli indirizzi con cui quel server è configurato. Il codice è valido per 15 minuti per impostazione predefinita e si consuma la prima volta che viene presentato. crunu enroll stampa l’impronta della macchina; approva la macchina in Machines dopo aver verificato che l’impronta corrisponda.

L’installer è testato con systemd su Ubuntu 24.04, Ubuntu 22.04 e Debian 12. Viene compilato anche un pacchetto .deb per amd64 e arm64.

Avviare il servizio tramite crunu run

INI
# /etc/systemd/system/payments-api.service
[Service]
User=payments
ExecStart=/usr/local/bin/crunu run --env payments-api/production --restart on-change -- /opt/payments-api/bin/server

L’utente del servizio deve far parte del gruppo crunu, proprietario del socket dell’agente. Con --restart on-change, crunu run riavvia il tuo programma dopo che i valori sono cambiati: invia SIGTERM, poi SIGKILL se il programma non si è fermato entro il timeout di arresto, e lo riavvia con le nuove variabili. Nel log finiscono solo i nomi delle variabili cambiate. I segnali di systemd vengono inoltrati al tuo programma, e il suo codice di uscita diventa quello di crunu run.

Il programma riceve un ambiente pulito: un breve elenco di variabili consentite come PATH, HOME e LANG, più le variabili dell’ambiente.

Oppure scrivere un file per EnvironmentFile=

Se una unit deve leggere le variabili da un file, crunu pull può scriverle come unico file env con permessi 0600:

Shell
crunu pull --env payments-api/production --env-out /etc/payments-api/env

Punta la direttiva EnvironmentFile= della unit a quel percorso. I valori sono allora su disco, leggibili da root e dal proprietario del file, e Crunu non rimuove il file in seguito. Quando puoi, preferisci crunu run.

Come è protetto il servizio dell’agente

  • La unit gira come utente crunu senza capability, con ProtectSystem=strict, una home di sola lettura, /tmp e dispositivi privati, e un SystemCallFilter limitato alle normali chiamate di un servizio.
  • I core dump sono disattivati, e su Linux l’agente è protetto dagli altri processi dello stesso utente.
  • I file di stato vengono scritti in modo atomico. L’agente registra lo stato verificato più recente prima di fornirlo, così dopo un riavvio il server non può riportarlo indietro di nascosto.

Gestione

Shell
sudo systemctl enable --now crunu-agent
sudo systemctl kill -s HUP crunu-agent
crunu status

Il primo comando avvia l’agente una volta registrata la macchina. SIGHUP gli fa controllare il server subito invece che al minuto successivo. crunu status mostra la macchina, la sua organizzazione e le impronte, il lease e ogni ambiente.

Se il server non è raggiungibile, l’agente fornisce l’ultimo stato verificato fino alla fine del lease, 24 ore per impostazione predefinita. Dopo la revoca della macchina, cancella i suoi ambienti dalla memoria entro pochi minuti, mentre è online.

Correlati

Dubbi frequenti

Non trovi la risposta? Scrivi a support@crunu.com e ti risponderà una persona.

I segreti vengono scritti su disco?

Non con crunu run: l’agente tiene gli ambienti in memoria e li passa tramite un socket locale. crunu pull --env-out scrive un file solo quando lo chiedi.

Cosa succede se il server non è raggiungibile?

L’agente fornisce l’ultimo stato verificato fino alla fine del suo lease, 24 ore per impostazione predefinita.

Il servizio gira su macOS?

No. Il servizio in background è solo per Linux. Su macOS, crunu funziona come strumento da riga di comando.

Provalo con systemd

Crea la tua organizzazione su app.crunu.com, aggiungi un ambiente e collegalo. Gratis durante l’accesso anticipato.