MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Các phương pháp hay nhất để bảo mật MongoDB

Khi nói đến quản lý hệ thống cơ sở dữ liệu, một khía cạnh quan trọng là bảo mật cơ sở dữ liệu. Việc không tạo được nền tảng tốt để bảo mật cho bất kỳ hệ thống cơ sở dữ liệu nào có thể dẫn đến vi phạm dữ liệu, theo đó kẻ xâm nhập bên thứ ba sẽ có quyền truy cập trái phép vào nó. Do đó, những sự kiện như thế này có thể dẫn đến tổn hại danh tiếng thương hiệu, tiền phạt và hình phạt do không tuân thủ, tài sản trí tuệ bị xâm phạm hoặc thậm chí dẫn đến việc đóng cửa doanh nghiệp.

MongoDB - cơ sở dữ liệu NoSQL phổ biến nhất - cung cấp một loạt các công cụ, kiểm soát và biện pháp được xây dựng để cung cấp nền tảng cho ba trụ cột của bảo mật thông tin - tính bảo mật, tính toàn vẹn và tính khả dụng. Bảo mật dữ liệu thường bị xâm phạm nhất ở cấp độ bảo mật do khả năng sử dụng và quyền truy cập lớn hơn.

Bạn nên bảo vệ những loại dữ liệu nào

Giống như các cơ sở dữ liệu khác, MongoDB liên quan đến hai loại dữ liệu:

  1. Dữ liệu ở trạng thái nghỉ - Đây là dữ liệu được lưu trữ trong đĩa hệ thống tệp.
  2. Dữ liệu đang chuyển tiếp - Điều này liên quan đến việc dữ liệu di chuyển qua mạng, chẳng hạn như giữa cơ sở dữ liệu và ứng dụng.

Để bảo vệ dữ liệu của bạn trong bất kỳ cơ sở dữ liệu nào, các biện pháp bảo mật của bạn phải giải quyết:

  • Dữ liệu trong các tệp cơ sở dữ liệu.
  • Các ứng dụng được liên kết với cơ sở dữ liệu.
  • Cơ sở hạ tầng mạng và máy tính được sử dụng để truy cập cơ sở dữ liệu.
  • Máy chủ cơ sở dữ liệu vật lý và phần cứng bên dưới.

Danh sách kiểm tra bảo mật MongoDB

Trước khi thiết lập triển khai sản xuất MongoDB, bạn cần xem xét tiêu chuẩn bảo mật tối thiểu để đảm bảo việc triển khai của bạn sẽ an toàn. Kiểm tra danh sách kiểm tra bảo mật MongoDB sau đây để

  1. Chỉ định cơ chế xác thực bằng cách bật kiểm soát truy cập . Trước khi cho phép truy cập vào cơ sở dữ liệu, điều cần thiết là phải xác minh danh tính người dùng. MongoDB hỗ trợ hai cơ chế trong trường hợp này:cơ chế đầu tiên là Cơ chế xác thực phản hồi thử thách Salted (SCRAM) là cơ chế xác thực mặc định trong MongoDB. Nó xác minh thông tin đăng nhập được cung cấp (tên người dùng và mật khẩu) dựa trên cơ sở dữ liệu xác thực và Xác thực chứng chỉ X.509 được sử dụng cho cả xác thực máy khách và xác thực nội bộ của các thành viên tập hợp bản sao và các cụm phân đoạn.

  2. Thiết lập kiểm soát truy cập dựa trên vai trò . Mọi ứng dụng hoặc người có quyền truy cập vào cơ sở dữ liệu phải có một danh tính duy nhất do quản trị viên người dùng tạo ra. Xác định các vai trò với các quyền truy cập chính xác và gán chúng cho những người dùng cần thực hiện các thao tác.

  3. Giao tiếp giữa mongod, mongos, ứng dụng và MongoDB phải được mã hóa . Mã hóa được thực hiện thông qua cấu hình TLS / SSL.

  4. Bảo vệ dữ liệu . Nếu sử dụng công cụ lưu trữ WiredTiger cho dữ liệu ở trạng thái nghỉ, bạn có thể mã hóa dữ liệu bằng cách sử dụng mã hóa ở chế độ nghỉ. Nếu sử dụng công cụ lưu trữ khác, hãy mã hóa dữ liệu bằng hệ thống tệp, mã hóa vật lý hoặc thiết bị và thêm các quyền đối với hệ thống tệp. Hơn nữa, bạn có thể mã hóa các trường trong tài liệu bằng mã hóa cấp Trường phía máy khách trước khi chuyển dữ liệu từ máy chủ.

  5. Mạng hoạt động an toàn . MongoDB phải chạy trên môi trường mạng đáng tin cậy để chỉ những máy khách đáng tin cậy mới có quyền truy cập vào giao diện mạng và các cổng. Bạn có thể đạt được điều này bằng cách vô hiệu hóa quyền truy cập root SSH trực tiếp và định cấu hình thiết lập với các nhóm bảo mật cho lưu lượng truy cập vào và ra đối với các phiên bản MongoDB.

  6. Hoạt động của hệ thống kiểm tra . Theo dõi các hoạt động truy cập của người dùng vào cơ sở dữ liệu là rất quan trọng. Việc kiểm toán cho phép quản trị viên thực hiện các biện pháp kiểm soát thích hợp và cho phép phân tích pháp y thích hợp. Một số cơ sở kiểm tra như MongoDB Enterprise cung cấp bộ lọc cho các sự kiện cụ thể như sự kiện xác thực để giảm dữ liệu cần được phân tích.

  7. Bật tùy chọn cấu hình an toàn khi chạy MongoDB . Nên hạn chế sử dụng mã JavaScript được MongoDB hỗ trợ như hàm mapReduce, $ where và $. Bạn có thể tắt hoàn toàn các tùy chọn này bằng cách sử dụng tùy chọn --noscripting. Xác thực các trường đầu vào bằng cách sử dụng các mô-đun như mongoose. Ngoài ra, bạn có thể sử dụng net.writeObjectCheck để đảm bảo tất cả các tài liệu được lưu trữ bởi phiên bản mongod là BSON hợp lệ.

  8. Chạy MongoDB với người dùng chuyên dụng . Không đáng để chạy MongoDB trên một hệ điều hành có thể được nhiều người dùng truy cập. Để an toàn, MongoDB phải được chạy bởi một tài khoản người dùng hệ thống chuyên dụng có quyền truy cập dữ liệu nhưng không phải là các quyền không cần thiết có thể ảnh hưởng đến tính toàn vẹn của dữ liệu.

Các phương pháp bảo mật MongoDB Kém cần tránh

Gần đây, sự gia tăng các vụ hack cơ sở dữ liệu, đặc biệt là MongoDB. Điều này không phải do MongoDB không đáp ứng các tiêu chuẩn để giải quyết các lo ngại về bảo mật mà là do các nhà phát triển không tuân theo các phương pháp bảo mật tốt nhất.

MongoDB là một DBMS mã nguồn mở, có nghĩa là một số nhà phát triển có thể biết thông tin chi tiết hơn những người khác. Điều này không phải lúc nào cũng có nghĩa là cơ sở dữ liệu của bạn có nguy cơ bị bên ngoài xâm nhập trừ khi bạn rơi vào bất kỳ lỗi nào sau đây:

  1. Sử dụng các cổng mặc định . Không có gì sai khi sử dụng các cổng mặc định (27017 và 27018), nhưng đôi khi bạn có thể quên đặt các nhóm bảo mật chịu trách nhiệm quản lý lưu lượng truy cập vào hệ thống của mình. Tin tặc sẽ luôn cố gắng truy cập cơ sở dữ liệu bằng các cổng mặc định trước khi thử một thứ gì đó khác. Bạn có thể chạy MongoDB trên một cổng khác với tùy chọn cổng, tức là $ mongo –port 23456. Tuy nhiên, cách được khuyến nghị là thay đổi cấu hình trong tệp /etc/mongod.conf bằng cách chỉnh sửa dòng bên dưới với số cổng ưa thích của bạn:

    net:
    	port:27017


    MongoDB, theo mặc định, chạy mà không cần xác thực, đây thường là một vấn đề đối với các triển khai mới đi vào sản xuất. Việc không kích hoạt xác thực có nghĩa là bất kỳ ai cũng có thể truy cập cơ sở dữ liệu một cách dễ dàng. Luôn tạo người dùng có quyền truy cập dựa trên vai trò để tương tác với cơ sở dữ liệu MongoDB.

  2. Lưu trữ thông tin đăng nhập người dùng không đúng cách . Một số nhà phát triển cố gắng mã hóa thông tin đăng nhập tên người dùng và mật khẩu vào dự án và khi họ đặt chúng ở chế độ công khai, bất kỳ ai cũng có thể truy cập vào chúng, do đó làm cho cơ sở dữ liệu dễ bị tấn công.

  3. Không giới hạn quyền truy cập cơ sở dữ liệu cho các thiết bị mạng đã biết . Trong trường hợp này, người ta nên luôn giới hạn quyền truy cập cơ sở dữ liệu để chỉ biết các ứng dụng và bộ cân bằng tải thông qua danh sách trắng. Điều này hạn chế tính khả dụng của cơ sở dữ liệu đối với các mạng không xác định có thể gây ra mối đe dọa bảo mật.

  4. Tránh sử dụng SSL . Xác thực SSL rất quan trọng trong việc đảm bảo rằng chỉ các kết nối đáng tin cậy mới đưa nó vào cơ sở dữ liệu.

  5. Không thể sử dụng LDAP để xoay mật khẩu . LDAP ràng buộc người dùng với một thư mục công ty để khi vai trò của họ thay đổi hoặc họ rời khỏi công ty, các thay đổi sẽ tự động áp dụng cho nhóm cơ sở dữ liệu. Điều này đảm bảo rằng quyền truy cập của họ vào dữ liệu sẽ bị giới hạn ở vai trò mà họ đã được giao lại hoặc bị giới hạn hoàn toàn nếu họ rời khỏi công ty.

Tăng cường cơ sở hạ tầng mạng

Nhiều lần, các mối đe dọa bảo mật bắt đầu ở cấp độ tiếp xúc mạng vì đây là phần dễ tiếp cận nhất đối với hầu hết các tin tặc. Bên cạnh việc đảm bảo chỉ các máy chủ đáng tin cậy mới có quyền truy cập vào MongoDB, bạn có thể tăng cường bảo mật thông qua việc tăng cường mạng. Việc tăng cường mạng lưới liên quan đến hai quy trình liên quan đến MongoDB:

  1. Tường lửa . Tường lửa được sử dụng để giới hạn lưu lượng đến từ các máy chủ không đáng tin cậy, nếu không sẽ khiến cơ sở dữ liệu MongoDB bị xâm nhập từ bên ngoài. Đối với hệ điều hành Windows, giao diện dòng lệnh netsh cung cấp quyền truy cập vào Tường lửa của Windows. Trên hệ thống Linux, giao diện iptables cung cấp quyền truy cập vào tường lửa netfilter bên dưới. Tường lửa sẽ lọc ra các máy chủ không đáng tin cậy và đảm bảo chỉ lưu lượng truy cập từ các nguồn đáng tin cậy mới có thể đến được mongod &mongos bên cạnh việc tạo kết nối với các đầu ra đáng tin cậy.

  2. Mạng riêng ảo (VPN) . VPN cho phép hai mạng liên kết qua một mạng tin cậy được mã hóa và truy cập hạn chế. Họ làm như vậy bằng cách cung cấp xác thực chứng chỉ và lựa chọn các giao thức mã hóa có thể yêu cầu mức độ xác thực nghiêm ngặt và nhận dạng của tất cả các khách hàng. VPN cung cấp một đường hầm an toàn; do đó, các kết nối được tạo đến phiên bản MongoDB bằng VPN có thể ngăn chặn các cuộc tấn công giả mạo và tấn công trung gian.

Kết thúc

Như với tất cả các cơ sở dữ liệu nguồn mở, bảo mật phải là ưu tiên hàng đầu cho cơ sở hạ tầng MongoDB của bạn. Triển khai cơ sở dữ liệu MongoDB của bạn với cài đặt mặc định là một con đường rõ ràng dẫn đến thảm họa bảo mật. Do đó, điều quan trọng là phải hiểu đầy đủ cách hoạt động của bảo mật trong MongoDB và tuân theo tất cả các phương pháp hay nhất để đảm bảo an ninh tối đa. Quan trọng nhất, kiểm tra các hoạt động của người dùng, chẳng hạn như xác thực, cung cấp một cơ hội để xác định các sơ hở và lập kế hoạch cho tương lai trước khi thảm họa xảy ra.

Các công cụ như ClusterControl giúp bạn loại bỏ phỏng đoán về bảo mật cơ sở dữ liệu và đảm bảo rằng các triển khai MongoDB của bạn sẽ luôn tuân theo mô hình bảo mật tương ứng. Với ClusterControl, bạn có thể dễ dàng định cấu hình cơ sở dữ liệu, kiểm soát truy cập và mã hóa cho dữ liệu ở trạng thái nghỉ và khi truyền. Nếu bạn chưa có, hãy tải xuống ClusterControl ngay hôm nay và bắt đầu dùng thử 30 ngày miễn phí để xem cách ClusterControl có thể giúp bạn quản lý và cải thiện tính bảo mật của cơ sở dữ liệu MongoDB.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Trường __v trong Mongoose là gì

  2. Lỗi khi nâng cấp Mongodb từ 3.2 lên 3.6

  3. Cách thả cơ sở dữ liệu trong MongoDB từ Dòng lệnh

  4. Cách xuất kết quả truy vấn MongoDB sang tệp JSON

  5. Làm cách nào để bạn triển khai ID chính tự động tăng dần trong MongoDB?