Cấu hình MongoDB bảo mật

Chúng tôi sẽ chỉ cho bạn năm tùy chọn cấu hình, cũng như các tùy chọn khác bắt buộc phải đi cùng với chúng, để triển khai MongoDB của bạn, giúp giữ an toàn cho dữ liệu của bạn trong khi vẫn cho phép người dùng và ứng dụng có quyền truy cập ít đặc quyền nhất sử dụng bằng các phương pháp xác thực hiện đại, . Các tùy chọn cấu hình này nằm trong các lĩnh vực bảo mật sau. xác thực, ủy quyền, mã hóa và kiểm tra

Tổng quan về bảo mật MongoDB

Bảo mật MongoDB bao gồm bốn lĩnh vực trọng tâm chính, xác thực (ai), ủy quyền (cái gì), mã hóa (như thế nào) và kiểm tra (khi nào). Phần này nhằm cung cấp cho bạn tổng quan cấp cao về các lĩnh vực trọng tâm bảo mật khác nhau cho MongoDB

Xác thực là cách bạn xác định chính mình với MongoDB. Có nhiều cách để xác thực bản thân với cơ sở dữ liệu MongoDB, từ tên người dùng và mật khẩu tiêu chuẩn bằng giao thức SCRAM (Cơ chế xác thực phản hồi thử thách muối), xác thực dựa trên chứng chỉ để liên kết với một giải pháp quản lý danh tính như LDAP (Giao thức truy cập thư mục nhẹ),

Ủy quyền là cách MongoDB xác định bạn, với tư cách là người dùng được xác thực, có thể làm gì. MongoDB hỗ trợ ủy quyền bằng phương pháp RBAC (Kiểm soát truy cập dựa trên vai trò). MongoDB cho phép bạn tạo các vai trò là nhóm các đặc quyền mà bất kỳ người dùng nào được cấp vai trò đó đều có thể thực hiện. MongoDB đi kèm với một bộ vai trò tích hợp toàn diện cũng như mang đến cho bạn sự linh hoạt để tạo các vai trò tùy chỉnh của riêng bạn. Tất nhiên, các vai trò phổ biến như chỉ đọc và ghi, nhưng cũng có những vai trò hữu ích để theo dõi bất kỳ nút nào, sao lưu và khôi phục cũng như quản trị người dùng. Ngoài ra, MongoDB cũng hỗ trợ ủy quyền LDAP cho phép bạn đồng bộ hóa các nhóm LDAP với các vai trò để đơn giản hóa việc quản lý

Mã hóa là cách dữ liệu của bạn có thể được mã hóa khi đang bay (Vận chuyển) và khi ở trên đĩa (Đang nghỉ ngơi). Mã hóa vận chuyển giữ cho dữ liệu của bạn được mã hóa trong khi dữ liệu được gửi đến và từ ứng dụng của bạn đến MongoDB. MongoDB hỗ trợ mã hóa TLS/SSL cho dữ liệu trong chuyến bay bằng cách sử dụng x. 509 Chứng chỉ và đây là ví dụ về thiết lập Mã hóa truyền tải. Mã hóa ở phần còn lại giữ cho dữ liệu của bạn an toàn khỏi một bên bên ngoài có thể nhận được bản sao các tệp dữ liệu của bạn vì chúng sẽ hoàn toàn không thể đọc được ở dạng mã hóa của chúng

Quá trình kiểm tra cho bạn biết thời điểm người dùng kết nối, thời điểm thay đổi đặc quyền, các sự kiện quản trị khác nhau, người dùng cố gắng thực hiện điều gì đó mà họ không nên làm, v.v. dựa trên tiêu chí bộ lọc bạn có thể đặt. Điều này hữu ích trong các tình huống tuân thủ khi bạn phải có khả năng hiển thị ai đã ở trên cơ sở dữ liệu vào thời điểm nào, họ có đặc quyền gì, khi nào đặc quyền được thay đổi, v.v.

Mẹo. Đừng nhầm lẫn giữa việc kiểm tra như một cách để theo dõi các hoạt động của người dùng trong thời gian thực, mà hãy coi đó là một cách để tạo một tệp nhật ký chỉ nối thêm, chống giả mạo mà bạn có thể quay lại để hiển thị những gì đang xảy ra và

Mẹo. Kiểm tra là một hoạt động tốn kém và sẽ ảnh hưởng đến hiệu suất, hãy đảm bảo rằng bạn đang nhận được giá trị từ nó và nhóm Tuân thủ CNTT của bạn có thể chủ động sử dụng nó trước khi thiết lập

Tùy chọn cấu hình

Vì vậy, trong khi biết các lĩnh vực quan trọng của Bảo mật MongoDB là rất tốt, làm cách nào để chúng tôi đảm bảo chúng được bật hoặc thiết lập chính xác? . Chúng tôi cũng sẽ liệt kê một số tùy chọn cấu hình bắt buộc sẽ hoạt động cùng với 5 tùy chọn cấu hình quan trọng nhất của chúng tôi để giữ an toàn cho dữ liệu của bạn. Chúng tôi sẽ chia các tùy chọn cấu hình này thành các khu vực trọng tâm bảo mật của chúng

MongoDB sử dụng tệp cấu hình ở định dạng tệp YAML. Tệp cấu hình thường được tìm thấy ở phần sau, tùy thuộc vào Hệ điều hành của bạn

FILE CẤU HÌNH MẶC ĐỊNH

  • Trên Linux, một /etc/mongod mặc định. conf được bao gồm khi sử dụng trình quản lý gói để cài đặt MongoDB
  • On Windows, a default /bin/mongod.cfg configuration file is included during the installation.
  • Trên macOS, mặc định /usr/local/etc/mongod. conf được bao gồm khi cài đặt từ vòi Homebrew chính thức của MongoDB

xác thực

Tùy chọn cấu hình đầu tiên của chúng tôi, , có lẽ là tùy chọn quan trọng nhất để kích hoạt bảo mật trên Triển khai MongoDB của bạn. Tùy chọn cấu hình này không chỉ thực thi MongoDB bằng cách sử dụng xác thực để người dùng ít nhất phải đăng nhập bằng thông tin đăng nhập mà còn đồng thời tham gia kiểm soát truy cập dựa trên vai trò giới hạn những gì người dùng có thể làm

Vỏ bọc

1

2

bảo mật.

  ủy quyền. đã bật

 

Mẹo. Nếu bạn thiết lập tùy chọn cấu hình này trước khi tạo người dùng trong MongoDB, bạn có thể sử dụng tùy chọn này để tạo người dùng đầu tiên của mình. Điều này đặc biệt hữu ích trong các trường hợp tự động hóa hoặc các tình huống khác mà bạn muốn tất cả các tùy chọn cấu hình của mình được định cấu hình chỉ một lần, sau đó truy cập và thêm người dùng

Có một số tùy chọn cấu hình xác thực khác được yêu cầu để triển khai MongoDB của bạn

  • bảo vệ. clusterAuthMode – Chế độ xác thực được sử dụng giữa các nút cụm bản sao hoặc cụm được phân đoạn để xác thực. Đây thường sẽ là keyFile hoặc x509. Các giá trị được chấp nhận là
    • keyFile – mặc định, chỉ chấp nhận keyfiles
    • x509 – chỉ sử dụng chứng chỉ x509 để xác thực cụm
    • sendKeyFile – chỉ được sử dụng khi chuyển từ keyFile sang xác thực chứng chỉ x509. Chấp nhận chứng chỉ keyFiles và x509
    • sendX509 – chỉ được sử dụng khi chuyển từ xác thực chứng chỉ x509 sang xác thực keyFile. Chấp nhận chứng chỉ x509 và keyFiles
  • bảo vệ. keyFile – đặt đích của keyFile nếu sử dụng xác thực dựa trên keyFile. Lưu ý rằng người dùng MongoDB đang chạy phải có quyền ở mức chỉ đọc hoặc đọc/ghi trên tệp khóa, không được cấp quyền cho người dùng khác

ủy quyền

Bảo vệ. tùy chọn cấu hình ủy quyền đã bật xác thực cũng là tùy chọn cấu hình quan trọng nhất để thiết lập ủy quyền vì nó cũng cung cấp cho chúng tôi các vai trò cho phép chúng tôi ủy quyền cho người dùng có các quyền cụ thể. Mặc dù có một số tùy chọn cấu hình ủy quyền cho hệ thống ủy quyền sẵn có, nhưng hầu hết các tùy chọn đều hữu ích để tích hợp LDAP hoặc các cơ chế xác thực bên ngoài khác với vai trò của bạn. Đọc thêm về cách thiết lập Ủy quyền LDAP, cũng như một bài đăng trên blog tuyệt vời thảo luận về cách thiết lập Ủy quyền LDAP

mã hóa

Mã hóa truyền tải đảm bảo rằng dữ liệu của bạn được mã hóa giữa ứng dụng của bạn và cơ sở dữ liệu, nó cũng có thể được sử dụng để mã hóa dữ liệu giữa các thành viên của bộ bản sao và cụm phân đoạn. Tùy chọn cấu hình quan trọng nhất ở đây là. Tùy chọn cấu hình này là mới trong MongoDB 4. 2, trước MongoDB 4. 2, tùy chọn cấu hình này được đặt tên. Tùy chọn cấu hình này quyết định mức độ nghiêm ngặt mà bạn muốn thực thi mã hóa TLS. Các tùy chọn cho tùy chọn cấu hình này là

  • Đã tắt - biểu thị rằng không có mã hóa nào
  • requireTLS – có nghĩa là tất cả lưu lượng truy cập, bất kể nguồn gốc, đều được mã hóa. requireTLS là cài đặt an toàn nhất cho tùy chọn cấu hình này
  • allowTLS – biểu thị rằng không có mã hóa đang diễn ra giữa các thành viên của bộ bản sao hoặc cụm phân đoạn, nhưng máy chủ DB sẽ chấp nhận cả lưu lượng được mã hóa và không được mã hóa từ máy chủ ứng dụng. Chỉ được sử dụng để chuyển đổi giữa bị vô hiệu hóa sang yêu cầuTLS theo kiểu khởi động lại cuốn chiếu
  • preferTLS – biểu thị rằng có sự mã hóa đang diễn ra giữa các thành viên của bộ bản sao hoặc cụm phân đoạn và máy chủ DB sẽ chấp nhận cả lưu lượng được mã hóa và không được mã hóa từ các máy chủ ứng dụng. Chỉ được sử dụng để chuyển đổi giữa bị vô hiệu hóa sang yêu cầuTLS theo kiểu khởi động lại cuốn chiếu

Vỏ bọc

1

2

3

mạng.

  tls.

    chế độ. yêu cầu TL

 

Các tùy chọn cấu hình cần thiết bổ sung cho mã hóa vận chuyển là

  • mạng lưới. tls. certificateKeyFile – vị trí của. pem với chứng chỉ và đó là chìa khóa được sử dụng cho các kết nối ứng dụng. Lưu ý rằng người dùng MongoDB đang chạy phải có quyền đọc trên tệp này
  • net. tls. clusterFile – vị trí của. tệp pem được sử dụng để mã hóa vận chuyển giữa bộ bản sao hoặc thành viên cụm. Lưu ý rằng người dùng MongoDB đang chạy phải có quyền đọc trên tệp này
  • mạng lưới. tls. CAFile – vị trí của. pem với chuỗi chứng chỉ gốc từ Tổ chức phát hành chứng chỉ. Lưu ý rằng người dùng MongoDB đang chạy phải có quyền đọc trên tệp này

đảm bảo rằng dữ liệu của bạn không thể bị đọc bởi người đánh cắp tệp dữ liệu của cơ sở dữ liệu của bạn trừ khi họ cũng đánh cắp khóa. Điều này ngăn ai đó đọc các tệp dữ liệu MongoDB của bạn ở cấp hệ thống tệp. Ở đây tùy chọn cấu hình quan trọng nhất là

Vỏ bọc

1

2

bảo mật.

   bật mã hóa. đúng

Các tùy chọn cấu hình cần thiết bổ sung cho Data At Rest Encryption là

  • bảo vệ. mã hóaCipherMode – hình thức mã hóa để sử dụng, các tùy chọn là AES256-CBC và AES256-GCM

Máy chủ Percona cho các tùy chọn cấu hình cụ thể của MongoDB

Máy chủ Percona dành cho MongoDB được tích hợp với HashiCorp Vault để quản lý bí mật cho Mã hóa dữ liệu của bạn khi nghỉ ngơi. Đọc và Sử dụng Vault để lưu trữ Khóa chính cho Mã hóa dữ liệu ở trạng thái nghỉ trên máy chủ Percona cho MongoDB

Các tùy chọn cấu hình quan trọng cho Tích hợp Vault là

  • bảo vệ. kho tiền. serverName – tên máy chủ mà máy chủ vault của bạn đang bật
  • Bảo vệ. kho tiền. port – cổng kết nối vault
  • bảo vệ. kho tiền. tokenFile – vị trí của tệp có mã thông báo vault
  • Bảo vệ. kho tiền. bí mật – vị trí cho các bí mật, vì chúng được thiết lập trên mỗi nút, nên điều này phải có một đặc điểm phân biệt chẳng hạn như tên nút trong đó
  • bảo vệ. kho tiền. serverCAFile – vị trí của CAFile (Cơ quan cấp chứng chỉ) trên nút mongodb cục bộ của bạn
  • bảo vệ. kho tiền. rotateMasterKey – chỉ được sử dụng để xoay phím chính

Dữ liệu cụ thể của doanh nghiệp MongoDB khi nghỉ tùy chọn cấu hình mã hóa

Hiện tại, MongoDB Enterprise không có Vault Integration for Encryption ngoại trừ trong MongoDB Atlas. MongoDB Enterprise hỗ trợ giao thức KMIP và bạn có thể tích hợp MongoDB với bất kỳ công cụ Quản lý khóa nào sử dụng giao thức KMIP. Tài liệu có thể được tìm thấy

Các tùy chọn cấu hình quan trọng để hỗ trợ Quản lý khóa thông qua giao thức KMIP là

  • bảo vệ. kmip. serverName – tên máy chủ nơi đặt công cụ Quản lý khóa của bạn
  • bảo vệ. kmip. cổng – cổng cho công cụ quản lý khóa của bạn
  • bảo vệ. kmip. serverCAfile – đường dẫn trên máy chủ MongoDB của tệp CA (Cơ quan cấp chứng chỉ) để kết nối an toàn với Công cụ quản lý khóa của bạn
  • bảo vệ. kmip. clientCertificateFile – đường dẫn đến chứng chỉ ứng dụng khách được sử dụng để xác thực với công cụ Quản lý khóa của bạn
  • bảo vệ. kmip. rotateMasterKey – chỉ được sử dụng để xoay phím chính

kiểm toán

Kiểm tra cho phép các nhóm Tuân thủ Bảo mật CNTT theo dõi và ghi nhật ký các hoạt động chạy trên cơ sở dữ liệu MongoDB. Có một số tùy chọn cấu hình kiểm tra quan trọng cho MongoDB,  là tùy chọn quan trọng nhất vì nó quyết định chính xác những gì bạn đang thiết lập trong nhật ký kiểm tra của mình

Vỏ bọc

1

2

Nhật ký kiểm tra.

  bộ lọc.   { <trường1>< . : <biểu thức1>, . . . }

 

Ví dụ: nếu chúng tôi chỉ muốn tạo mục nhập nhật ký kiểm tra mỗi khi ai đó tạo hoặc xóa bộ sưu tập, chúng tôi sẽ đặt Nhật ký kiểm toán. Lọc như vậy

Vỏ bọc

1

2

Nhật ký kiểm tra.

   bộ lọc. { loại. { $trong. [ "createCollection", "dropCollection" ] } }

 

Nếu chúng tôi muốn kiểm tra mọi người với một vai trò cụ thể, chúng tôi có thể đặt bộ lọc kiểm toán như vậy

Vỏ bọc

1

2

Nhật ký kiểm tra.

   bộ lọc. { vai trò. { vai trò. "readWrite", db. "appdb" } }

 

Các tùy chọn cấu hình cần thiết bổ sung để kiểm tra là

  • sổ ghi chép đánh giá. đích – liệu nhật ký kiểm tra sẽ được ghi vào tệp, vào bảng điều khiển hay nhật ký hệ thống
  • sổ ghi chép đánh giá. đường dẫn - nếu xuất ra một tệp, thư mục đích và tên tệp của nhật ký kiểm tra. Lưu ý rằng người dùng MongoDB chạy như phải có quyền đọc và ghi vào thư mục này
  • sổ ghi chép đánh giá. định dạng – định dạng mà nhật ký kiểm tra được xuất ra, các tùy chọn là JSON và BSON, với JSON là định dạng được sử dụng phổ biến hơn

Cuối cùng, mặc dù việc kiểm tra rất quan trọng để theo dõi và ghi nhật ký hoạt động trong cơ sở dữ liệu của bạn, bao gồm cả việc truy cập PII hoặc dữ liệu nhạy cảm khác, nhưng bạn không muốn để lộ PII trong quá trình kiểm tra hoặc các tệp nhật ký khác của mình. Để thực hiện điều này, bạn phải thiết lập chỉnh sửa nhật ký trên Bộ bản sao MongoDB hoặc Cụm phân đoạn. Tùy chọn cấu hình quan trọng để chỉnh sửa nhật ký là. Các giá trị được chấp nhận cho tùy chọn cấu hình này là đúng và sai

Vỏ bọc

1

2

bảo mật.

  xóa lại Dữ liệu ClientLog. đúng

Bản tóm tắt

Trong bài đăng trên blog này, chúng tôi đã xem qua năm tùy chọn cấu hình MongoDB quan trọng để đảm bảo bạn có một triển khai MongoDB an toàn hơn cũng như một số tùy chọn cấu hình khác giúp năm tùy chọn này giữ an toàn cho dữ liệu của bạn. Chúng tôi hy vọng rằng các tùy chọn cấu hình này sẽ giúp bạn xây dựng các triển khai MongoDB an toàn hơn và tránh trở thành một thống kê vi phạm dữ liệu. Cảm ơn vì đã đọc

Tài nguyên bổ sung

Năm vấn đề bảo mật hàng đầu của MongoDB

Bảo mật MongoDB Webinar


Tài nguyên mới nhất của chúng tôi, Sử dụng phần mềm nguồn mở để đảm bảo tính bảo mật của cơ sở dữ liệu MongoDB của bạn, tài liệu cách triển khai triển khai MongoDB an toàn, cấp doanh nghiệp mà không phải lo lắng về phí giấy phép, mang lại cho các tổ chức sự linh hoạt để triển khai các mô hình nhất quán trên toàn bộ cơ sở hạ tầng của họ

Làm cách nào để thiết lập bảo mật MongoDB?

Các phương pháp hay nhất về bảo mật MongoDB .
Mã hóa dữ liệu của bạn khi nghỉ ngơi. .
Bật kiểm soát truy cập và Sử dụng kiểm soát truy cập dựa trên vai trò (và nguyên tắc đặc quyền tối thiểu).
Kiểm tra hành động của người dùng. .
Xác thực người dùng. .
Mã hóa lưu lượng mạng. .
Sao lưu dữ liệu của bạn. .
Hoàn thành cập nhật thường xuyên. .
Giám sát mạng của bạn

Bảo mật mặc định của MongoDB là gì?

Mã hóa dữ liệu khi truyền—tất cả dữ liệu khi truyền trong MongoDB được mã hóa bằng cách sử dụng SSL/TLS theo mặc định.

Tính bảo mật của cơ sở dữ liệu MongoDB là gì?

Mã hóa đầu cuối . Mã hóa cho dữ liệu ở trạng thái lưu trữ được tự động sử dụng khối lượng lưu trữ được mã hóa.

Tệp cấu hình MongoDB ở đâu?

Tệp cấu hình MongoDB được đặt tại /opt/bitnami/mongodb/conf/mongodb. conf .