Mongodb uri với tên người dùng và mật khẩu

Các hướng dẫn này dành cho Oracle Linux 7. Các lệnh cho các bản phân phối khác sẽ khác. Đầu tiên cài đặt và khởi động MongoDB

Cài đặt

sudo tee /etc/yum.repos.d/mongodb-org-4.0.repo << EOF
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF

sudo yum -y install mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod

Sau đó, tạo người dùng

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
0 bằng cách kết nối lần đầu với mongo cli. Sau khi kết nối, hãy chuyển sang cơ sở dữ liệu
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
0 và chạy lệnh tạo người dùng. Thay đổi
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
2 bên dưới thành mật khẩu ngẫu nhiên an toàn

Tạo quản trị viên

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);

Sau khi người dùng đã được tạo, hãy chỉnh sửa cấu hình MongoDB để bật ủy quyền. Phần lưới nên được thay thế bằng phần bên dưới

Vỏ bọc

sudo nano /etc/mongod.conf
security:
  authorization: enabled

Tạo người dùng Pritunl

Sau đó, tạo người dùng

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
3 cho cơ sở dữ liệu
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
4 trong cơ sở dữ liệu
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
0. Trước tiên, hãy kết nối với mongo cli bằng tài khoản quản trị viên, sau đó chuyển sang cơ sở dữ liệu
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
0. Thay đổi
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
2 bên dưới thành mật khẩu ngẫu nhiên an toàn. Khi xác thực từ các công cụ mongo cli, hãy sử dụng
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
3

Nếu cấu hình Pritunl Zero hoặc Pritunl Cloud, hãy cập nhật tên của cơ sở dữ liệu bên dưới

Tạo người dùng

mongo --host subnet.domain.com -u admin --authenticationDatabase admin

use admin;
db.createUser({
  user: "pritunl",
  pwd: "PASSWORD",
  roles: [{role: "dbOwner", db: "pritunl"}]
});

Kiểm tra công dụng mới bằng lệnh bên dưới

người dùng thử nghiệm

mongo --host mongo-test.silicon.red -u pritunl --authenticationDatabase admin pritunl

Kết nối với MongoDB

Khi định cấu hình Pritunl, tùy chọn tên người dùng, mật khẩu và ssl phải được thêm vào uri MongoDB. Chẳng hạn như

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
4 Nếu định cấu hình Pritunl Zero hoặc Pritunl Cloud, hãy cập nhật tên của cơ sở dữ liệu

Cơ sở dữ liệu xác thực

Nếu người dùng xác thực ở trên cơ sở dữ liệu khác, tham số

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
5 phải được đưa vào uri MongoDB. Chẳng hạn như
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
4

Trong các bài đăng trên blog trước đây, chúng tôi đã thấy sự tinh tế của việc thu hồi và độ chính xác khi phát hiện các bí mật trong mã nguồn. Chúng tôi cũng trình bày chi tiết về triết lý động cơ của GitGuardian. Hôm nay, chúng tôi muốn chia sẻ cách nhóm nghiên cứu của chúng tôi, Nhóm bí mật,  phát triển và tinh chỉnh trình phát hiện tại GitGuardian

Để minh họa cho bài viết này, chúng tôi sẽ lấy trường hợp thông tin đăng nhập MongoDB. MongoDB là một cơ sở dữ liệu định hướng tài liệu không có SQL rất phổ biến… và nổi tiếng là bị rò rỉ… Công cụ phát hiện thời gian thực của chúng tôi liên tục quét các sự kiện công khai trên GitHub và đưa ra hơn 3.000 cảnh báo mỗi tuần liên quan đến thông tin đăng nhập MongoDB được tìm thấy trong mã nguồn. Hãy xem cách chúng tôi đạt được điều này

Định nghĩa bài văn

PHÁT HIỆN ĐA TRẬN

Để kết nối với cơ sở dữ liệu MongoDB, cần có tên máy chủ để xác định máy chủ và cặp tên người dùng và mật khẩu được sử dụng để xác thực. Mặc dù chỉ riêng mật khẩu bị rò rỉ đã là một mối đe dọa, nhưng chỉ nên đưa ra cảnh báo khi chúng tôi tìm thấy một bí mật hoàn chỉnh được tạo ra từ ba kết quả trùng khớp này

Khả năng phát hiện các bí mật "nhiều khớp" như vậy là một trong nhiều điều làm nên sự khác biệt của công cụ phát hiện GitGuardian. Làm việc trên các bí mật đa đối sánh là một cơ hội tốt để cải thiện độ chính xác tổng thể của thuật toán vì chỉ hoàn thành do đó rò rỉ nghiêm trọng sẽ đưa ra cảnh báo. Đây cũng là một cách để giảm sự mệt mỏi khi cảnh báo vì các trận đấu sẽ được nhóm một cách thông minh dưới một cảnh báo nhất quán duy nhất thay vì nhân các cảnh báo cho từng phần của cùng một bí mật

Tuy nhiên, điều này đòi hỏi một công cụ phát hiện rất hiệu quả và có thể tùy chỉnh vì sự kết hợp của các kết quả phù hợp có thể nhanh chóng trở nên quá tải

HIỆU SUẤT ĐẦU TIÊN

Kể từ khi thành lập vào năm 2017, GitGuardian đã là một công ty định hướng dữ liệu. Chúng tôi đã liên tục quét nguồn cấp dữ liệu trực tiếp của các sự kiện GitHub trong hơn 3 năm, tức là quét hơn 10 triệu tài liệu mỗi ngày với thời gian trung bình để phát hiện là vài giây. Đó là lý do tại sao chúng tôi bị ám ảnh bởi hiệu suất của công cụ phát hiện của chúng tôi

CHÍNH XÁC VÀ GHI LẠI

Để đạt được hiệu quả phát hiện, chúng tôi mong muốn.

  • Phát hiện càng nhiều thông tin đăng nhập MongoDB càng tốt. Điều đó có nghĩa là, chúng tôi muốn thu hồi cao
  • Chỉ đưa ra cảnh báo khi chúng tôi chắc chắn rằng chúng tôi đã tìm thấy thông tin đăng nhập MongoDB. chúng tôi muốn có rất ít thông tin xác thực sai, chúng tôi cũng không muốn thấy các thông tin đăng nhập cơ sở dữ liệu khác như thông tin đăng nhập MySQL, MSSQL hoặc Redis trong kết quả của chúng tôi. Nói cách khác, chúng tôi muốn độ chính xác cao

PHƯƠNG PHÁP XÁC THỰC

Để tối đa hóa khả năng thu hồi của chúng tôi, chúng tôi xem xét ba mẫu xác thực MongoDB riêng biệt trong mã nguồn

  1. Trước hết, thông tin đăng nhập MongoDB có thể được lan truyền trong mã nguồn trong các phép gán biến
    DB_HOST="mongo.com"
    DB_PORT=5434
    DB_username="root"
    DB_password="m42ploz2wd"
    DB_NAME="paul"

2. Một phương thức xác thực phổ biến khác bao gồm sử dụng chuỗi kết nối URI được cung cấp cho trình điều khiển được sử dụng để kết nối với Mongo

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
0

3. Cuối cùng, kết nối với một phiên bản mongoDB cũng có thể được thực hiện thông qua Giao diện dòng lệnh mongo

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
1

Mỗi phương thức xác thực này đều có trình phát hiện riêng được sử dụng để xác định chúng. Hãy xem cách chúng tôi xây dựng những

xác nhận trước

Bất kể chúng ta sẽ làm việc với máy dò nào trong số ba máy dò này, một số viên gạch phổ biến có thể giúp đạt được khả năng phát hiện tuyệt vời. Khi phát triển một loại công cụ phát hiện mới, trước tiên, nhóm nghiên cứu của chúng tôi sẽ cố gắng xác định loại tài liệu chứa thông tin xác thực. Nói cách khác, chúng tôi muốn có thể nhanh chóng loại bỏ các tài liệu không bao giờ chứa bất kỳ thông tin đăng nhập MongoDB nào

Trong trường hợp cụ thể của chúng tôi, chúng tôi đã chọn hai tiêu chí

  • Một trên phần mở rộng tập tin. chúng tôi đã loại bỏ một số phần mở rộng tệp vì những tệp này được biết là không chứa thông tin xác thực. Ví dụ. . bảng phân cảnh,. css,. khóa tập tin
  • Một trên nội dung tập tin. chúng tôi đã loại bỏ các tệp không chứa từ “mongo” vì chúng tôi có thể suy luận một cách an toàn rằng không thể tìm thấy thông tin xác thực mongoDB ở đó

Loại chẩn đoán này có thể tăng tốc khả năng phát hiện của chúng tôi lên gấp 20 lần và loại bỏ nhiều kết quả dương tính giả. Đó là sự đánh đổi tốt khi chúng tôi đang xem nguồn cấp dữ liệu >100 tài liệu mỗi giây. Hãy bám vào cấu hình này cho ba loại xác thực mà chúng ta đang xem xét

Thông tin đăng nhập MongoDB trong các bài tập

Trong phần này, chúng tôi muốn phát triển một trình phát hiện để bắt máy chủ, tên người dùng và mật khẩu, tất cả đều được đặt trong cùng một tài liệu

Giới thiệu về Bài tập

Phép gán là bất kỳ cấu trúc mã nào trong đó một giá trị được gán cho một biến. GitGuardian đã phát triển một công cụ so khớp bài tập duy nhất có thể phát hiện nhiều loại bài tập khác nhau, bất kể chúng được viết bằng ngôn ngữ nào. Đây là một danh sách nhỏ các nhiệm vụ có thể chúng tôi sẽ phát hiện

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
2
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
3
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
4
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
5

máy dò rộng

Vì chúng tôi có thể phát hiện các mẫu này, hãy tinh chỉnh một chút và thêm một số ràng buộc để tạo phiên bản đầu tiên của trình phát hiện của chúng tôi

Đối với mỗi trận đấu (máy chủ, tên người dùng và mật khẩu), chúng tôi muốn biến được chỉ định có db hoặc cơ sở dữ liệu hoặc mongo làm tiền tố và máy chủ, tên người dùng hoặc mật khẩu làm hậu tố. Lưu ý rằng việc có db làm tiền tố là đủ để thông tin xác thực được coi là thông tin đăng nhập mongoDB vì “mongo” phải có trong nội dung tệp.
Biến cũng phải tuân theo biểu thức chính quy chuyên dụng.

  • Máy chủ phải là tên máy chủ thông thường hoặc địa chỉ IPv4. Chúng tôi sử dụng các phương pháp regex tiêu chuẩn cho việc này
  • Tên người dùng và mật khẩu có độ dài và bộ ký tự tùy chỉnh mà chúng tôi đã cẩn thận xác định là có liên quan bằng cách thử nghiệm các thuật toán của chúng tôi trên lịch sử GitHub

CHÚNG TÔI SẼ TRẬN GÌ

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
6

NHỮNG GÌ CHÚNG TÔI SẼ KHÔNG HỢP LỆ

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
7

Các cải tiến với bước xác thực sau

Tại thời điểm đó, mặc dù kết quả rất thú vị, chúng tôi muốn chọn thêm các bí mật bằng cách xóa một số giá trị. Hãy nhớ rằng cuối cùng, chúng tôi muốn xuất ra nhiều bí mật khớp được tạo từ sự kết hợp của tất cả máy chủ, tên người dùng và mật khẩu bị bắt. Để tránh bùng nổ tổ hợp, chúng tôi muốn loại bỏ các trận đấu không liên quan càng sớm càng tốt

Đối với điều này, nhóm kỹ thuật của GitGuardian đã đưa ra một loạt các trình xác thực bài đăng rất hiệu quả

Chẳng hạn, chúng tôi đã phát triển bước xác thực sau để loại bỏ mọi giá trị không liên quan phổ biến cho máy chủ lưu trữ. Nhờ quét trực tiếp luồng GitHub, chúng tôi có thể tự động điều chỉnh danh sách này dựa trên kết quả chúng tôi nhận được. Nó chứa nhiều giá trị vô dụng như. thí dụ. com, đồ giả. com,. mặc định, IP cục bộ và nhiều thứ khác. Chúng tôi áp dụng cùng một loại heuristic cho tên người dùng và mật khẩu đã khớp trước đó

Chúng tôi có thể cấm các giá trị tùy chỉnh khác khỏi kết quả. Chẳng hạn, trong khi chạy trình phát hiện hiện tại, chúng tôi đã thấy nhiều giá trị dương tính giả ở dạng sau

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
8

Do đó, config được thêm vào danh sách các giá trị của chúng tôi

Cuối cùng, chúng tôi cũng cấm các giá trị dựa trên entropy Shannon của chúng để loại bỏ một số trình giữ chỗ. Chẳng hạn, một

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
02 sẽ không có entropy đủ cao để được coi là một máy chủ hợp lệ. Ngưỡng sử dụng được xác định theo kinh nghiệm bằng cách kiểm tra thuật toán trong điều kiện thực tế

Khi các kết quả khớp chính xác cho máy chủ, tên người dùng và mật khẩu được thu thập, chúng tôi tính toán tất cả các kết hợp có thể có để có các ứng cử viên bí mật. Mặc dù chúng ta có thể dừng lại ở đây, nhưng GitGuardian có vũ khí cuối cùng để dọn dẹp mọi thứ và chỉ mang lại kết quả phù hợp nhất. Chúng tôi đã phát triển các chiến lược khác nhau để thu hẹp các ứng cử viên bí mật có thể có trong một tài liệu. Các chiến lược này có thể dựa trên khoảng cách giữa các kết quả phù hợp trong tài liệu, nhưng cũng có thể dựa trên sự giống nhau giữa các biến gán chẳng hạn

Nói cách khác, điều này tránh đưa ra cảnh báo khi chúng tôi tìm thấy máy chủ lưu trữ ở đầu tài liệu, tên người dùng ở giữa và mật khẩu ở cuối, vì ba giá trị này hầu như không liên quan đến cùng một tài nguyên. Hoặc, điều này cho phép loại bỏ một bí mật trong đó máy chủ được gán cho một

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
03, trong khi tên người dùng và mật khẩu được gán tương ứng cho
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
04 và
mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
05

Cuối cùng, máy dò này bắt được 30 bí mật mỗi tuần với độ chính xác rất cao. Nhờ các mô hình trực tiếp và vòng phản hồi của chúng tôi, chúng tôi có thể lặp lại nhanh chóng để tinh chỉnh kết quả

Thông tin đăng nhập MongoDB trong chuỗi kết nối URI

Mẫu URI

Loại xác thực thứ hai có vẻ rất phổ biến là sử dụng chuỗi kết nối URI để cung cấp máy chủ, tên người dùng và mật khẩu (và thậm chí cả cổng, cơ sở dữ liệu hoặc truy vấn) cho trình điều khiển

Vì định dạng chuỗi kết nối URI được chuẩn hóa cho MongoDB nên việc phát triển trình phát hiện khá đơn giản. Chúng tôi đang tìm kiếm một chuỗi có định dạng sau

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
00

Trong trường hợp của chúng tôi, lược đồ mà chúng tôi đang tìm kiếm thường được thêm vào trước bởi “mongodb” và biểu thức chính quy tổng thể đảm bảo mức độ tin cậy khá cao

xác thực sau

Không có bất kỳ bước xác thực nào, kết quả vẫn cần một chút công việc

  • 20% kết quả có mật khẩu bằng hoặc gần với “mật khẩu”

    mongo
    use admin;
    db.createUser(
      {
        user: "admin",
        pwd: "PASSWORD",
        roles: [
          "userAdminAnyDatabase",
          "dbAdminAnyDatabase",
          "readWriteAnyDatabase"
        ]
      }
    );
    
    06

  • Gần 10% giá trị được liên kết với “máy chủ cục bộ” hoặc IP cục bộ

    mongo
    use admin;
    db.createUser(
      {
        user: "admin",
        pwd: "PASSWORD",
        roles: [
          "userAdminAnyDatabase",
          "dbAdminAnyDatabase",
          "readWriteAnyDatabase"
        ]
      }
    );
    
    07

  • Và 2-3% chứa “xxx” hoặc các hình thức giữ chỗ khác

    mongo
    use admin;
    db.createUser(
      {
        user: "admin",
        pwd: "PASSWORD",
        roles: [
          "userAdminAnyDatabase",
          "dbAdminAnyDatabase",
          "readWriteAnyDatabase"
        ]
      }
    );
    
    08
    mongo
    use admin;
    db.createUser(
      {
        user: "admin",
        pwd: "PASSWORD",
        roles: [
          "userAdminAnyDatabase",
          "dbAdminAnyDatabase",
          "readWriteAnyDatabase"
        ]
      }
    );
    
    09
    mongo
    use admin;
    db.createUser(
      {
        user: "admin",
        pwd: "PASSWORD",
        roles: [
          "userAdminAnyDatabase",
          "dbAdminAnyDatabase",
          "readWriteAnyDatabase"
        ]
      }
    );
    
    10<

Do đó, chúng tôi giới thiệu bước PostValidation đặc biệt, theo cách tương tự như được trình bày cho nhiệm vụ mongo. Cuối cùng, trình phát hiện này khớp với hơn 2.950 thông tin đăng nhập MongoDB mỗi tuần, với độ chính xác cao

Thông tin đăng nhập MongoDB trong các lệnh shell

chi tiết vấn đề

Phương thức xác thực cuối cùng mà chúng tôi muốn giải quyết là kết nối với phiên bản mongoDB bằng giao diện dòng lệnh. Tất nhiên, chúng tôi biết rằng số lượng thông tin đăng nhập được tìm thấy bằng phương pháp này sẽ thấp hơn nhiều so với các phương pháp khác, vì việc gửi các lệnh shell vào kho lưu trữ git hơi hiếm

Tuy nhiên, nhìn vào tất cả GitHub trong suốt 3 năm dạy một số quy tắc cơ bản. một trong số đó có thể là. “mọi thứ xảy ra”. Hơn nữa, ngay cả khi việc triển khai này cải thiện khả năng thu hồi của chúng tôi bằng 0. 1%, chúng tôi muốn nó. Theo định nghĩa, GitGuardian xử lý các sự kiện hiếm gặp và chúng tôi không thể bỏ lỡ TP (True positive)

Để xử lý trình phát hiện CLI này, chúng tôi đã phát triển một loại trình phát hiện cụ thể có thể tìm kiếm một lệnh nhất định và nắm bắt tất cả các tùy chọn liên quan của nó

mongo
use admin;
db.createUser(
  {
    user: "admin",
    pwd: "PASSWORD",
    roles: [
      "userAdminAnyDatabase",
      "dbAdminAnyDatabase",
      "readWriteAnyDatabase"
    ]
  }
);
01

Về PostValidation, chúng tôi thực hiện theo các bước xác thực gần giống như đối với các trình phát hiện trước đó

Cuối cùng, trình phát hiện này khớp với một bộ thông tin xác thực mongoDB trung bình hai ngày một lần. Điều này có vẻ giống như một giọt nước trong đại dương… nhưng nó có thể là chất độc sẽ gây ra nhiều rắc rối… nên cũng có thể

Sự kết luận

Tóm lại, chúng tôi đã trình bày rất chi tiết cách thức hoạt động của máy dò và chúng tôi đã cho bạn thấy một phần trong bộ sưu tập công cụ phong phú của chúng tôi được sử dụng để đạt được khả năng phát hiện tốt nhất trên thị trường. Sự phát triển của các máy dò mới chủ yếu dựa trên hai nguyên tắc cốt lõi. Chúng tôi luôn lặp lại từ máy dò lớn đến máy dò chính xác bằng cách nhân các điểm chuẩn trên dữ liệu trong thế giới thực. Và chúng tôi liên tục cải thiện các thuật toán phát hiện của mình bằng cách theo dõi hiệu suất trực tiếp của chúng. Nhóm bí mật của chúng tôi đã tự hào đạt mốc 260 người phát hiện vài ngày trước, hãy xem danh sách tại đây

Làm cách nào tôi có thể nhận URI trong MongoDB?

Tìm URI MongoDB . Click on “Overview” tab in the menu bar. Cuộn xuống trang Tổng quan và bạn sẽ thấy thông tin URI MongoDB.

MongoDB kết nối với thông tin đăng nhập như thế nào?

Kích hoạt xác thực trên MongoDB .
Bắt đầu MongoDB mà không cần xác thực. .
Kết nối với máy chủ bằng vỏ mongo. .
Tạo quản trị viên người dùng. .
Bật xác thực trong tệp cấu hình mongodb. .
Kết nối và xác thực với tư cách là quản trị viên người dùng. .
Cuối cùng, tạo thêm người dùng nếu cần

Chuỗi kết nối MongoDB là gì?

Chuỗi kết nối MongoDB được định nghĩa là định dạng kết nối để tham gia máy chủ cơ sở dữ liệu MongoDB , chúng tôi sử dụng tên người dùng, tên máy chủ, mật khẩu và tham số cổng . Không có chuỗi kết nối thì không kết nối được với máy chủ cơ sở dữ liệu, chúng ta cần có chuỗi kết nối để kết nối máy chủ cơ sở dữ liệu.

Chuỗi kết nối MongoDB ở đâu?

Để lấy chuỗi kết nối cho một cụm Atlas. .
Điều hướng đến chế độ xem Cụm Atlas của bạn
Nhấp vào Kết nối cho cụm mong muốn của bạn
Nhấp vào Kết nối với MongoDB Compass
Sao chép chuỗi kết nối được cung cấp