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

Cách sử dụng Mã hóa để Bảo vệ dữ liệu MongoDB

Với nhiều loại dữ liệu được lưu trữ trong cơ sở dữ liệu, đôi khi chúng tôi có thể xử lý dữ liệu bí mật, có thể bao gồm dữ liệu thẻ tín dụng, hồ sơ tài chính, thông tin cá nhân. Dữ liệu PII (Thông tin nhận dạng cá nhân) đó phải tuân theo quy định, ví dụ:PCI DSS, HIPAA hoặc GDPR mà chúng tôi cần bảo vệ và đảm bảo tính bí mật, tính toàn vẹn và tính khả dụng.

Mã hóa Dữ liệu là một phần của cấu trúc MongoDB để triển khai bảo mật trong môi trường sản xuất. Mục đích của mã hóa dữ liệu là bổ sung thêm nhiều biện pháp bảo vệ để bảo mật dữ liệu, đặc biệt là khỏi các mối đe dọa từ nội bộ. Chúng tôi khóa dịch vụ và các cổng của cơ sở dữ liệu, duy trì danh sách kiểm soát truy cập về những người có thể truy cập và thực hiện các thao tác nào vào cơ sở dữ liệu, đồng thời kích hoạt mã hóa để bảo vệ khỏi bị dò tìm trong quá trình truyền mạng hoặc khi dữ liệu được lưu trữ. Trong blog này, chúng ta sẽ thảo luận về cách sử dụng mã hóa trong MongoDB.

Mã hóa Dữ liệu khi Chuyển tuyến

Mã hóa dữ liệu khi chuyển tiếp đảm bảo dữ liệu MongoDB được bảo mật giữa các máy khách (tức là máy chủ ứng dụng) và máy chủ cơ sở dữ liệu và giữa các máy chủ cơ sở dữ liệu trong kiến ​​trúc MongoDB ReplicaSet hoặc ShardedCluster. MongoDB sử dụng chứng chỉ SSL / TLS, được tạo dưới dạng chứng chỉ tự ký hoặc chứng chỉ do Tổ chức phát hành chứng chỉ cấp.

Cách tốt nhất là sử dụng chứng chỉ từ tổ chức phát hành chứng chỉ vì nó sẽ cho phép trình điều khiển MongoDB kiểm tra máy chủ lưu trữ với Tổ chức phát hành chứng chỉ, điều đó có nghĩa là sẽ có xác nhận danh tính máy chủ để tránh bị xâm nhập -đánh công giữa. Bạn vẫn có thể sử dụng chứng chỉ tự ký trong một mạng đáng tin cậy.

Mã hóa SSL / TLS của MongoDB phải sử dụng mật mã TLS / SSL với tối thiểu khóa 128 bit. Bắt đầu từ phiên bản MongoDB 4.2 trở lên, có một tham số mới được gọi là net.tls. Nó cung cấp chức năng tương tự như net.ssl. Cấu hình trong tệp mongod.conf như hình dưới đây:

net:
   tls:
      mode: requireTLS
      certificateKeyFile: /etc/ssl/mongodb.pem

Trong khi nếu chúng ta muốn thêm Xác thực chứng chỉ ứng dụng khách, chúng ta chỉ cần thêm tham số CAFile như sau:

net:
         tls:
            mode: requireTLS
            certificateKeyFile: /etc/ssl/mongodb.pem
            CAFile: /etc/ssl/caClientCert.pem

Với cấu hình trên, kết nối MongoDB SSL / TLS yêu cầu chứng chỉ hợp lệ từ máy khách và máy khách phải chỉ định kết nối SSL / TLS và xuất trình tệp khóa chứng chỉ.

Trong cấu hình trên, chúng tôi sử dụng net.tls tồn tại trên MongoDB 4.2. Đối với phiên bản trên, chúng ta có thể sử dụng cấu hình net.ssl ​​như hình dưới đây:

net:
   ssl:
      mode: requireSSL
      PEMKeyFile: /etc/ssl/mongodb.pem

Và việc thêm Xác thực Chứng chỉ Máy khách cũng tương tự với cấu hình net.tls. Chỉ cần thêm tham số CAFile như hình dưới đây:

net:
   ssl:
      mode: requireSSL
      PEMKeyFile: /etc/ssl/mongodb.pem
      CAFile: /etc/ssl/caClientCert.pem

Mã hóa Dữ liệu lúc Nghỉ

Nói về mã hóa dữ liệu hoàn toàn, có một số phương pháp mã hóa dữ liệu MongoDB:

  • Mã hóa Công cụ Lưu trữ Cơ sở dữ liệu

MongoDB cung cấp mã hóa gốc trên công cụ lưu trữ WiredTiger. Việc mã hóa phần còn lại dữ liệu yêu cầu hai khóa bảo vệ cho dữ liệu, đó là khóa chính được sử dụng để mã hóa dữ liệu và khóa chính được sử dụng để mã hóa các khóa cơ sở dữ liệu. Mã hóa sử dụng Tiêu chuẩn mã hóa nâng cao AES256-CBC. Nó sử dụng các khóa không đối xứng là khóa tương tự để mã hóa và giải mã dữ liệu. Nó chỉ có sẵn trong Phiên bản Doanh nghiệp bắt đầu từ phiên bản 3.2 trở lên.

Máy chủ Percona cho MongoDB có tính năng mã hóa dữ liệu ở trạng thái nghỉ, đây là một phần của máy chủ nguồn mở, được giới thiệu từ phiên bản 3.6. Bản phát hành hiện tại không bao gồm Giao thức tương tác quản lý khóa (KMIP) hoặc Amazon KMS. Chúng tôi có thể sử dụng tệp khóa cục bộ hoặc máy chủ quản lý khóa của bên thứ ba, chẳng hạn như Hashicorp Vault.

Tham số trong Máy chủ Percona cho MongoDB liên quan đến mã hóa là Mã hóaCipherMode mà chúng ta có thể định cấu hình bằng cách chọn một trong các chế độ mật mã sau:

  • AES256-CBC

  • AES256-GCM

Mật mã mặc định là AES256-CBC nếu bạn không áp dụng một cách rõ ràng một trong những điều trên. Chúng tôi có thể bật mã hóa dữ liệu khi còn lại trên Máy chủ Percona mới để cài đặt MongoDB, nhưng nó không hỗ trợ các dịch vụ MongoDB hiện có.

  • Mã hóa Ổ đĩa / Bộ nhớ

Mã hóa lưu trữ là mã hóa phương tiện lưu trữ. Chúng tôi có thể sử dụng mã hóa đĩa dựa trên Linux như LUKS để mã hóa khối lượng dữ liệu của đĩa hoặc nếu chúng tôi sử dụng môi trường đám mây, có thể có tùy chọn mã hóa. Ví dụ:trong AWS, có thể có bộ nhớ khối được mã hóa cũng như bộ lưu trữ S3.

  • Mã hóa dựa trên API

Mã hóa dựa trên API sử dụng phần mềm mã hóa của bên thứ ba hoặc ứng dụng cung cấp thuật toán để mã hóa dữ liệu trước khi được lưu trữ trong cơ sở dữ liệu MongoDB. Toàn bộ quá trình được xử lý bởi lớp ứng dụng.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. SQL RPAD ()

  2. Mongodb Aggregation framework có nhanh hơn map / Reduce không?

  3. Mongo DB Java 3.x Driver - Group By Query

  4. Biến tổng hợp MongoDB NOW

  5. Phân tích các truy vấn chậm trong MongoDB