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

Ghi nhật ký kiểm tra cho MongoDB

Một trong những khía cạnh bảo mật của việc quản lý cơ sở dữ liệu là hiểu ai đã truy cập cơ sở dữ liệu, khi nào và họ đã làm gì. Mặc dù chúng tôi đã bảo mật dịch vụ MongoDB, nhưng chúng tôi vẫn muốn biết ai đang làm gì và phát hiện xem có điều gì đó kỳ lạ hay không. Trong một cuộc điều tra vi phạm dữ liệu, nhật ký kiểm tra cho phép chúng tôi phân tích hoạt động lịch sử, hiểu kẻ tấn công đến từ điểm cuối nào và chúng đã thực hiện những thao tác gì khi ở bên trong cơ sở dữ liệu.

Trong blog này, chúng tôi sẽ xem xét việc ghi nhật ký kiểm tra cho MongoDB và việc triển khai.

Bật tính năng Đăng nhập Kiểm tra trong MongoDB

Để kích hoạt đăng nhập kiểm tra trong MongoDB, chúng ta cần truy cập tệp cấu hình mongod.conf, phần AuditLog:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson

Có 3 loại đích đến của nhật ký, đó là:tệp, nhật ký hệ thống và bảng điều khiển. Lý tưởng nhất là chúng tôi có thể gửi nhật ký kiểm tra tới một tệp, ở định dạng được hỗ trợ JSON hoặc BSON. Chúng tôi cũng có thể bật nhật ký kiểm tra trong quá trình khởi động dịch vụ MongoDB như được hiển thị bên dưới:

mongod --dbpath /var/lib/mongodb --auditDestination file --auditFormat BSON --auditPath /var/lib/mongodb/audit_mongodb.bson

Bộ lọc Kiểm tra trong MongoDB

Vẫn trong phần AuditLog, có một tham số gọi là bộ lọc. Chúng tôi có thể lọc kiểu hành động mà chúng tôi muốn ghi lại. Ví dụ:nếu chúng ta muốn ghi nhật ký xác thực vào một cơ sở dữ liệu cụ thể, chúng ta có thể sử dụng lệnh dưới đây:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: '{ atype: "authenticate", "param.db": "user_profile" }'

Nó sẽ theo dõi mọi xác thực đối với cơ sở dữ liệu user_profile. Một ví dụ khác:chúng tôi muốn theo dõi các hành động; thả chỉ mục, đổi tên bộ sưu tập và thả bộ sưu tập trong cơ sở dữ liệu user_profile. Lệnh sẽ là:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { atype: { $in: [ "dropIndex", "renameCollection", "dropCollection" ] }, "param.ns": /^user_profile\\./ } }

Chúng tôi cũng có thể theo dõi quá trình đánh giá cho các vai trò cụ thể, chúng tôi sẽ cần xác định các vai trò và cơ sở dữ liệu trong bộ lọc:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { roles: { role: "readWrite", db: "user_profile" } }

Nó sẽ ghi lại mọi hành động liên quan đến người dùng có vai trò readWrite trong cơ sở dữ liệu user_profile.

Để ghi nhật ký kiểm tra các hoạt động ghi và đọc, trước tiên chúng ta cần bật AuditAuthorizationSuccess trong MongoDB. Chúng ta có thể chạy lệnh dưới đây:

db.adminCommand( { setParameter: 1, auditAuthorizationSuccess: true } )

Hoặc một tùy chọn khác là thay đổi phần sau trong mongod.conf như bên dưới:

auditLog:
   destination: file
   format: BSON
   path: /var/lib/mongodb/audit_mongodb.bson
   filter: { roles: { role: "readWrite", db: "user_profile" } }
setParameter: { auditAuthorizationSuccess: true }

Máy chủ Percona cho MongoDB cung cấp miễn phí các tính năng ghi nhật ký kiểm tra, trong khi ở MongoDB, tính năng này chỉ có sẵn trong Phiên bản Doanh nghiệp. Xin lưu ý rằng việc bật tham số sẽ ảnh hưởng đến hiệu suất cơ sở dữ liệu MongoDB của bạn, đặc biệt là trong môi trường sản xuất.

Tiếp theo là gì?

Chúng tôi có thể gửi nhật ký kiểm tra MongoDB tới Hệ thống quản lý ghi nhật ký, ví dụ:ngăn xếp ELK (Elasticsearch, Logstash và Kibana) hoặc chúng tôi có thể sử dụng Hệ thống quản lý nhật ký từ nhà cung cấp cho mục đích phân tích.

Cách đơn giản nhất là sử dụng tiện ích jq tools trong môi trường Linux để đọc nhật ký ở định dạng JSON hoặc BSON.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để thực hiện các truy vấn không phân biệt chữ hoa chữ thường trên Mongodb?

  2. Làm cách nào để thêm id duy nhất hai cột vào mongodb trong ứng dụng sao băng?

  3. Hướng dẫn của nhà phát triển về bộ bản sao MongoDB

  4. Cách triển khai ClusterControl trên AWS để quản lý cơ sở dữ liệu đám mây của bạn

  5. Cách nhận cuộc gọi lại trên MongoDB collection.find ()