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

Cara Mengamankan Database Open Source Anda dengan ClusterControl

Keamanan adalah salah satu aspek terpenting dalam menjalankan database. Apakah Anda seorang pengembang atau DBA, jika Anda mengelola database, Anda bertanggung jawab untuk melindungi data Anda dan melindunginya dari segala jenis akses yang tidak sah. Fakta yang disayangkan adalah bahwa banyak organisasi tidak melindungi data mereka, seperti yang telah kita lihat dari gelombang baru serangan ransomware MongoDB pada September 2017. Sebelumnya, kami telah menerbitkan blog tentang cara mengamankan database MongoDB.

Dalam posting blog ini, kita akan melihat cara mengamankan database Anda menggunakan ClusterControl. Semua fitur yang dijelaskan di sini tersedia dalam versi 1.5.1 dari ClusterControl (dirilis pada 23 Desember 2017). Harap diperhatikan bahwa beberapa fitur hanya tersedia untuk tipe database tertentu.

Enkripsi Cadangan

ClusterControl 1.5.1 memperkenalkan fitur baru yang disebut enkripsi cadangan. Semua cadangan terenkripsi ditandai dengan ikon kunci di sebelahnya:

Anda dapat menggunakan fitur ini pada semua metode pencadangan (mysqldump, xtrabackup, mongodump, pg_dump) yang didukung oleh ClusterControl. Untuk mengaktifkan enkripsi, cukup aktifkan sakelar "Aktifkan Enkripsi" saat menjadwalkan atau membuat cadangan. ClusterControl secara otomatis menghasilkan kunci untuk mengenkripsi cadangan. Ini menggunakan algoritma enkripsi AES-256 (CBC) dan melakukan enkripsi on-the-fly di server target. Perintah berikut menunjukkan contoh bagaimana ClusterControl melakukan pencadangan mysqldump:

$ mysqldump --defaults-file=/etc/my.cnf --flush-privileges --hex-blob --opt --no-create-info --no-data --triggers --routines --events --single-transaction --skip-comments --skip-lock-tables --skip-add-locks --databases db1 | gzip -6 -c | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-094508-e0bc6ad658e88d93.tmp | socat - TCP4:192.168.55.170:9999'

Anda akan melihat kesalahan berikut jika Anda mencoba mendekompresi cadangan terenkripsi tanpa mendekripsi terlebih dahulu dengan kunci yang tepat:

$ gunzip mysqldump_2018-01-03_175727_data.sql.gz
gzip: mysqldump_2018-01-03_175727_data.sql.gz: not in gzip format

Kuncinya disimpan di dalam database ClusterControl, dan dapat diambil dari file cmon_backup.metadata untuk set cadangan tertentu. Ini akan digunakan oleh ClusterControl saat melakukan restorasi. Mengenkripsi cadangan sangat disarankan, terutama jika Anda ingin mengamankan cadangan di luar situs seperti mengarsipkannya di awan.

Enkripsi Server Klien MySQL/PostgreSQL

Selain mengikuti langkah-langkah keamanan yang disarankan selama penerapan, Anda dapat meningkatkan keandalan layanan database Anda dengan menggunakan enkripsi SSL server-klien. Menggunakan ClusterControl, Anda dapat melakukan operasi ini dengan titik dan klik sederhana:

Anda kemudian dapat mengambil kunci dan sertifikat yang dihasilkan langsung dari host ClusterControl di bawah /var/lib/cmon/ca jalur untuk membangun koneksi yang aman dengan klien database. Semua kunci dan sertifikat dapat dikelola langsung di bawah Manajemen Kunci, seperti yang dijelaskan lebih lanjut di bawah.

Enkripsi Replikasi Basis Data

Lalu lintas replikasi dalam Cluster Galera dapat diaktifkan hanya dengan satu klik. ClusterControl menggunakan kunci default 2048-bit dan sertifikat yang dihasilkan pada node ClusterControl, yang ditransfer ke semua node Galera:

Restart cluster diperlukan. ClusterControl akan melakukan operasi restart bergulir, mengambil satu node pada satu waktu. Anda akan melihat ikon kunci hijau di sebelah server database (Galera menunjukkan enkripsi Replikasi Galera, sementara SSL menunjukkan enkripsi client-server) di kisi Host pada halaman Ikhtisar setelah enkripsi diaktifkan:

Semua kunci dan sertifikat dapat dikelola langsung di bawah Manajemen Kunci, seperti yang dijelaskan lebih lanjut di bawah.

Manajemen Kunci

Semua kunci dan sertifikat yang dihasilkan dapat dikelola langsung dari UI ClusterControl. Manajemen Kunci memungkinkan Anda mengelola sertifikat dan kunci SSL yang dapat disediakan di kluster Anda:

Jika sertifikat telah kedaluwarsa, Anda cukup menggunakan UI untuk membuat sertifikat baru dengan kunci yang tepat dan Otoritas Sertifikat (CA), atau mengimpor kunci dan sertifikat yang ada ke host ClusterControl.

Penasihat Keamanan

Penasihat adalah program mini yang berjalan di ClusterControl. Mereka melakukan tugas tertentu dan memberikan saran tentang cara mengatasi masalah di berbagai bidang seperti kinerja, keamanan, manajemen log, konfigurasi, ruang penyimpanan, dan lainnya. Setiap penasihat dapat dijadwalkan seperti tugas cron, dan dijalankan sebagai executable mandiri dalam UI ClusterControl. Itu juga dapat dijalankan melalui klien baris perintah ClusterControl 's9s'.

ClusterControl memungkinkan dua penasihat keamanan untuk sistem berbasis MySQL:

  • Akses dari host mana pun ('%') - Mengidentifikasi semua pengguna yang menggunakan host wildcard dari tabel sistem mysql, dan memungkinkan Anda memiliki kontrol lebih besar atas host mana yang dapat terhubung ke server.
  • Periksa jumlah akun tanpa kata sandi - Mengidentifikasi semua pengguna yang tidak memiliki kata sandi di tabel sistem mysql.

Untuk MongoDB, kami memiliki penasihat berikut:

  • Otentikasi MongoDB diaktifkan - Periksa apakah instance MongoDB berjalan dengan mode otentikasi diaktifkan.
  • Pemeriksaan otorisasi - Periksa apakah pengguna MongoDB diotorisasi dengan peran yang terlalu permisif untuk kontrol akses.

Untuk detail lebih lanjut tentang bagaimana ClusterControl melakukan pemeriksaan keamanan, Anda dapat melihat kode sumber seperti JavaScript penasihat di bawah Kelola -> Developer Studio . Anda dapat melihat hasil eksekusi dari halaman Advisors:

Beberapa Antarmuka Jaringan

Memiliki beberapa NIC pada host database memungkinkan Anda untuk memisahkan lalu lintas database dari lalu lintas manajemen. Satu jaringan digunakan oleh node basis data untuk berkomunikasi satu sama lain, dan jaringan ini tidak terpapar ke jaringan publik mana pun. Jaringan lain digunakan oleh ClusterControl, untuk tujuan manajemen. ClusterControl dapat menerapkan pengaturan multi-jaringan semacam itu. Perhatikan diagram arsitektur berikut:

Untuk mengimpor cluster database di atas ke ClusterControl, seseorang akan menentukan alamat IP utama dari host database. Kemudian, dimungkinkan untuk memilih jaringan manajemen serta jaringan data:

ClusterControl juga dapat bekerja di lingkungan tanpa akses Internet, dengan basis data yang benar-benar terisolasi dari jaringan publik. Sebagian besar fitur akan bekerja dengan baik. Jika host ClusterControl dikonfigurasi dengan Internet, ia juga mampu mengkloning repositori vendor database untuk server database tanpa internet. Cukup buka Setelan (menu atas) -> Repositori -> Buat Repositori Baru dan atur opsi agar sesuai dengan lingkungan server basis data target:

Pencerminan mungkin memakan waktu sekitar 10 hingga 20 menit tergantung pada koneksi internet, Anda akan melihat item baru dalam daftar nanti. Anda kemudian dapat memilih repositori ini saat menskalakan atau men-deploy cluster baru, tanpa perlu host database memiliki koneksi Internet (perhatikan bahwa repositori offline sistem operasi juga harus ada).

Manajemen Pengguna MySQL

Sistem hak istimewa MySQL memastikan bahwa semua pengguna hanya dapat melakukan operasi yang diizinkan. Pemberian sangat penting karena Anda tidak ingin memberi semua pengguna akses lengkap ke database Anda, tetapi Anda memerlukan pengguna untuk memiliki izin yang diperlukan untuk menjalankan kueri dan melakukan tugas sehari-hari.

ClusterControl menyediakan antarmuka pengguna interaktif untuk mengelola skema dan hak istimewa database. Ini menyatukan akun di semua server MySQL di cluster dan menyederhanakan proses pemberian. Anda dapat dengan mudah memvisualisasikan pengguna database, sehingga Anda tidak membuat kesalahan.

Seperti yang Anda lihat pada tangkapan layar di atas, ClusterControl menghapus hak istimewa yang tidak perlu jika Anda hanya ingin memberikan pengguna ke database (shopdb). "Memerlukan SSL?" hanya diaktifkan jika enkripsi SSL klien/server diaktifkan sementara kotak centang hak istimewa administrasi dinonaktifkan sepenuhnya jika database tertentu ditentukan. Anda juga dapat memeriksa pernyataan GRANT yang dihasilkan di bagian bawah wizard, untuk melihat pernyataan yang akan dijalankan ClusterControl untuk membuat pengguna ini. Helper ini terlihat cukup sederhana, tetapi membuat pengguna dan memberikan hak istimewa bisa jadi rawan kesalahan.

ClusterControl juga menyediakan daftar pengguna yang tidak aktif untuk semua node database di cluster, memamerkan akun yang belum digunakan sejak server terakhir dihidupkan ulang:

Ini mengingatkan administrator untuk akun yang tidak perlu yang ada, dan yang berpotensi membahayakan server. Langkah selanjutnya adalah memverifikasi jika akun tidak lagi aktif, dan Anda cukup menggunakan opsi "Jatuhkan Pengguna yang Dipilih" untuk menghapusnya. Pastikan Anda memiliki aktivitas database yang cukup untuk memastikan daftar yang dihasilkan oleh ClusterControl akurat. Semakin lama waktu aktif server, semakin baik.

Selalu Tetap Terkini

Untuk penggunaan produksi, sangat disarankan bagi Anda untuk menginstal paket terkait database dari repositori vendor. Jangan mengandalkan repositori sistem operasi default, di mana paket biasanya sudah usang. Jika Anda menjalankan di lingkungan cluster seperti Galera Cluster, atau bahkan MySQL Replication, Anda selalu memiliki pilihan untuk menambal sistem dengan waktu henti yang minimal.

ClusterControl mendukung pemutakhiran versi minor otomatis untuk MySQL/MariaDB dengan satu klik. Cukup buka Kelola -> Peningkatan Versi -> Tingkatkan Versi dan pilih versi utama yang sesuai untuk cluster Anda yang sedang berjalan. ClusterControl kemudian akan melakukan upgrade, pada satu node pada satu waktu. Node akan dihentikan, kemudian perangkat lunak akan diperbarui, dan kemudian node akan dimulai lagi. Jika sebuah node gagal untuk mengupgrade, proses upgrade akan dibatalkan dan admin akan diberitahu. Peningkatan versi hanya boleh dilakukan jika lalu lintas di kluster sesedikit mungkin.

Peningkatan versi utama (misalnya, dari MySQL 5.6 ke MySQL 5.7) sengaja tidak otomatis. Pembaruan besar biasanya memerlukan penghapusan instalasi paket yang ada, yang merupakan tugas berisiko untuk diotomatisasi. Perencanaan dan pengujian yang cermat diperlukan untuk peningkatan semacam itu.

Keamanan basis data merupakan aspek penting dalam menjalankan basis data Anda dalam produksi. Dari semua kejadian yang sering kita baca di berita (dan mungkin masih banyak lagi yang tidak terpublikasi), jelas ada kelompok yang sibuk di luar sana dengan niat buruk. Jadi, pastikan database Anda terlindungi dengan baik.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara membatasi jumlah pembaruan dokumen di mongodb

  2. MongoDB $mod

  3. 10 platform hosting MongoDB terbaik

  4. Memperbarui array bersarang di mongoDB melalui mongo Shell

  5. MongoDB menambah bergabung dengan bidang koleksi dari basis satu