¿Cuál es la mejor práctica para tomar el volcado de MySQL, encriptarlo y luego pasar a s3?

8

Este proyecto actual requiere que la base de datos sea volcada, encriptada y empujada a s3. Me pregunto cuáles podrían ser algunas "mejores prácticas" para tal tarea. A partir de ahora estoy usando un método bastante directo, pero me gustaría tener algunas mejores ideas en lo que respecta a la seguridad. Aquí está el comienzo de mi script:

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

Obviamente el problema es que con este script todo lo que un atacante necesitaría para levantar el infierno.

Cualquier idea, crítica y sugerencia para esta tarea será apreciada.

J. LaRosee
fuente

Respuestas:

9

primero puede crear un 'usuario' en mysql que tenga permisos de solo lectura para la base de datos en cuestión, que reduciría el daño destructivo potencial, si un atacante obtuviera acceso a su script de respaldo.

entonces puede usar gpgo pgpcifrar su copia de seguridad antes o después de comprimirla, y puede hacerlo sin necesidad de proporcionar una contraseña, utilizando su clave pública.

y, por supuesto, debe chmod 700 backupscript.shevitar que alguien lea su contraseña.

Puede haber otras formas de hacer instantáneas de bases de datos sin contraseña, pero no estoy al tanto de ninguna de ellas.

gpgo pgpparece una alternativa superior al opensslmétodo que ha mencionado, porque se puede hacer sin contraseña.

#!/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 [email protected] db.backup.sql.gz && rm -f db.backup.sql.gz
s3put backup/db.backup.sql.gz.gpg db.backup.sql.gz.gpg
cpbills
fuente
agregó un breve script de ejemplo para usted
cpbills
Bien para ir, creo.
Shivam Bajpai
0

El uso de una contraseña dentro del script es una muy mala idea, ya que ps auxtodos los usuarios del sistema pueden verlo y leerlo.

Te sugiero que busques en mysqldump-secure . Este es un script de shell que realiza opensslcifrado basado en el cifrado de clave pública-privada y es mucho más eficaz que gpg.

lockdoc
fuente
-1

También puede usar RDS, que hace todo esto por usted.

Adam Nelson
fuente