Khó đạt được một môi trường cơ sở dữ liệu an toàn, nhưng cực kỳ quan trọng để tránh vi phạm dữ liệu, ransomware và các hoạt động độc hại khác. Bảo mật dữ liệu là ưu tiên hàng đầu từ quan điểm kinh doanh. Khi chạy trong một trung tâm dữ liệu riêng, mạng của bạn thường là lớp bảo vệ đầu tiên. Nhưng trong môi trường đám mây cơ sở dữ liệu kết hợp phân tán, nơi các phần bên trong của cấu trúc liên kết cơ sở dữ liệu cũng như các ứng dụng được phân phối trên các trung tâm dữ liệu, mạng thể hiện một bề mặt đính kèm lớn hơn. Mã hóa lưu lượng dữ liệu chuyển tiếp là một trong những biện pháp phổ biến để bảo vệ chống lại việc nghe trộm mạng. Trong blog này, chúng ta sẽ xem cách chúng ta có thể mã hóa lưu lượng truy cập cơ sở dữ liệu mysql trên đám mây kết hợp.
Tại sao chúng ta cần Mã hóa lưu lượng cơ sở dữ liệu?
Lý do chính là các kết nối giữa các phiên bản cơ sở dữ liệu và bất kỳ ứng dụng khách nào phải được mã hóa và chỉ đảm bảo giao tiếp được ủy quyền. Lớp bảo mật này có thể ngăn chặn rò rỉ dữ liệu nhạy cảm không mong muốn hoặc loại trừ khả năng xảy ra bất kỳ cuộc tấn công chèn ép SQL nào, v.v. Dữ liệu trong quá trình truyền tải cũng có thể có nghĩa là lưu lượng sao chép giữa các nút cơ sở dữ liệu hoặc lưu lượng giữa bộ cân bằng tải / proxy và các cá thể cơ sở dữ liệu.
Kích hoạt SSL trên MySQL Nodes
Các phiên bản MySQL mới hơn đi kèm với chứng chỉ tự ký và kích hoạt SSL. Mặt khác, nếu bạn muốn thêm một lớp bảo mật khác, bạn có thể muốn sử dụng các chứng chỉ của riêng mình, ClusterControl cho phép bạn thay đổi chứng chỉ SSL. Trong blog này, chúng tôi đã giải thích cách thực hiện việc này bằng ClusterControl.
Kích hoạt SSL trên máy khách
MySQL thực hiện mã hóa trên cơ sở mỗi kết nối và việc sử dụng mã hóa cho một người dùng nhất định có thể là tùy chọn hoặc bắt buộc. Để kết nối với các nút mysql thông qua SSL, hãy đảm bảo bạn đã thiết lập quyền của người dùng với cú pháp "YÊU CẦU SSL", tương tự như bên dưới:
mysql> create user 'app_user'@'192.168.%.%' identified by '[email protected]' REQUIRE SSL;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to 'app_user'@'192.168.%.%';
Query OK, 0 rows affected (0.00 sec)
Điều này cho phép bạn chọn kết nối được mã hóa hoặc không được mã hóa tùy theo yêu cầu của từng ứng dụng.
Để đảm bảo rằng các máy khách được yêu cầu sử dụng các kết nối được mã hóa, chúng ta cần bật tham số "request_secure_transport" trong tệp my.cnf. Theo mặc định, thông số này là TẮT.
Xác minh kết nối DB
Theo mặc định, máy khách mysql cố gắng thiết lập một kết nối được mã hóa nếu máy chủ hỗ trợ các kết nối được mã hóa, với khả năng kiểm soát thêm thông qua tùy chọn --ssl-mode, chẳng hạn như
[[email protected] vagrant]# mysql -u app_user -p -h 192.168.xx.xx -P3306 --ssl=1 -e "status;" | grep -i SSL
SSL: Cipher in use is ECDHE-RSA-AES256-GCM-SHA384
Giao thức SSL sử dụng các thuật toán mã hóa khác nhau để đảm bảo dữ liệu nhận được qua mạng công cộng và mạng riêng. Nó có các cơ chế để phát hiện bất kỳ thay đổi hoặc mất mát dữ liệu nào.
[[email protected] vagrant]# mysql -u app_user -p -h 192.168.xx.xx -P3306 --ssl=1
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 12656
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> SHOW SESSION STATUS LIKE 'Ssl_cipher';
+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| Ssl_cipher | ECDHE-RSA-AES256-GCM-SHA384 |
+---------------+-----------------------------+
1 row in set (0.00 sec)
MySQL [(none)]> show status like 'Ssl_version';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| Ssl_version | TLSv1.2 |
+---------------+---------+
1 row in set (0.00 sec)
Kết luận
Mã hóa kết nối cơ sở dữ liệu không phải và không nên là một vấn đề lớn, nó được thực hiện theo mặc định trong một số phiên bản MySQL mới hơn. Khi bảo mật cơ sở dữ liệu ngày càng trở thành mối quan tâm kinh doanh và quy định, có rất nhiều điều phải suy nghĩ ngoài việc chỉ mã hóa dữ liệu trong quá trình truyền tải để bảo mật môi trường đám mây lai của bạn. Điều quan trọng cần lưu ý là các lớp bảo mật khác được áp dụng khi lưu trữ cơ sở dữ liệu, chẳng hạn như bảo mật mạng và hệ điều hành.