Trong bài trước về bảo mật MySQL, chúng tôi đã đề cập đến một loạt các tùy chọn có thể được sử dụng để làm cho (các) phiên bản MySQL của bạn an toàn hơn. Chúng bao gồm:
- Các biện pháp bảo mật MySQL chung;
- Kiểm soát quyền truy cập trong MySQL;
- Tạo, thay đổi và xóa người dùng trong MySQL;
- Cấp và thu hồi các đặc quyền cho và từ người dùng trong MySQL;
- Kiểm tra đặc quyền nào được chỉ định cho người dùng trong MySQL.
Trong bài đăng này, chúng tôi sẽ đi sâu vào các tùy chọn còn lại, bao gồm:
- Danh mục tài khoản trong MySQL;
- Các vai trò trong MySQL;
- Các tài khoản dành riêng trong MySQL;
- Quản lý mật khẩu trong MySQL;
- Khóa tài khoản trong MySQL;
- Các plugin bảo mật do MySQL cung cấp;
- Bảo mật các bản sao lưu MySQL.
Xin lưu ý rằng một lần nữa, chúng tôi sẽ không trình bày hoàn toàn mọi thứ bạn cần biết, nhưng chúng tôi sẽ cố gắng cung cấp những điểm khởi đầu tốt để bạn tự nghiên cứu.
Danh mục tài khoản trong MySQL
Các danh mục tài khoản đã được giới thiệu trong MySQL 8 - cụ thể là trong MySQL 8.0.16. Đây là mấu chốt của nó:
- Có hai danh mục tài khoản riêng biệt:người dùng thông thường và người dùng hệ thống;
- Người dùng thông thường là người dùng không có đặc quyền SYSTEM_USER - người dùng hệ thống là người dùng có đặc quyền SYSTEM_USER;
- Người dùng thông thường có thể sửa đổi tài khoản thông thường - người dùng như vậy không thể sửa đổi tài khoản hệ thống;
- Người dùng hệ thống có thể sửa đổi cả tài khoản hệ thống và tài khoản thông thường;
- Tài khoản thông thường có thể được sửa đổi bởi cả người dùng thông thường và người dùng hệ thống;
- Chỉ người dùng hệ thống mới có thể sửa đổi tài khoản hệ thống.
Để sử dụng các danh mục tài khoản trong bảo mật MySQL, hãy nhớ rằng đặc quyền SYSTEM_USER ảnh hưởng đến những thứ như thao tác tài khoản và hủy các phiên và câu lệnh bên trong chúng - khái niệm này trong MySQL cho phép hạn chế các sửa đổi nhất định đối với do đó làm cho MySQL an toàn hơn. Danh mục tài khoản cũng có thể được sử dụng để bảo vệ tài khoản hệ thống khỏi bị tài khoản thông thường thao túng:để làm như vậy, không cấp đặc quyền sửa đổi giản đồ mysql cho tài khoản thông thường.
Để cấp đặc quyền cho tài khoản SYSTEM_USER, hãy sử dụng truy vấn sau trên tài khoản đã tạo:
GRANT SYSTEM_USER ON *.* TO system_user;
Các vai trò trong MySQL
Trong MySQL, vai trò là tập hợp các đặc quyền. Khi bạn cấp cho tài khoản người dùng một vai trò trong MySQL, bạn cấp tất cả các đặc quyền liên quan đến vai trò đó. Các vai trò có thể được tạo bằng cách sử dụng câu lệnh CREATE ROLE:
CREATE ROLE ‘role_1’, ‘role_2’;
Tên vai trò bao gồm phần người dùng và phần máy chủ - phần người dùng không được để trống và phần máy chủ mặc định là “%” nếu nó không được chỉ định.
Khi các vai trò được tạo, bạn nên gán các đặc quyền cho chúng. Các đặc quyền có thể được chỉ định bằng cách sử dụng câu lệnh GRANT:
- CẤP TẤT CẢ TRÊN demo_database. * CHO ‘demo_user’; sẽ cấp tất cả các đặc quyền cho người dùng có tên là demo_user trên cơ sở dữ liệu được gọi là demo_database;
- CẤP CHÈN, CHỌN, CẬP NHẬT, XÓA TRÊN cơ sở dữ liệu. * TO ‘demo_user’; sẽ cấp các đặc quyền INSERT, SELECT, UPDATE và DELETE cho người dùng được gọi là demo_user trên cơ sở dữ liệu có tên demo_database;
- CẤP CHỌN TRÊN demo_database. * TO ‘demo_user’; sẽ cấp các đặc quyền SELECT cho người dùng có tên là demo_user trên cơ sở dữ liệu có tên là demo_database.
Để chỉ định vai trò cho một người dùng cá nhân, hãy sử dụng cú pháp sau:
GRANT ‘role_name’ TO ‘user_name’@’localhost’;
Để gán nhiều vai trò cho một người dùng cá nhân, hãy sử dụng cú pháp sau:
GRANT ‘role_1’, ‘role_2’ TO ‘user_name’@’localhost’;
Để gán vai trò cho nhiều người dùng cùng lúc, hãy sử dụng cú pháp sau:
GRANT ‘role_name’ TO ‘user1’@’localhost’, ‘user2’@’localhost’;
Các vai trò có thể hữu ích trong việc ngăn chặn các sự cố bảo mật bởi vì nếu kẻ tấn công biết sai mật khẩu của một người dùng không có đặc quyền cho rằng người dùng đó có vai trò rất "mạnh mẽ", thì ứng dụng của bạn (và cơ sở dữ liệu của bạn) có thể được lưu rất tốt.
Tài khoản dành riêng trong MySQL
Khi có liên quan đến tài khoản dành riêng, hãy nhớ rằng MySQL tạo tài khoản trong quá trình khởi tạo thư mục dữ liệu. Có một số tài khoản nên được coi là dành riêng trong MySQL:
- ‘root’ @ ’localhost’ - tài khoản này là tài khoản superuser và nó có các đặc quyền giống như thần thánh trên tất cả các cơ sở dữ liệu MySQL (nó có thể thực hiện bất kỳ hoạt động nào trên bất kỳ cơ sở dữ liệu MySQL nào). Cần lưu ý rằng người dùng root cũng có thể được đổi tên để tránh lộ tài khoản có đặc quyền cao. Để đổi tên tài khoản, hãy chạy truy vấn sau:
RENAME USER ‘root’@’localhost’ TO ‘username’@’localhost’;
- Đảm bảo ban hành QUYỀN RIÊNG TƯ CỦA FLUSH; sau khi đổi tên tài khoản để các thay đổi có hiệu lực.
- ‘mysql.sys’@’localhost’ - tài khoản này là người dùng hệ thống được sử dụng làm trình định nghĩa cho chế độ xem, thủ tục và chức năng trong lược đồ hệ thống. Đã thêm vào MySQL 5.7.9 để tránh các vấn đề có thể phát sinh nếu tài khoản gốc được đổi tên.
- ‘mysql.session’@’localhost’ - tài khoản này được các plugin sử dụng nội bộ để truy cập vào máy chủ.
Trong trường hợp này, bạn không thể thực hiện nhiều bảo mật, nhưng hãy nhớ rằng tài khoản gốc có các đặc quyền giống như thần thánh, có nghĩa là nó có thể thực hiện bất kỳ hoạt động nào trên bất kỳ cơ sở dữ liệu MySQL nào và hãy thận trọng khi quyết định ai sẽ cấp quyền truy cập tài khoản. Ngoài ra, hãy ghi nhớ các tài khoản MySQL khác được sử dụng để làm gì.
Quản lý mật khẩu trong MySQL
MySQL cũng hỗ trợ các tính năng quản lý mật khẩu. Một số trong số chúng bao gồm:
- Khả năng định kỳ hết hạn mật khẩu;
- Khả năng tránh sử dụng lại mật khẩu;
- Khả năng tạo mật khẩu;
- Khả năng kiểm tra xem mật khẩu đang sử dụng có mạnh hay không;
- Khả năng tạm thời khóa người dùng sau quá nhiều lần đăng nhập không thành công.
Bây giờ, chúng ta sẽ xem xét thêm các tùy chọn này.
Để hết hạn mật khẩu theo cách thủ công, hãy sử dụng câu lệnh ALTER USER như sau:
ALTER USER ‘user’@’localhost’ PASSWORD EXPIRE;
Để đặt chính sách chung, hãy sửa đổi tệp my.cnf sao cho tệp này bao gồm tham số default_password_lifetime. Tham số có thể được xác định bên dưới phần [mysqld] (ví dụ sau đặt thời gian tồn tại của mật khẩu là 3 tháng (90 ngày)):
default_password_lifetime=90
Nếu bạn muốn mật khẩu không bao giờ hết hạn, hãy đặt tham số default_password_litetime thành 0.
Bạn cũng có thể đặt hết hạn mật khẩu cho người dùng cụ thể. Nếu bạn muốn đặt khoảng thời gian hết hạn mật khẩu cho người dùng được gọi là demo_user, bạn có thể sử dụng ví dụ sau:
ALTER USER ‘demo_user’@’localhost’ PASSWORD EXPIRE INTERVAL 90 DAY;
Để vô hiệu hóa việc hết hạn mật khẩu:
ALTER USER ‘demo_user’@’localhost’ PASSWORD EXPIRE NEVER;
Để đặt lại chính sách hết hạn mật khẩu chung:
ALTER USER ‘demo_user’@’localhost’ PASSWORD EXPIRE DEFAULT;
Hạn chế sử dụng lại mật khẩu không cho phép sử dụng lại mật khẩu - để sử dụng tính năng này, hãy sử dụng các biến password_history và password_reuse_interval. Bạn có thể đặt các biến này trong my.cnf bằng cách xem ví dụ bên dưới hoặc đặt chúng trong thời gian chạy bằng cách thêm SET PERSIST vào trước các câu lệnh bên dưới.
Để cấm sử dụng lại bất kỳ mật khẩu nào trong số 5 mật khẩu đã sử dụng trước đó, mới hơn 365 ngày, hãy sử dụng:
password_history=5
password_reuse_interval=365
Để yêu cầu thay đổi mật khẩu tối thiểu 5 lần trước khi cho phép sử dụng lại:
ALTER USER ‘demo_user’@’localhost’ PASSWORD HISTORY 5;
Điều tương tự cũng có thể được thực hiện khi tạo người dùng - thay ALTER USER bằng CREATE USER.
Để tạo mật khẩu ngẫu nhiên khi tạo người dùng, hãy chạy:
CREATE USER [email protected] IDENTIFIED BY RANDOM PASSWORD;
Để thay đổi mật khẩu của người dùng thành mật khẩu được tạo ngẫu nhiên:
SET PASSWORD FOR [email protected] TO RANDOM;
Mật khẩu ngẫu nhiên của bạn sẽ được hiển thị bên dưới.
Hãy nhớ rằng mật khẩu ngẫu nhiên mặc định có độ dài 20 ký tự. Độ dài có thể được kiểm soát bởi biến created_random_password_length có phạm vi từ 5 đến 255.
Để kiểm tra xem mật khẩu đã sử dụng có mạnh hay không, bạn có thể sử dụng biến VALIDATE_PASSWORD_STRENGTH - hàm hiển thị một số từ 0 đến 100 với 0 là yếu nhất và 100 là mạnh nhất:
CHỌN VALIDATE_PASSWORD_STRENGTH ('mật khẩu');
Khóa Tài khoản trong MySQL
MySQL 8.0.19 cũng giới thiệu khả năng tạm thời khóa tài khoản người dùng. Điều này có thể được thực hiện bằng cách sử dụng các biến FAILED_LOGIN_ATTEMPTS và PASSWORD_LOCK_TIME.
Để bật khóa tài khoản khi tạo người dùng, hãy chạy:
CREATE USER ‘demo_user’@’localhost’ IDENTIFIED BY ‘password’ FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 5;
Giá trị sau FAILED_LOGIN_ATTEMPTS chỉ định sau bao nhiêu lần thử không thành công, tài khoản sẽ bị khóa, giá trị sau PASSWORD_LOCK_TIME chỉ định thời gian khóa tài khoản tính theo ngày. Cũng có thể chỉ định một giá trị không kết thúc cho đến khi tài khoản được mở khóa bằng cách chỉ định PASSWORD_LOCK_TIME là UNBOUNDED.
Các Plugin Bảo mật do MySQL cung cấp
MySQL cũng cung cấp một số plugin có thể nâng cao hơn nữa khả năng bảo mật. MySQL cung cấp:
- Plugin xác thực;
- Các plugin kiểm soát kết nối;
- Plugin xác thực mật khẩu;
- Phần bổ trợ kiểm tra;
- Các plugin tường lửa;
Những plugin này có thể được sử dụng cho một số việc về bảo mật:
Plugin Xác thực
Các plugin xác thực có thể cho phép người dùng lựa chọn giữa nhiều phương pháp xác thực có thể cắm sẵn trong MySQL. Chúng có thể được sử dụng cùng với câu lệnh CREATE USER hoặc ALTER USER. Đây là một ví dụ:
CREATE USER ‘user_1’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;
Truy vấn này sẽ triển khai xác thực bằng phương pháp băm mật khẩu gốc.
Phần bổ trợ Kiểm soát Kết nối
Các plugin kiểm soát kết nối có thể gây ra sự chậm trễ ngày càng tăng trong phản hồi của máy chủ đối với các nỗ lực kết nối nếu các nỗ lực kết nối vượt quá một số lượng nhất định - chúng có thể ngăn chặn các cuộc tấn công brute-force tiềm ẩn. Thư viện plugin này đã được giới thiệu với MySQL trong phiên bản 5.7.17 và nó có thể được thêm vào MySQL thông qua my.cnf hoặc bằng cách tải các plugin vào máy chủ trong thời gian chạy.
Để thêm các plugin vào my.cnf , thêm dòng sau vào bên dưới [mysqld]:
plugin-load-add=connection_control.so
Sau khi sửa đổi tệp, hãy lưu các thay đổi của bạn và khởi động lại MySQL.
Để tải các plugin vào máy chủ trong thời gian chạy, hãy chạy:
INSTALL PLUGIN CONNECTION_CONTROL SONAME ‘connection_control.so’;
INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME ‘connection_control.so’;
Điều chỉnh hậu tố .so nếu cần. Nếu bạn đã hoàn thành mọi thứ một cách chính xác, bảng CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS sẽ chứa tất cả các lần kết nối không thành công.
Plugin Xác thực Mật khẩu
Các plugin xác thực mật khẩu có thể cho phép người dùng sử dụng mật khẩu mạnh hơn nếu được sử dụng đúng cách. Có thể cài đặt plugin xác thực mật khẩu qua my.cnf hoặc bằng cách tải plugin vào máy chủ trong thời gian chạy. Để cài đặt plugin qua my.cnf, hãy thêm dòng sau vào bên dưới [mysqld], sau đó khởi động lại máy chủ:
plugin-load-add=validate_password.so
Để tải plugin trong thời gian chạy, hãy chạy câu lệnh sau:
INSTALL PLUGIN validate_password SONAME ‘validate_password.so’;
Để tải plugin trong thời gian chạy và ngăn nó bị xóa, hãy thêm validate-password =FORCE_PLUS_PERMANENT vào my.cnf.
Để ngăn máy chủ chạy nếu plugin chưa được khởi chạy, hãy sử dụng tùy chọn --validate-password với giá trị FORCE hoặc FORCE_PLUS_PERMANENT.
Chính sách độ mạnh mật khẩu cũng có thể được thay đổi:để làm như vậy, hãy thay đổi giá trị validate_password_policy thành THẤP, TRUNG BÌNH hoặc MẠNH. Giá trị của LOW chỉ kiểm tra độ dài mật khẩu, chính sách MEDIUM thêm một số điều kiện và chính sách STRONG thêm điều kiện rằng chuỗi con của mật khẩu bao gồm 4 ký tự trở lên không được khớp với các từ trong tệp từ điển có thể được chỉ định bằng cách sửa đổi biến validate_password_dictionary_file.
Keyring Plugins
Các plugin keyring có thể cho phép các thành phần máy chủ và plugin lưu trữ an toàn thông tin nhạy cảm để truy xuất. Để tải plugin vào MySQL, hãy thêm phần sau vào bên dưới [mysqld]:
early-plugin-load=keyring_file.so
Để chỉ định tệp keyring vault, hãy thêm thông tin sau (biến keyring_vault_config phải trỏ đến tệp cấu hình):
loose-keyring_vault_config=”/var/lib/mysql_keyring/keyring_vault.conf”
Tệp keyring phải chứa biến vault_url xác định địa chỉ máy chủ vault, biến secret_mount_point xác định tên điểm gắn kết nơi keyring vault lưu trữ các khóa và mã thông báo nên được xác định bởi máy chủ vault. Theo tùy chọn, biến vault_ca cũng có thể được xác định (nó phải trỏ đến chứng chỉ CA được sử dụng để ký các chứng chỉ của vault).
Khởi động lại máy chủ để các thay đổi có hiệu lực;
Phần bổ trợ Kiểm tra
Các plugin kiểm tra có thể cho phép giám sát, ghi nhật ký và chặn hoạt động được thực hiện trên máy chủ MySQL. Để cài đặt MySQL Enterprise Audit, hãy chạy một tập lệnh nằm trong thư mục chia sẻ của phiên bản MySQL của bạn (tránh đặt mật khẩu phiên bản MySQL của bạn trong thiết bị đầu cuối - sử dụng my.cnf):
mysql < /path/to/audit_log_filter_linux_install.sql
Bạn cũng có thể ngăn việc xóa plugin khi chạy - thêm phần sau vào phần [mysqld]:
audit_log=FORCE_PLUS_PERMANENT
Khởi động lại máy chủ để áp dụng các thay đổi. Xin lưu ý rằng theo mặc định, ghi nhật ký dựa trên quy tắc ghi lại không có sự kiện có thể kiểm tra, vì vậy, để ghi nhật ký mọi thứ, hãy tạo một bộ lọc:
SELECT audit_log_filter_set_filter(‘log_filter’, ‘{ “filter”: { “log”: true } }’);
Sau đó, gán nó cho một tài khoản:
SELECT audit_log_filter_set_user(‘%’, ‘log_filter’);
Lưu ý rằng các plugin kiểm tra chỉ có sẵn trong MySQL Enterprise Edition;
Trình cắm Tường lửa
Các plugin tường lửa có thể cho phép người dùng cho phép hoặc từ chối việc thực thi các câu lệnh SQL cụ thể dựa trên các mẫu cụ thể. MySQL Enterprise Firewall đã được giới thiệu trong MySQL 5.6.24 - nó có thể bảo vệ dữ liệu bằng cách giám sát, cảnh báo và chặn hoạt động trái phép:nó có thể chặn các cuộc tấn công SQL injection, theo dõi các mối đe dọa và chặn lưu lượng đáng ngờ cũng như phát hiện các hành vi xâm nhập vào kho dữ liệu. Tường lửa cũng có thể ghi lại các câu lệnh bị chặn - chúng có thể được kiểm tra và cũng có thể quan sát số lượng các câu lệnh được chấp thuận và bị từ chối theo thời gian thực.
Để cài đặt MySQL Enterprise Firewall, chỉ cần kích hoạt nó khi cài đặt MySQL Server trên Windows, nó cũng có thể được cài đặt, vô hiệu hóa hoặc gỡ cài đặt với sự trợ giúp của MySQL Workbench 6.3.4. Tường lửa cũng có thể được cài đặt theo cách thủ công bằng cách chạy một tập lệnh trong thư mục chia sẻ của cài đặt MySQL của bạn. Để bật tường lửa, hãy thêm dòng sau vào bên dưới [mysqld] và khởi động lại máy chủ:
mysql_firewall_mode=ON
Tường lửa cũng có thể được bật trong thời gian chạy:
SET GLOBAL mysql_firewall_mode = ON;
Ngoài ra, để duy trì tường lửa (nghĩa là tường lửa sẽ không phải được bật lại trong mỗi lần khởi động lại máy chủ tiếp theo):
SET PERSIST mysql_firewall_mode = ON;
Sau đó, cấp đặc quyền FIREWALL_ADMIN cho bất kỳ tài khoản nào quản lý tường lửa và đặc quyền FIREWALL_USER cho bất kỳ tài khoản nào chỉ có quyền truy cập vào các quy tắc tường lửa của riêng nó. Ngoài ra, cấp đặc quyền THỰC HIỆN cho các thủ tục được lưu trữ của tường lửa trong cơ sở dữ liệu mysql. Để tường lửa hoạt động, hãy đăng ký các cấu hình với nó, sau đó huấn luyện tường lửa biết các câu lệnh được phép mà cơ sở dữ liệu có thể thực thi và sau đó yêu cầu tường lửa khớp các câu lệnh đến với danh sách trắng đã đặt. Mỗi hồ sơ có một chế độ hoạt động - TẮT, GHI, BẢO VỆ hoặc PHÁT HIỆN. OFF vô hiệu hóa cấu hình, RECORDING huấn luyện tường lửa, PROTECTING cho phép hoặc từ chối thực thi câu lệnh và DETECTING phát hiện (nhưng không chặn) các nỗ lực xâm nhập. Các quy tắc cho một cấu hình cụ thể có thể được đặt lại bằng cách đặt giá trị của nó thành ĐẶT LẠI. TẮT sẽ vô hiệu hóa cấu hình. Để đặt chế độ, hãy sử dụng truy vấn sau trong đó tên là tên cấu hình và TẮT là chế độ hoạt động:
CALL mysql.sp_set_firewall_mode(name, ‘OFF’);
Trình cắm tường lửa cũng chỉ có sẵn trong MySQL Enterprise Edition.
Bảo mật Sao lưu MySQL
Về các bản sao lưu MySQL, bạn có một số tùy chọn.
- Nếu bạn đang sử dụng mysqldump, bạn có thể lưu trữ tên người dùng và mật khẩu của mình trong my.cnf và gọi mysqldump như vậy (lệnh sau sẽ kết xuất tất cả cơ sở dữ liệu vào một tệp /home/backup.sql):
$ mysqldump --defaults-extra-file=/var/lib/my.cnf --single-transaction --all-databases > /home/backup.sql
- Bằng cách lưu trữ tên người dùng và mật khẩu của bạn bên trong my.cnf, bạn không viết mật khẩu của mình bên trong thiết bị đầu cuối - phương pháp như vậy để sao lưu an toàn hơn vì trong khi kết xuất đang chạy, lệnh có thể được nhìn thấy qua ps ax lệnh.
-
Bạn cũng có thể cân nhắc sử dụng mysqldump-secure là một tập lệnh wrapper tuân thủ POSIX có khả năng nén và mã hóa các bản sao lưu với tính bảo mật cao. .
-
Các bản sao lưu có thể được mã hóa bằng cách sử dụng OpenSSL - chỉ cần lấy bản sao lưu của bạn, sau đó mã hóa nó bằng lệnh sau:
$ openssl enc -aes-256-cbc -salt -in backup.tar.gz -out backup.tar.gz.enc -k password
Lệnh trên sẽ tạo một tệp được mã hóa backup.tar.gz.enc mới trong thư mục hiện tại. Tệp sẽ được mã hóa bằng mật khẩu bạn đã chọn (thay thế mật khẩu bằng mật khẩu mong muốn của bạn). Tệp có thể được giải mã sau này bằng cách chạy lệnh sau:
$ openssl aes-256-cbc -d -in backup.tar.gz.enc -out backup.tar.gz -k password
Thay mật khẩu bằng mật khẩu của bạn.
-
mysqldump có một tùy chọn khác để mã hóa các bản sao lưu của bạn (ví dụ sau cũng nén chúng bằng gzip):
$ mysqldump --all-databases --single-transaction --triggers --routines | gzip | openssl enc -aes-256-cbc -k password > backup.xb.enc
Thay thế mật khẩu bằng mật khẩu mong muốn của bạn.
-
Bạn cũng có thể mã hóa các bản sao lưu của mình bằng mariabackup hoặc xtrabackup. Dưới đây là một ví dụ từ tài liệu MariaDB:
$ mariabackup --user=root --backup --stream=xbstream | openssl enc -aes-256-cbc -k password > backup.xb.enc
Thay thế mật khẩu bằng mật khẩu mong muốn của bạn.
-
Các bản sao lưu cũng có thể được mã hóa bằng ClusterControl - nếu tùy chọn mã hóa được bật cho một bản sao lưu cụ thể, ClusterControl sẽ mã hóa bản sao lưu bằng AES-256 CBC (mã hóa xảy ra trên nút dự phòng). Nếu bản sao lưu được lưu trữ trên một nút bộ điều khiển, thì các tệp sao lưu sẽ được truyền trực tuyến ở định dạng được mã hóa bằng cách sử dụng socat hoặc netcat. Nếu tính năng nén được bật, ClusterControl trước tiên sẽ nén bản sao lưu, sau đó - mã hóa nó. Khóa mã hóa sẽ được tạo tự động nếu nó không tồn tại, sau đó được lưu trữ bên trong cấu hình CMON trong tùy chọn backup_encryption_key. Hãy nhớ rằng khóa này được mã hóa và phải được giải mã trước. Để làm như vậy, hãy chạy lệnh sau:
$ cat /etc/cmon.d/cmon_ClusterID.cnf | grep ^backup_encryption_key | cut -d"'" -f2 | base64 -d > keyfile.key
Lệnh sẽ đọc backup_encryption_key và giải mã giá trị của nó thành một đầu ra nhị phân. Keyfile có thể được sử dụng để giải mã bản sao lưu như sau:
$ cat backup.aes256 | openssl enc -d -aes-256-cbc -pass file:/path/to/keyfile.key > backup_file.xbstream.gz
Để biết thêm ví dụ, hãy xem tài liệu ClusterControl.
Kết luận
Trong các bài đăng này về bảo mật MySQL, chúng tôi đã đề cập đến một số biện pháp bảo mật có thể được sử dụng tốt nếu bạn cảm thấy cần phải thắt chặt bảo mật cho (các) phiên bản MySQL của mình. Mặc dù chúng tôi không đề cập hoàn toàn mọi thứ, nhưng chúng tôi cảm thấy rằng những điểm này có thể là điểm khởi đầu tốt khi thắt chặt bảo mật cho cài đặt MySQL của bạn. Lấy những gì bạn sẽ làm từ những bài đăng này, tự nghiên cứu và áp dụng các biện pháp bảo mật phù hợp nhất trong tình huống của bạn.