Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Bảo mật cơ sở dữ liệu 101:Bảo mật trong cơ sở dữ liệu nguồn mở

Bảo mật dữ liệu là một trong những khía cạnh quan trọng nhất của việc quản trị cơ sở dữ liệu. Tùy thuộc vào cơ cấu tổ chức, nếu bạn đang quản lý cơ sở dữ liệu sản xuất, bạn phải giám sát việc truy cập và sử dụng trái phép. Điều này cũng áp dụng cho máy chủ lưu trữ bên dưới. Trong blog này, chúng tôi sẽ giải thích về bảo mật trong cơ sở dữ liệu nguồn mở.

An ninh Chung

Sau khi cài đặt phần mềm cơ sở dữ liệu, chúng ta cần thực hiện một số kiểm tra trước để tránh những lỗi bảo mật phổ biến nhất.

Các nguyên tắc chung như sau:

  • Đừng bao giờ cấp quyền truy cập root / admin cho người khác! Đây là điều quan trọng.

  • Tìm hiểu cách hoạt động của hệ thống đặc quyền truy cập cơ sở dữ liệu. Không cấp nhiều đặc quyền hơn mức cần thiết. Không bao giờ cấp đặc quyền cho tất cả các máy chủ.

  • Không lưu trữ mật khẩu văn bản rõ ràng trong cơ sở dữ liệu của bạn. Thay vì sử dụng SHA2 () hoặc một số hàm băm một chiều khác và lưu trữ giá trị băm.

  • Không sử dụng các cổng mặc định và đảm bảo rằng cổng đã chọn không thể truy cập được từ máy chủ không đáng tin cậy.

  • Đặt cơ sở dữ liệu nguồn mở sau tường lửa. Điều này bảo vệ bạn khỏi ít nhất 50% tất cả các kiểu khai thác trong bất kỳ phần mềm nào.

Kiểm soát Truy cập và Quản lý Tài khoản

Một trong những chức năng chính của cơ sở dữ liệu là xác thực người dùng kết nối từ một máy chủ nhất định và liên kết người dùng đó với các đặc quyền trên cơ sở dữ liệu. Để kiểm soát người dùng nào có thể kết nối, mỗi tài khoản có thể được chỉ định thông tin xác thực chẳng hạn như mật khẩu.

Vai trò của Người dùng

Vai trò cơ sở dữ liệu là tập hợp bất kỳ số đặc quyền nào có thể được gán cho một hoặc nhiều người dùng. Trong cơ sở dữ liệu nguồn mở hiện đại, phần lớn người dùng có các vai trò được xác định trước.

Quản lý mật khẩu

Việc truy cập cơ sở dữ liệu yêu cầu người dùng của họ xác thực bằng tên người dùng và mật khẩu. Cơ sở dữ liệu áp dụng cùng một hàm băm trên mật khẩu mà người dùng đã nhập và so sánh nó với hàm băm được lưu trữ trong cơ sở dữ liệu. Nếu cả hai đều khớp, thì quyền sẽ được cấp. Mật khẩu hết hạn là bắt buộc đối với tất cả người dùng cơ sở dữ liệu để thay đổi mật khẩu định kỳ. Và tạo mật khẩu ngẫu nhiên là bắt buộc đối với mật khẩu theo nghĩa đen được chỉ định của quản trị viên rõ ràng. Một điều quan trọng cần theo dõi là theo dõi sai mật khẩu / lỗi xác thực, bạn nên bật khóa tài khoản tạm thời sau quá nhiều lần đăng nhập sai mật khẩu liên tiếp.

Xử lý Mật khẩu Hết hạn

Khi mật khẩu hết hạn, máy chủ cơ sở dữ liệu sẽ ngắt kết nối ứng dụng khách có mật khẩu đã hết hạn.

Ví dụ
[[email protected] vagrant]# mysql -u severalnies -p
Password: ******
ERROR 1862 (HY000): Your password has expired. To log in you must
change it using a client that supports expired passwords.

Giới hạn Tài nguyên

Hạn chế khách hàng sử dụng tài nguyên máy chủ cơ sở dữ liệu, bằng cách giới hạn số lượng kết nối đồng thời có thể được thực hiện bởi bất kỳ tài khoản người dùng nào. Ví dụ:chúng tôi có thể hạn chế số lượng truy vấn mà người dùng có thể thực hiện mỗi giờ hoặc số lần người dùng có thể kết nối với máy chủ mỗi giờ.

Kết nối được Mã hóa

Cơ sở dữ liệu thường hỗ trợ các kết nối được mã hóa giữa máy khách và máy chủ bằng cách sử dụng một số giao thức bảo mật. Sử dụng SSL, nó sẽ mã hóa các kết nối giữa máy khách và máy chủ. Điều này biến dữ liệu thành một định dạng không thể đọc được trên lớp mạng và tránh bị nghe trộm mạng. Khi chúng tôi bật SSL trên cơ sở dữ liệu, nó sẽ bắt đầu hỗ trợ các kết nối được mã hóa và sẽ không cho phép các kết nối không được mã hóa.

Thành phần Bảo mật và Trình cắm

Các thành phần bảo mật được tích hợp dễ dàng với cơ sở dữ liệu. Ví dụ:mysql bao gồm một số thành phần và plugin triển khai các tính năng bảo mật.

Phần bổ trợ Xác thực - Các phần bổ trợ này được khách hàng cố gắng xác thực để kết nối với Máy chủ MySQL. Chúng tôi có thể dễ dàng tích hợp với máy chủ cơ sở dữ liệu của mình.

Password Plugin - Plugin này kiểm tra xem mật khẩu hiện tại có mạnh hay không và từ chối bất kỳ mật khẩu nào được coi là yếu.

Keyring plugin - Plugin này mã hóa không gian bảng. Kỹ thuật mã hóa này hoạt động trên cơ sở luân phiên các tệp khóa. Đây là một ví dụ về cách mã hóa MySQL 8.0.

Nhật ký kiểm toán - Kiểm toán là quá trình theo dõi và ghi lại hoạt động diễn ra trên máy chủ cơ sở dữ liệu. Nó được sử dụng để ghi lại ai đang làm gì, ví dụ:hoạt động cơ sở dữ liệu của người dùng, kết nối hoặc lần đăng nhập không thành công. Nếu bạn đang sử dụng bộ cân bằng tải để truy cập cơ sở dữ liệu, bạn cũng cần phải theo dõi điều đó. Theo mặc định, các tệp nhật ký kiểm tra được lưu trữ trong thư mục dữ liệu mysql.

Nhật ký Mẫu
20210306 02:30:06,centos14,root,localhost,519,1832,QUERY,,'select sleep(5)',0
20210306 02:30:08,centos14,s9smysqlchk,localhost,571,0,DISCONNECT,,,0
20210306 02:30:09,centos14,root,localhost,519,1867,QUERY,,'show schemas',0

Nếu bạn muốn lưu trữ các tệp nhật ký kiểm tra ở các vị trí khác nhau, bạn có thể thêm thông số này vào tệp cấu hình “server_audit_file_path” của mình.

Giám sát nhật ký - Giám sát nhật ký cung cấp cho nhóm hoạt động khả năng hiển thị cao hơn vào môi trường cơ sở dữ liệu, bao gồm các cá thể cơ sở dữ liệu cũng như các bộ cân bằng tải. Nó giúp xác định các điểm bất thường, khi những điểm bất thường này xảy ra và tần suất chúng xảy ra.

Plugin Xác thực Mật khẩu

Mật khẩu giống như một từ, số và chuỗi ký tự. Về phía cơ sở dữ liệu và máy chủ, tên người dùng và mật khẩu là cần thiết để truy cập nhất định. Ví dụ:nếu mật khẩu được cung cấp dưới dạng giá trị văn bản rõ ràng, plugin validate_password sẽ kiểm tra mật khẩu theo chính sách mật khẩu hiện tại và từ chối mật khẩu nếu mật khẩu yếu.

validate_password_policy có ba giá trị 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.

Trình cắm LDAP

Plugin LDAP cho phép Máy chủ cơ sở dữ liệu chấp nhận các kết nối từ người dùng được xác định trong thư mục LDAP. Trong xác thực LDAP, các plugin phía máy khách và phía máy chủ giao tiếp mật khẩu dưới dạng văn bản rõ ràng. Nên kết nối an toàn giữa máy khách và máy chủ để tránh bị lộ mật khẩu. Nếu tên người dùng máy khách và tên máy chủ không khớp, cơ sở dữ liệu sẽ từ chối kết nối.

Cấu hình LDAP rất đơn giản trong ClusterControl. Trong bài đăng này, chúng tôi đã giải thích các bước cấu hình bằng ClusterControl.

Bảo mật Sao lưu Cơ sở dữ liệu

Sao lưu dữ liệu rất quan trọng khi nói đến việc bảo vệ dữ liệu của bạn. Điều quan trọng hơn nữa là đảm bảo rằng các bản sao lưu của bạn được giữ an toàn và có sẵn để khôi phục nhanh hơn. ClusterControl cung cấp hỗ trợ toàn diện cho quá trình quản lý sao lưu, bao gồm mã hóa các tệp sao lưu bằng thuật toán mã hóa AES-256 trước khi gửi chúng ra bên ngoài.

VPN truy cập vào mạng máy chủ jump

Để truy cập cơ sở dữ liệu nguồn mở mạng riêng từ cục bộ, phương pháp tốt nhất là sử dụng VPN. VPN cung cấp quyền riêng tư và bảo mật cho người dùng để xây dựng kết nối mạng riêng tư trên mạng công cộng. Máy chủ nhảy là một máy chủ trung gian hoặc một cổng SSH để truy cập các máy chủ mạng từ xa. Máy chủ Jump hoạt động như một người trung gian để kết nối cả hai đầu, do đó làm cho nó trở thành một máy chủ "nhảy" để truy cập vào phía bên kia. Đây là một trong những cách phổ biến để bảo mật máy chủ khỏi thế giới bên ngoài. Chúng tôi có thể sử dụng đường hầm SSH để truy cập mạng từ xa một cách an toàn, tốn ít công sức hơn so với việc định cấu hình máy chủ VPN.

Quản lý Truy cập Cơ sở dữ liệu qua Máy chủ Jump

Để truy cập các máy chủ cơ sở dữ liệu sản xuất an toàn hơn, cần có một máy chủ nhảy chuyên dụng. Máy chủ nhảy chuyên dụng này cung cấp quyền truy cập vào mạng riêng từ mạng bên ngoài hoặc mạng công cộng, chẳng hạn như internet. Nó cung cấp một cách tiếp cận theo từng cấp độ cho bất kỳ người dùng nào truy cập vào mạng riêng của bạn, nó giảm thiểu khả năng bị tấn công máy chủ tiềm ẩn.

Làm cách nào để đạt được điều này?

Cách tốt nhất là thiết lập một máy chủ nhảy để kết nối với cơ sở dữ liệu của bạn từ một máy Linux, ngay cả khi phiên bản DB nằm trên một mạng riêng. Sau khi tạo máy chủ Jump, hãy làm theo các hướng dẫn bên dưới,

  • Hạn chế truy cập công khai trên cơ sở dữ liệu của bạn bằng các mạng con riêng tư.

  • Hạn chế cổng internet trong bảng định tuyến.

  • Tạo VPC mới hoặc thêm máy chủ lưu trữ nhảy của bạn vào cùng một VPC như phiên bản cơ sở dữ liệu của bạn. Sau đó, thêm một cổng internet vào máy chủ jump của bạn với các mạng con công cộng.

  • Chỉ cho phép các cổng cơ sở dữ liệu cụ thể đối với IP được yêu cầu.

Sau đó, chúng ta có thể tạo đường hầm SSH để truy cập máy chủ cơ sở dữ liệu một cách an toàn.

SELinux

SELinux là một tập hợp các sửa đổi hạt nhân và các công cụ không gian người dùng và nó có một số mô-đun chính sách. Các mô-đun chính sách là các ngữ cảnh SELinux để xác định các quy tắc về cách các quy trình, tệp, cổng và các đối tượng hệ thống khác tương tác với nhau. Tương tác giữa các đối tượng hệ thống chỉ được phép nếu quy tắc chính sách cho phép.

Người dùng hệ thống sẽ phần lớn không biết về SELinux. Chỉ quản trị viên hệ thống mới cần xem xét mức độ nghiêm ngặt của một chính sách để thực hiện cho môi trường máy chủ của họ. Chi tiết này cung cấp cho nhân SELinux khả năng kiểm soát chi tiết, hoàn chỉnh đối với toàn bộ hệ thống.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhân rộng đám mây lai cho MySQL để có tính khả dụng cao

  2. PDO ::fetchAll so với PDO ::tìm nạp trong một vòng lặp

  3. Đặt mật khẩu người dùng gốc MySQL trên OS X

  4. Trình kết nối Python MySQL - tìm thấy kết quả chưa đọc khi sử dụng fetchone

  5. Bạn không thể chỉ định bảng đích để cập nhật trong mệnh đề FROM