Qual é a melhor prática para pegar o despejo do MySQL, criptografá-lo e depois passar para o s3?

8

Este projeto atual exige que o banco de dados seja despejado, criptografado e enviado para s3. Estou pensando em quais podem ser algumas "melhores práticas" para essa tarefa. A partir de agora, estou usando um método bastante direto, mas gostaria de ter algumas idéias 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 criar um inferno.

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

J. LaRosee
fonte

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 possíveis danos destrutivos, se um invasor tivesse acesso ao seu script de backup.

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

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

pode haver outras maneiras de fazer instantâneos de banco de dados sem senha, mas não estou ciente de nenhum problema.

gpgou pgpparece ser uma alternativa superior ao opensslmétodo que você mencionou, porque isso 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
cpbills
fonte
adicionou um script de exemplo curto para você
cpbills
Bom ir, eu acho.
Shivam Bajpai
0

Usar uma senha dentro do script é uma péssima idéia, pois isso pode ser visto ps auxe lido por todos os usuários do sistema.

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

lockdoc
fonte
-1

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

Adam Nelson
fonte