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í¶
| 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 |
| 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¶
| 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 (klíče zálohovány) | < 2 hodiny |
| 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 má za následek trvalou ztrátu všech šifrovaných dat. Zálohování klíče je nejdůležitější zálohovací operací.
Postup zálohování klíčů¶
-
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 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)
- 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íčů