MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara menggunakan Enkripsi untuk Melindungi data MongoDB

Dengan berbagai jenis data yang disimpan dalam database, terkadang kita mungkin berurusan dengan data rahasia, yang mungkin mencakup data kartu kredit, catatan keuangan, informasi pribadi. Data PII (Personal Identifiable Information) tersebut tunduk pada peraturan, misalnya:PCI DSS, HIPAA, atau GDPR yang kami perlukan untuk melindungi dan memastikan kerahasiaan, integritas, dan ketersediaan.

Enkripsi Data adalah bagian dari perancangan MongoDB untuk implementasi keamanan di lingkungan produksi. Tujuan enkripsi data adalah menambahkan lebih banyak perlindungan untuk keamanan data, terutama dari ancaman orang dalam. Kami mengunci layanan dan port database, memelihara daftar kontrol akses siapa yang dapat mengakses dan melakukan operasi mana ke dalam database, dan mengaktifkan enkripsi untuk melindungi dari sniffing selama transmisi jaringan, atau saat data disimpan. Di blog ini, kita akan membahas cara menggunakan enkripsi di MongoDB.

Enkripsi Data saat Transit

Enkripsi Data dalam perjalanan memastikan data MongoDB diamankan antara klien (yaitu, server aplikasi) dan server database dan di antara server database dalam arsitektur MongoDB ReplicaSet atau ShardedCluster. MongoDB menggunakan sertifikat SSL/TLS, baik yang dihasilkan sebagai sertifikat yang ditandatangani sendiri atau sertifikat yang dikeluarkan oleh Otoritas Sertifikat.

Cara terbaik adalah dengan menggunakan sertifikat dari otoritas sertifikat, karena itu akan memungkinkan driver MongoDB untuk memeriksa host dengan Otoritas Sertifikat yang berarti akan ada validasi identitas server untuk menghindari man-in -serangan tengah. Anda masih dapat menggunakan sertifikat yang ditandatangani sendiri di jaringan tepercaya.

Enkripsi MongoDB SSL/TLS harus menggunakan cipher TLS/SSL dengan kunci minimal 128-bit. Mulai dari MongoDB versi 4.2 ke atas, ada parameter baru bernama net.tls. Ini menyediakan fungsionalitas yang sama seperti net.ssl. Konfigurasi pada file mongod.conf seperti di bawah ini:

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

Sedangkan jika kita ingin menambahkan Validasi Sertifikat Klien, kita hanya perlu menambahkan parameter CAFile sebagai berikut:

      

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

Dengan konfigurasi di atas, koneksi SSL/TLS MongoDB memerlukan sertifikat yang valid dari klien dan klien harus menentukan koneksi SSL/TLS dan menyajikan file kunci sertifikat.

 Pada konfigurasi di atas, kami menggunakan net.tls yang ada di MongoDB 4.2. Untuk versi di atas, kita bisa menggunakan konfigurasi net.ssl ​​seperti gambar di bawah ini:

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

Dan menambahkan Validasi Sertifikat Klien mirip dengan konfigurasi net.tls. Cukup tambahkan parameter CAFile seperti yang ditunjukkan di bawah ini:

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

Enkripsi Data saat Nonaktif

Berbicara tentang enkripsi data saat istirahat, ada beberapa metode enkripsi data MongoDB yaitu: 

  • Enkripsi Mesin Penyimpanan Basis Data

MongoDB menyediakan enkripsi asli pada mesin penyimpanan WiredTiger. Enkripsi data rest memerlukan dua kunci perlindungan untuk data, yaitu kunci master yang digunakan untuk mengenkripsi data dan kunci master yang digunakan untuk mengenkripsi kunci database. Enkripsi menggunakan Standar Enkripsi Lanjutan AES256-CBC. Ini menggunakan kunci asimetris yang merupakan kunci yang sama untuk mengenkripsi dan mendekripsi data. Ini hanya tersedia di Edisi Perusahaan mulai dari versi 3.2 dan di atasnya.

Percona Server untuk MongoDB memiliki enkripsi data saat istirahat yang datang sebagai bagian dari server open source, diperkenalkan dari versi 3.6. Rilis saat ini tidak termasuk Protokol Interoperabilitas Manajemen Kunci (KMIP) atau Amazon KMS. Kami dapat menggunakan file kunci lokal atau server manajemen kunci pihak ketiga seperti Hashicorp Vault.

Parameter di Percona Server untuk MongoDB yang terkait dengan enkripsi adalah EncryptionCipherMode yang dapat kita konfigurasikan dengan memilih salah satu mode cipher berikut:

  • AES256-CBC

  • AES256-GCM

Scipher default adalah AES256-CBC jika Anda tidak secara eksplisit menerapkan salah satu di atas. Kami dapat mengaktifkan enkripsi data saat istirahat di Server Percona baru untuk instalasi MongoDB, tetapi tidak mendukung layanan MongoDB yang ada.

  • Enkripsi Disk/Penyimpanan

Enkripsi penyimpanan adalah enkripsi media penyimpanan. Kita dapat menggunakan enkripsi disk berbasis Linux seperti LUKS untuk mengenkripsi volume data disk, atau jika kita menggunakan lingkungan cloud, mungkin ada opsi enkripsi. Misalnya, di AWS dimungkinkan untuk memiliki penyimpanan blok terenkripsi serta penyimpanan S3.

  • Enkripsi berbasis API

Enkripsi berbasis API menggunakan perangkat lunak enkripsi pihak ketiga atau aplikasi menyediakan algoritme untuk mengenkripsi data sebelum disimpan dalam database MongoDB. Seluruh proses ditangani oleh lapisan aplikasi.


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

  2. konversi tanggal iso ke stempel waktu dalam kueri mongo

  3. Perbarui Dokumen di MongoDB

  4. TypeError:db.collection bukan fungsi

  5. Bagaimana cara mengkonfigurasi cluster MongoDB yang mendukung sesi?