Qual è la migliore pratica per prendere il dump MySQL, crittografarlo e poi spingerlo su s3?


8

Questo progetto attuale richiede che il DB sia scaricato, crittografato e inviato a s3. Mi chiedo quali potrebbero essere alcune "best practice" per tale compito. A partire da ora sto usando un metodo piuttosto diretto, ma vorrei avere alcune idee migliori per quanto riguarda la sicurezza. Ecco l'inizio della mia sceneggiatura:

mysqldump -u root --password="lepass" --all-databases --single-transaction > db.backup.sql
tar -c db.backup.sql | openssl des3 -salt --passphrase foopass > db.backup.tarfile
s3put backup/db.backup.tarfile db.backup.tarfile
# Let's pull it down again and untar it for kicks
s3get surgeryflow-backup/db/db.backup.tarfile db.backup.tarfile
cat db.backup.tarfile | openssl des3 -d -salt --passphrase foopass |tar -xvj

Ovviamente il problema è che questo script tutto ciò che un attaccante avrebbe bisogno per suscitare l'inferno.

Eventuali pensieri, critiche e suggerimenti per questo compito saranno apprezzati.

Risposte:


9

per prima cosa puoi creare un 'utente' in mysql che abbia autorizzazioni di sola lettura per il database in questione, che ridurrebbe potenziali danni distruttivi, se un attaccante avesse accesso al tuo script di backup.

quindi è possibile utilizzare gpgo pgpcrittografare il backup prima o dopo averlo compresso e è possibile farlo senza la necessità di fornire una password, utilizzando la chiave pubblica.

e, naturalmente, dovresti chmod 700 backupscript.shimpedire a chiunque di leggere la tua password.

ci possono essere altri modi per eseguire snapshot di database senza password, ma non sono a conoscenza di alcuno fuori dalla mia testa.

gpgo pgpsembra un'alternativa superiore al opensslmetodo che hai citato, perché può essere fatto senza password.

#!/bin/sh
touch db.backup.sql.gz
chmod 600 db.backup.sql.gz
mysqldump -u nonprivuser --password="pass" --all-databases --single-transaction | gzip > db.backup.sql.gz
gpg -e -r your@email.com db.backup.sql.gz && rm -f db.backup.sql.gz
s3put backup/db.backup.sql.gz.gpg db.backup.sql.gz.gpg

aggiunto un breve script di esempio per te
cpbills,

Va bene, penso.
Shivam Bajpai,

0

L'uso di una password all'interno dello script è una pessima idea in quanto può essere visto ps auxe letto da ogni utente del sistema.

Ti suggerirei di esaminare mysqldump-secure . Questo è uno script di shell che esegue la opensslcrittografia basata sulla crittografia della chiave pubblica-privata ed è molto più performante di gpg.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.