Zálohování a obnova¶
Strategie zálohování, cíle RTO/RPO a postupy obnovy
Verze dokumentu: 1.0.0
Poslední aktualizace: 2026-02-10
1. Přehled strategie zálohování¶
Za zálohy odpovídá strana, která provozuje dané prostředí: Zákazník u zákaznicky provozovaných nasazení, nebo Poskytovatel tam, kde provoz prostředí smluvně zajišťuje Poskytovatel. Software MazeVault poskytuje zálohovací a obnovovací schopnosti, samotná licence však nepřenáší odpovědnost za zálohy infrastruktury na Výrobce.
| Komponenta | Metoda | Frekvence | Retence |
|---|---|---|---|
| PostgreSQL | pg_dump / Azure Backup |
Denně + před změnami | 30 dní |
| Šifrovací klíče | Ruční export do zabezpečeného úložiště | Při vytvoření + rotaci | Trvale |
| Trezor tajemství | Kopie secrets.vault + vault.key |
Při změně + rotaci | Trvale |
| Konfigurace | Kopie souborového systému | Před změnami | 30 dní |
| TLS certifikáty | Kopie souborového systému | Před rotací | Do expirace + 90 dní |
| Redis | Nezálohuje se (dočasná cache) | — | — |
2. Cíle RTO/RPO¶
Níže uvedené cíle jsou referenční provozní cíle pro podporované modely nasazení. Závaznými se stávají pouze tehdy, pokud jsou inkorporovány do příslušné smlouvy o podpoře nebo smlouvy Poskytovatel-Zákazník.
| Scénář | RPO (ztráta dat) | RTO (výpadek) |
|---|---|---|
| Poškození databáze | < 24 hodin | < 4 hodiny |
| Úplný výpadek uzlu | < 24 hodin | < 2 hodiny (K8s) / < 4 hodiny (on-prem) |
| Výpadek datového centra | < 1 hodina (se synchronizací) | < 8 hodin |
| Ztráta šifrovacího klíče | 0 při existenci platných záloh klíčů / trvalá ztráta bez zálohy klíče | < 2 hodiny se zálohou / neobnovitelné bez zálohy |
| Ransomware / ztráta dat | < 24 hodin | < 8 hodin |
3. Zálohování databáze¶
On-Premise (pg_dump)¶
#!/bin/bash
# mazevault-backup.sh
BACKUP_DIR="/opt/mazevault/backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/mazevault_${TIMESTAMP}.sql.gz"
# Create backup
docker exec client-postgres pg_dump \
-U mazevault \
-d mazevault \
--format=custom \
--compress=9 \
> "$BACKUP_FILE"
# Verify backup integrity
docker exec client-postgres pg_restore \
--list "$BACKUP_FILE" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Backup successful: $BACKUP_FILE"
# Cleanup old backups (keep 30 days)
find "$BACKUP_DIR" -name "mazevault_*.sql.gz" -mtime +30 -delete
else
echo "ERROR: Backup verification failed"
exit 1
fi
Naplánujte pomocí cron:
# Daily backup at 2:00 AM
0 2 * * * /opt/mazevault/scripts/mazevault-backup.sh >> /var/log/mazevault-backup.log 2>&1
Azure (spravované zálohování)¶
Azure Database for PostgreSQL Flexible Server poskytuje automatické zálohování:
- Obnova k bodu v čase: Dostupná pro jakýkoliv okamžik v rámci retenční doby
- Retence: 7–35 dní (konfigurovatelné)
- Geograficky redundantní záloha: Dostupná pro obnovu napříč regiony
# Restore to point in time
az postgres flexible-server restore \
--resource-group rg-mazevault-prod \
--name psql-mazevault-restored \
--source-server psql-mazevault-prod \
--restore-time "2026-02-09T00:00:00Z"
4. Zálohování šifrovacích klíčů¶
Kritické
Ztráta hlavního šifrovacího klíče nebo vault.key má za následek trvalou ztrátu všech šifrovaných dat závislých na daném klíči. Samotná databázová záloha bez odpovídajícího klíčového materiálu nestačí. Zálohování klíče je nejdůležitější zálohovací operací.
Zálohování šifrovaného trezoru (doporučeno)¶
Pokud používáte šifrovaný trezor tajemství (secrets.vault), zálohujte oba soubory:
# On-premise — vault files
cp /opt/mazevault/secrets.vault /secure-backup/secrets.vault.$(date +%Y%m%d)
cp /opt/mazevault/vault.key /secure-backup/vault.key.$(date +%Y%m%d)
# Verify backup integrity
vault-tool list \
--vault-file /secure-backup/secrets.vault.$(date +%Y%m%d) \
--key-file /secure-backup/vault.key.$(date +%Y%m%d)
Záloha trezoru
Zálohy vault.key a secrets.vault ukládejte na fyzicky oddělená místa. Podrobné postupy najdete v části Šifrovaný trezor tajemství.
Legacy postup zálohování klíčů (.env)¶
-
Exportujte hlavní klíč do šifrovaného souboru:
# The master key is in the .env file or K8s secret # Copy to a secure, offline location # On-premise cp /opt/mazevault/.env /secure-backup/mazevault-env-$(date +%Y%m%d) # Kubernetes kubectl get secret mazevault-master-key -n mazevault -o yaml > \ /secure-backup/mazevault-master-key-$(date +%Y%m%d).yaml -
Uložte na fyzicky oddělené, zabezpečené místo:
- Hardwarový bezpečnostní modul (HSM)
- Bankovní bezpečnostní schránka
- Zapečetěná obálka v zabezpečeném úložišti
- Více kopií na různých fyzických místech
Ověření zálohy klíčů¶
Čtvrtletně ověřte, že záložní klíče dokáží dešifrovat testovací data:
# Verify key backup is readable and matches active key
# Compare hash of backed-up key with active key
sha256sum /secure-backup/mazevault-env-latest
5. Zálohování konfigurace¶
# On-premise configuration backup
tar czf /opt/mazevault/backups/config_$(date +%Y%m%d).tar.gz \
/opt/mazevault/.env \
/opt/mazevault/docker-compose.yml \
/opt/mazevault/certs/ \
/opt/mazevault/config/
# Kubernetes configuration backup
kubectl get configmap,secret -n mazevault -o yaml > \
/path/to/backup/mazevault-k8s-config-$(date +%Y%m%d).yaml
6. Postupy obnovy¶
Obnova databáze (On-Premise)¶
# Stop the application
docker compose stop backend ocsp-responder
# Restore database
docker exec -i client-postgres pg_restore \
-U mazevault \
-d mazevault \
--clean \
--if-exists \
< /opt/mazevault/backups/mazevault_20260210_020000.sql.gz
# Start the application
docker compose start backend ocsp-responder
# Verify health
curl -sk https://localhost/api/v1/health | jq .
Úplná obnova systému (On-Premise)¶
- Připravte nový hostitel — Nainstalujte Docker, Docker Compose dle On-Premise nasazení
- Obnovte konfiguraci — Rozbalte zálohu konfigurace do
/opt/mazevault/ - Obnovte klíčový materiál a soubory trezoru — Před startem aplikačních služeb obnovte odpovídající
.env/Kubernetes secret nebovault.keyasecrets.vault - Obnovte certifikáty — Ujistěte se, že TLS certifikáty jsou v
/opt/mazevault/certs/ - Načtěte obrazy kontejnerů — Z offline balíčku nebo registru
- Spusťte infrastrukturu —
docker compose up -d client-postgres client-redis - Obnovte databázi — Pomocí pg_restore dle postupu výše
- Spusťte aplikaci —
docker compose up -d - Ověřte — Spusťte kontroly stavu, ověřte přístup k tajemstvím, zkontrolujte auditní logy
Test obnovy po havárii¶
Provádějte testy DR čtvrtletně:
- Připravte testovací prostředí
- Obnovte ze zálohy (databáze + konfigurace + klíče/soubory trezoru)
- Ověřte, že všechna tajemství jsou přístupná a dešifrovatelná
- Ověřte, že operace s certifikáty fungují správně
- Zdokumentujte výsledky testu a případné problémy
Související¶
- Údržba — Postupy údržby
- Kontroly stavu — Ověření po obnově
- Šifrování — Podrobnosti správy klíčů