Privilegi backup
Studio permessi per il backup automatico Obelica
Ultimo aggiornamento: 2026-06-19.
Strumento
Il backup e' gestito dal tool Rust obelica-backup in:
/opt/obelica/infra/tools/obelica-backupL'eseguibile compilato e' in:
/opt/obelica/infra/tools/obelica-backup/target/release/obelica-backupProblema
I dati app Forgejo vivono in:
/opt/obelica/data/forgejo/appAlcuni path importanti non sono leggibili direttamente da bona sul filesystem host:
/opt/obelica/data/forgejo/app/ssh root:root 700
/opt/obelica/data/forgejo/postgres uid 70:systemd-journal 700Un tar diretto da host non puo' includere tutto senza root.
Modello privilegi attuale
bona e' nel gruppo docker.
Il socket Docker e':
/var/run/docker.sock root:docker 660Accesso Docker e' root-equivalent su questo host. Per questo non e' stato aggiunto passwordless sudo solo per il backup.
Soluzione scelta
obelica-backup preferisce container root per i dati con permessi ristretti:
docker run --rm -v /opt/obelica/data/forgejo:/data:ro alpine:latest \
tar czf - -C /data . > forgejo-app-data.tar.gzPer i database:
docker run --rm -e PGPASSWORD=... postgres:18-alpine \
sh -c 'pg_dump ... | gzip' > <app>.sql.gzE per Forgejo:
docker exec forgejo-db pg_dump -U forgejo forgejo | gzip > forgejo.sql.gzCifratura
I file sensibili (dump DB e secret) vengono cifrati con ChaCha20Poly1305 in streaming, in modo da gestire anche file grandi senza caricarli tutti in RAM.
Vantaggi
- Include
/data/sshe altri path root-only. - Non richiede sudo interattivo.
- Non pubblica archivi parziali.
- Output owner
bona:bona. - File mode
600. - Cifratura prima del salvataggio.
Esclusioni
Esclusi path volatili e la passphrase di backup:
./gitea/log
./gitea/queues
./gitea/tmp
/opt/obelica/secrets/.backup-passphraseInclusi path sensibili persistenti:
./gitea/conf/app.ini
./gitea/jwt/private.pem
./ssh/*
./git/.ssh/*Hardening futuro
- backup user dedicato con permessi stretti;
- offsite cifrato;
- restore test periodici;
- alert fallimento backup.