Zálohy databáze CzechIdM
Konfigurace zálohování
Zálohovací joby jsou v IAM appliance předpřipravené, je potřeba je pouze aktivovat. Aktivace se provádí pomocí systemd unit.
-
czechidm-db-backup.service
- Služba provádějící zálohu, součástí služby je i retence záloh. -
czechidm-db-backup.timer
- Konfigurace naplánované úlohy; v jakých intervalech se má spouštětczechidm-db-backup.service
.
Stav zálohování
Zálohy se provádějí do adresáře /data/volumes/czechidm/backup/
ve formě gzipovaného souboru s SQL skriptem. Soubor může být (volitelně) zašifrován.
Stav pravidelné úlohy je možné zjistit pomocí příkazů:
[root@localhost ~]# systemctl status czechidm-db-backup.service [root@localhost ~]# systemctl status czechidm-db-backup.timer [root@localhost ~]# systemctl list-timers --all
Aktivace pravidelných záloh
Pro aktivaci pravidelných záloh spusťte timer a aktivujte jeho automatické spouštění po startu operačního systému.
Deaktivaci proveďte stejným způsobem, ale použijte stop
, respektive disable
.
[root@localhost ~]# systemctl start czechidm-db-backup.timer [root@localhost ~]# systemctl enable czechidm-db-backup.timer
Zálohu je možné provést i ad-hoc ručním spuštěním služby czechidm-db-backup.service
. Služba provede retenci záloh, pak vytvoří novou zálohu a opět se vypne.
Obnova ze zálohy
Obnovu databázového dumpu je možné provést pouze pokud je CzechIdM (služba czechidm
) vypnutá. Celá obnova může trvat i několi desítek minut v závislosti na velikosti databáze.
-
Zastavte službu CzechIdM.
[root@localhost ~]# systemctl stop czechidm
-
Přepněte se do kontejneru s databází a přistupte do databáze. Odstraňte celou databázi "czechidm". Odpojte se příkazem
\q
[root@localhost ~]# docker exec -it czechidm-db bash root@czechidm-db:/# psql -U postgres psql (12.5 (Debian 12.5-1.pgdg100+1)) Type "help" for help. postgres=# drop database czechidm ; DROP DATABASE postgres=# \q
-
Proveďte obnovu ze zálohy.
root@czechidm-db:/# gunzip -c SOUBORSEZÁLOHOU.sql.gz | psql -U postgres
-
Spusťte službu CzechIdM
[root@localhost ~]# systemctl start czechidm
Šifrování záloh
Tato funkce je dostupná od iam-app-czechidm-db
verze 0.4-0
a pouze pokud se používá kontejnerový image bcv-postgres:12-r2
nebo novější. Verzi image lze zjistit z konfigurace služby (soubor /data/registry/node-active-config/docker-compose-czechidm-db.yml
).
Při instalaci updatu je automaticky vygenerován nový šifrovací klíč pro zálohy. Tento šifrovací klíč je unikátní a lze ho rovnou používat. Pokud přesto chcete klíč změnit, lze to provést následujícím příkazem.
[root@localhost ~]# openssl rand -base64 32 > /data/volumes/czechidm-db/secrets/db-backup-symkey.pwfile
Šifrování záloh je nutné aktivovat na úrovni kontejneru.
-
Editujte soubor
/data/registry/node-active-config/docker-compose-czechidm-db.yml
.-
Nastavte proměnnou
DB_ENCRYPT_BACKUP
na hodnotutrue
.
-
-
Zastavte službu CzechIdM pomocí
systemctl stop czechidm
. -
Restartujte databázovou službu příkazem
systemctl restart czechidm-db
. -
Spusťte službu CzechIdM pomocí
systemctl start czechidm
. -
Další vytvořená záloha už bude zašifrována.
Šifrovanou zálohu lze rozpoznat podle koncovky souboru. Nešifrované zálohy mají suffix .sql.gz
, šifrované zálohy mají suffix .sql.gz.e
. Pro obnovu ze šifrované zálohy ji musíte nejdříve dešifrovat, címž získáte běžnou nešifrovanou zálohu. Tuto zálohu obnovte dle postupu pro nešifrované zálohy.
Šifrování je interně realizováno programem openssl
s parametry -aes-256-cbc
, -salt
, -pbkdf2
. Jakákoliv verze OpenSSL, která je schopná pracovat s těmito parametry, je schopna zálohu dešifrovat.
openssl enc -e -aes-256-cbc -salt -pbkdf2 -pass file:/run/secrets/db-backup-symkey.pwfile -in mydatabase.sql.gz -out mydatabase.sql.gz.e
openssl enc -d -aes-256-cbc -pbkdf2 -pass file:/run/secrets/db-backup-symkey.pwfile -in mydatabase.sql.gz.e -out mydatabase.sql.gz