Qual é a melhor prática para obter o despejo do MySQL, criptografando-o e empurrando para o s3?

8

Este projeto atual requer que o DB seja despejado, criptografado e enviado para o s3. Eu estou querendo saber o que pode ser algumas "melhores práticas" para tal tarefa. A partir de agora, estou usando um método bastante direto, mas gostaria de ter algumas ideias melhores em relação à segurança. Aqui está o começo do meu 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, o problema é que esse script, tudo o que um invasor precisaria para elevar o inferno.

Quaisquer pensamentos, críticas e sugestões para esta tarefa serão apreciados.

    
por J. LaRosee 18.05.2010 / 21:47

3 respostas

9

primeiro você pode criar um 'usuário' no mysql que tenha permissões somente leitura para o banco de dados em questão, que reduziria o dano potencial destrutivo, caso um invasor tenha acesso ao seu script de backup.

você pode usar gpg ou pgp encryption em seu backup antes ou depois de compactá-lo, e você pode fazer isso sem precisar fornecer uma senha, usando sua chave pública.

e é claro, você deve chmod 700 backupscript.sh impedir que alguém leia sua senha.

pode haver outras maneiras de fazer snapshots de banco de dados sem senha, mas eu não estou ciente de nada que esteja fora do meu limite.

gpg ou pgp parece uma alternativa superior ao método openssl que você mencionou, porque pode ser feito sem uma senha.

#!/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
    
por 18.05.2010 / 22:04
0

Usar uma senha dentro do script é uma idéia muito ruim, pois isso pode ser visto em ps aux e lido por todos os usuários do sistema.

Eu sugiro que você procure em mysqldump-secure . Este é um script de shell que faz openssl encryption com base na criptografia de chave pública-privada e tem muito mais desempenho que o gpg.

    
por 28.12.2015 / 20:23
-1

Você também pode usar o RDS, que faz tudo isso para você.

    
por 27.07.2010 / 15:17