Cách tốt nhất để lấy kết xuất MySQL, mã hóa nó và sau đó đẩy lên s3 là gì?


8

Dự án hiện tại này yêu cầu DB được kết xuất, mã hóa và đẩy lên s3. Tôi đang tự hỏi điều gì có thể là một số "thực hành tốt nhất" cho một nhiệm vụ như vậy. Hiện tại tôi đang sử dụng một phương pháp khá đơn giản nhưng muốn có một số ý tưởng tốt hơn về vấn đề bảo mật. Đây là khởi đầu của kịch bản của tôi:

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

Rõ ràng vấn đề là kịch bản này mọi thứ mà một kẻ tấn công sẽ cần để nâng cao địa ngục.

Bất kỳ suy nghĩ, phê bình và đề xuất cho nhiệm vụ này sẽ được đánh giá cao.

Câu trả lời:


9

trước tiên, bạn có thể tạo một 'người dùng' trong mysql có quyền chỉ đọc cho cơ sở dữ liệu được đề cập, điều đó sẽ làm giảm thiệt hại hủy diệt tiềm tàng, là kẻ tấn công để có quyền truy cập vào tập lệnh sao lưu của bạn.

sau đó bạn có thể sử dụng gpghoặc pgpmã hóa trên bản sao lưu của mình trước hoặc sau khi bạn nén nó và bạn có thể làm điều đó mà không cần cung cấp mật khẩu, sử dụng khóa chung của bạn.

và tất nhiên, bạn nên chmod 700 backupscript.shngăn không cho bất cứ ai đọc mật khẩu của bạn.

có thể có những cách khác để thực hiện các ảnh chụp nhanh cơ sở dữ liệu không có mật khẩu, nhưng tôi không nhận ra bất kỳ thứ gì ngoài đỉnh đầu.

gpghoặc pgpcó vẻ như là một giải pháp thay thế ưu việt cho opensslphương pháp bạn đã đề cập, bởi vì nó có thể được thực hiện mà không cần mật khẩu.

#!/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

đã thêm một đoạn mã ví dụ ngắn cho bạn
cpbills

Tốt để đi tôi nghĩ.
Shivam Bajpai

0

Sử dụng mật khẩu bên trong tập lệnh là một ý tưởng thực sự tồi tệ vì ps auxmọi người dùng hệ thống đều có thể nhìn thấy và đọc ra.

Tôi sẽ đề nghị bạn xem xét về mysqldump-safe . Đây là một tập lệnh shell thực hiện opensslmã hóa dựa trên mã hóa khóa công khai và hiệu suất cao hơn nhiều so với gpg.


-1

Bạn cũng có thể chỉ sử dụng RDS mà thực hiện tất cả điều này cho bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.