Apa praktik terbaik untuk mengambil dump MySQL, mengenkripsi dan kemudian mendorong ke s3?

8

Proyek saat ini mengharuskan DB dibuang, dienkripsi, dan didorong ke s3. Saya bertanya-tanya apa yang mungkin menjadi "praktik terbaik" untuk tugas seperti itu. Sampai sekarang saya menggunakan metode yang cukup lurus ke depan tetapi ingin memiliki beberapa ide yang lebih baik dalam hal keamanan. Inilah awal skrip saya:

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

Jelas masalahnya adalah bahwa skrip ini semua yang dibutuhkan penyerang untuk membangkitkan neraka.

Setiap pemikiran, kritik dan saran untuk tugas ini akan dihargai.

J. LaRosee
sumber

Jawaban:

9

pertama Anda dapat membuat 'pengguna' di mysql yang memiliki izin baca-saja untuk database yang dimaksud, yang akan mengurangi potensi kerusakan destruktif, adalah penyerang untuk mendapatkan akses ke skrip cadangan Anda.

maka Anda dapat menggunakan gpgatau pgpenkripsi pada cadangan Anda sebelum atau setelah Anda mengompresnya, dan Anda dapat melakukannya tanpa perlu memberikan kata sandi, menggunakan kunci publik Anda.

dan tentu saja, Anda harus chmod 700 backupscript.shmencegah siapa pun membaca kata sandi Anda.

mungkin ada cara lain untuk melakukan snapshot basis data tanpa kata sandi, tetapi saya tidak mengetahui adanya kesalahan di atas kepala saya.

gpgatau pgpsepertinya alternatif yang unggul untuk opensslmetode yang Anda sebutkan, karena dapat dilakukan tanpa kata sandi.

#!/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
sumber
menambahkan skrip contoh singkat untuk Anda
cpbills
Bagus untuk pergi, saya pikir.
Shivam Bajpai
0

Menggunakan kata sandi di dalam skrip adalah ide yang sangat buruk karena ini dapat dilihat ps auxdan dibaca oleh setiap pengguna sistem.

Saya akan menyarankan Anda untuk melihat mysqldump-secure . Ini adalah skrip shell yang melakukan opensslenkripsi berdasarkan enkripsi kunci publik-swasta dan jauh lebih berkinerja daripada gpg.

lockdoc
sumber
-1

Anda juga dapat menggunakan RDS yang melakukan semua ini untuk Anda.

Adam Nelson
sumber