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

Keamanan Basis Data 101:Memahami Hak Istimewa Akses Basis Data

Data adalah emas baru bagi perusahaan dan organisasi besar Ini dianggap sebagai sumber kehidupan sebagian besar bisnis modern dan ada banyak sekali peluang untuk menjual atau memasarkan ke khalayak luas di internet. Untuk perusahaan e-commerce atau media sosial besar, data mendorong kapasitas mereka untuk menghasilkan pendapatan dan pendapatan besar yang datanya diamankan dengan ketat dan memiliki perlindungan canggih terhadap serangan berbahaya dan intrusi online.

Jadi data seperti emas, statusnya yang berharga dimulai setelah diproses. Nilai mentahnya penuh dengan kekacauan seolah-olah itu adalah camilan raksasa yang tidak disortir Setelah esensinya terstruktur, nilai data berlipat ganda. Bayangkan saja, jika Anda memiliki situs pendidikan yang memungkinkan penggunanya membayar. Setelah Anda memiliki banyak kuliah dan modul yang dapat dipelajari, dikembangkan, dan diperoleh oleh audiens target Anda, dan mendapatkan tingkat produktivitas, Anda telah memahami rasa peluang dan kesuksesan karena Anda memiliki pintu untuk mengatur biaya sebelum mereka bisa mendapatkan data terstruktur yang mereka inginkan . Meskipun ini terdengar seperti impian semua orang untuk sukses, jika menyangkut data besar dan esensi dasarnya, ada banyak kerumitan untuk memprosesnya dan yang terpenting adalah ancaman terhadap database Anda.

Ancaman basis data secara umum memiliki banyak sektor dan luas untuk dilihat dan diperiksa. Meskipun, penyebab paling umum adalah pencurian data dan pelanggaran data. Ancaman umum lainnya adalah hak istimewa yang ekstensif atau akses ke database yang salah ditetapkan dan/atau diberikan kepada pengguna. Melindungi seluruh host server merupakan masalah bagi siapa pun yang mengelola database. Perketat keamanan Anda dan atasi semua jenis serangan yang berlaku seperti penyadapan, pengubahan, pemutaran, dan penolakan layanan (DDoS) tidak hanya untuk database tetapi juga untuk seluruh tumpukan yang mendasarinya yang memiliki akses atau yang berinteraksi dengan penyimpanan data Anda.

Dalam blog ini, kita akan membahas sejauh mana kebutuhan mengapa Anda perlu memahami dan memiliki hak akses database.

Bahaya Hak Akses yang Salah

Kita mau tidak mau harus berbagi atau setidaknya membuat pengguna baik di tingkat fisik maupun teknis. Sementara, memberikan akses ke orang lain berarti Anda memercayai orang tersebut. Ini juga berarti orang yang berwenang harus memahami bahaya dan bahaya berbagi akses dan data dari dunia luar.

Poin terpenting dalam mengamankan hak akses Anda adalah tingkat pemahaman tentang keamanan antara teknisi Anda seperti administrator database, teknisi keamanan, atau administrator server. Jika pemahamannya buruk atau kurang pengetahuan dan pengalaman terutama tentang kerentanan dan eksposur terbaru, ini bisa menjadi masalah bagi organisasi atau perusahaan.

Ada hal-hal mendasar yang harus dipahami dan diperhitungkan agar minimal atau setidaknya tidak bisa diganggu atau diekspos. Jika tidak, ini dapat membahayakan data Anda dari dunia luar atau setidaknya kepada orang atau orang yang salah. Mungkin untuk mencuri data Anda dan menggunakannya untuk kepentingan mereka sendiri untuk mendapatkan keuntungan finansial atau mereka dapat menebusnya dari Anda dan meminta uang sebagai imbalan atas implementasi keamanan Anda yang buruk.

Di bagian ini, mari kita lihat beberapa penyebab umum dari ancaman keamanan ini.

Berbagi Hak Akses root

Untuk lingkungan lokal, kasus pelanggaran basis data yang biasa sebagian besar bergantung pada bahaya memberikan akses root baik di tingkat OS atau di tingkat perangkat lunak basis data. Ada kasus di mana kata sandi root didistribusikan dan diekspos ke beberapa orang yang seharusnya hanya terbatas pada administrator yang hanya bekerja pada sistem. Ini bisa terjadi karena kurangnya daftar periksa keamanan atau langkah-langkah dalam protokol sebelum menerapkan hak akses. Memiliki daftar periksa keamanan membantu melacak akses dan hak istimewa apa pun yang dapat mengekspos risiko dan bahaya terutama ketika pengguna OS tertentu terpapar penyusup. Daftar periksa juga membantu Anda mendiskusikan atau mendapatkan gambaran umum tentang langkah-langkah keamanan yang diterapkan dan diterapkan sebagai protokol untuk organisasi Anda.

Misalnya, pengguna yang memiliki akses root dapat melakukan banyak kerusakan seperti menghapus semua data Anda dari drive penyimpanan fisik Anda, menyetel ulang sandi root, membuat pengguna/sandinya sendiri yang terlihat seperti pengguna yang sah (dapat digunakan untuk waktu yang sangat lama untuk memanen data kecuali ditangkap lebih awal), sudo ke pengguna OS yang berbeda seperti pengguna postgres, dan banyak lagi hal yang menakutkan untuk dinikmati oleh penyusup.

Jika Anda menggunakan MongoDB, pengguna dengan akses root dapat login ke server database Anda. Selama penyusup dapat menemukan /etc/mongod.conf atau file konfigurasi mongodb Anda dan menemukan jalur kunci Anda, maka akan mudah untuk login. Misalnya, menggunakan perintah ini memungkinkan Anda untuk masuk,

[[email protected] ~]# mongo -u __system -p "$(tr -d '\011-\015\040' < /etc/mongo-cluster.key)" --authenticationDatabase local --eval "db.adminCommand( { listDatabases: 1, nameOnly:1 } )"

Pertimbangkan pengaturan instalasi normal MySQL, akses root dapat dibiarkan tanpa kata sandi untuk akses localhost. Sangat mudah untuk mendapatkan akses setelah Anda root. Akses file seperti $HOME/.my.cnf atau melihat konten /etc/my.cnf akan membuat Anda mendapatkan akses dengan mudah.

Sangat disarankan untuk membatasi saja atau hanya memberikan akses root y kepada paling sedikit orang yang bekerja secara langsung dengan server untuk memperbarui paket, pembaruan keamanan, dan menerapkan tambalan yang diperlukan oleh tim pengembangan.

Menggunakan sudoers dengan Benar

Perangkat lunak basis data sumber terbuka arus utama seperti PostgreSQL, MySQL/MariaDB, MongoDB memerlukan pembuatan pengguna OS tertentu. Pengguna OS memerlukan peran khusus yang terbatas untuk memungkinkan pengelolaan kemampuannya dalam fungsionalitas basis data. Izin baca dan tulis yang tepat perlu diatur untuk jalur perangkat penyimpanan yang mendasarinya. Namun, ada beberapa kasus yang menggunakan pengguna khusus ini untuk perangkat lunak basis data memiliki hak sudo yang juga mampu mengakses pengguna yang hanya ditujukan untuk akses basis data. Hak istimewa pengguna di OS harus dibatasi dan yang terbaik adalah membatasi aksesnya berdasarkan peran. Misalnya, untuk Percona Server CVE-2016-6664, meskipun telah diperbaiki, jenis kerentanan ini adalah contoh kemungkinan serangan dari pengguna tertentu yang memiliki akses ke akun MySQL dan mendapatkan akses root. Pengguna Sudo harus ditinjau dan dibuat untuk memahami bahwa perannya hanya terbatas untuk melakukan pekerjaan tertentu.

Mengaktifkan Sistem Audit Linux seperti auditd dapat membantu meningkatkan keamanan karena meningkatkan hak akses yang diabaikan pada tingkat OS yang dapat menyebabkan kerentanan keamanan database Anda. SELinux dan AppArmor adalah contoh yang baik dari modul keamanan untuk lingkungan Linux Anda yang menghosting sistem database Anda untuk membantu meningkatkan keamanan Anda terhadap penyusup atau pelanggaran yang akan menyebabkan data Anda terancam.

Memberikan Hak Akses Basis Data

Basis data sumber terbuka arus utama menawarkan daftar hak istimewa yang terperinci yang dapat disesuaikan untuk ditetapkan hanya pada tindakan tertentu untuk pengguna tertentu. Ini adalah cara ekstensif untuk membantu administrator basis data secara aman memiliki pemisahan data dan tindakan target berdasarkan hak istimewa tertentu.

Hak Akses Umum

Hak istimewa Anda yang paling umum digunakan harus didasarkan pada tiga kategori berikut:

  • Dapat Membaca/Menemukan seperti SELECT, SHOW VIEW, FIND

  • Dapat Menyisipkan/Memperbarui/Menghapus seperti INSERT, UPDATE, DELETE, REMOVE

  • Mampu melakukan tindakan administratif seperti CREATE USER, CREATE ROLE, ALTER, REPLICATION, DROP USER/TABLES/ SCHEMA, operasi pembunuhan, dll.

Kategori ini dapat diperluas menjadi hak istimewa yang lebih disempurnakan berdasarkan daftar periksa keamanan Anda. Adalah baik untuk mendefinisikan pengguna tertentu yang akan dibuat dengan hak khusus untuk tugas tertentu. Misalnya, sebuah aplikasi dapat memiliki banyak pengguna dengan hak istimewa yang ditetapkan sendiri. Padahal aplikasi bisa sekompleks dengan jenis implementasi ini. Ada kasus di mana konektivitas per pengguna dapat menjadi sumber daya intensif seperti menggunakan ORM seperti Hibernate, misalnya. Di sisi lain, itu tergantung pada desain arsitektur aplikasi Anda. Tujuan basis per pengguna dalam aplikasi dapat membantu mempertahankan hak akses database yang lebih halus dan menghindari kerusakan data Anda dari penghapusan, pembaruan, atau injeksi SQL yang tidak diinginkan yang menyerang database Anda.

Dalam kebanyakan kasus, aplikasi menggunakan satu pengguna untuk terhubung ke database yang hanya terbatas pada tindakannya khusus untuk menjalankan aplikasi. Sebaiknya Anda merancang hak istimewa pengguna aplikasi Anda hanya untuk akses baca-tulis. Sedangkan jika tindakan administratif diperlukan, skrip, daemon, atau modul tertentu dalam akses aplikasi Anda harus dipisahkan dari pengguna biasa.-.

Akses Basis Data Yang Harus Dihindari

PostgreSQL dan MySQL/MariaDB memiliki opsi ini untuk memberi pengguna menggunakan SEMUA hak istimewa. Untuk PostgreSQL, sebaiknya pengguna Anda juga menggunakan NOSUPERUSER. Jika memungkinkan, ini harus dihindari dengan segala cara. Hak istimewa ini dapat melakukan hampir semua tindakan yang berpotensi merusak atau membahayakan data berharga Anda. Anda dapat menggunakan SEMUA hak istimewa untuk admin atau akses root Anda, tetapi hanya terbatas pada pengguna yang memerlukan hak istimewa super untuk melakukan tugas administratif dan mengelola data.

Akses Pada Dasar Per-Tabel atau Per-Skema

Ini adalah praktik yang baik untuk hanya menyediakan akses ke pengguna hanya untuk tabel yang diperlukan. . Jadi, bahkan jika pengguna memiliki beberapa hak administratif, kerusakan apa pun hanya pada kumpulan tabel yang terbatas. Entah Anda dapat mengatur di seluruh skema; menyediakan akses ke tabel terbatas memberikan jenis hak istimewa yang terperinci dan membantu Anda menjaga data Anda dari bahaya.

Akses Terbatas Hanya Untuk Host

Menghubungkan melalui alamat IP sumber dayanya membantu membatasi akses ke data Anda. Hindari menggunakan '%' sehingga di MySQL misalnya,

GRANT SELECT, INSERT, DELETE ON mydb TO [email protected]'%' IDENTIFIED BY 'password';

Tingkat kerusakan yang dialami oleh host mana pun yang akan disambungkan dan bukan itu yang Anda inginkan terjadi. Ini menimbulkan kerentanan dan tantangan untuk menyusup ke database Anda sangat rendah.

Untuk PostgreSQL, pastikan bahwa Anda telah menyetel pg_hba.conf dan pengguna ke batas spesifik host saja. Ini berlaku juga untuk MongoDB yang dapat Anda atur di file konfigurasi MongoDB Anda atau /etc/mongodb.conf. Di MongoDB, Anda dapat bermain-main dengan Pembatasan Otentikasi dan mengatur clientSource atau serverAddress masing-masing, tetapi hanya untuk klien atau pengguna yang Anda perlukan untuk terhubung atau divalidasi.

Kontrol Akses Berbasis Peran

Kontrol Akses Berbasis Peran (RBAC) dalam database menyediakan cara yang nyaman untuk mengelola pengguna atau cara mudah untuk mengelompokkan pengguna dengan hak istimewa yang ditentukan yang ditautkan ke daftar pengguna atau grup pengguna.

Meskipun Anda harus memperhatikan bahwa peran ditangani secara berbeda di database sumber terbuka mana pun. Misalnya, MySQL mendefinisikan peran sebagai berikut,

Peran MySQL adalah kumpulan hak istimewa bernama. Seperti akun pengguna, peran dapat diberikan hak istimewa dan dicabut darinya.

Akun pengguna dapat diberikan peran, yang memberi akun hak istimewa yang terkait dengan setiap peran. Hal ini memungkinkan penetapan set hak istimewa ke akun dan memberikan alternatif yang nyaman untuk memberikan hak istimewa individu, baik untuk membuat konsep penetapan hak istimewa yang diinginkan dan mengimplementasikannya.

MongoDB mendefinisikan peran dengan RBAC sebagai,

MongoDB menggunakan Kontrol Akses Berbasis Peran (RBAC) untuk mengatur akses ke sistem MongoDB. Seorang pengguna diberikan satu atau lebih peran yang menentukan akses pengguna ke sumber daya dan operasi database. Di luar penetapan peran, pengguna tidak memiliki akses ke sistem.

Sedangkan di PostgreSQL,

PostgreSQL mengelola izin akses database menggunakan konsep peran. Peran dapat dianggap sebagai pengguna basis data, atau sekelompok pengguna basis data, tergantung pada bagaimana peran diatur. Peran dapat memiliki objek database (misalnya, tabel dan fungsi) dan dapat menetapkan hak istimewa pada objek tersebut ke peran lain untuk mengontrol siapa yang memiliki akses ke objek mana. Selain itu, dimungkinkan untuk memberikan keanggotaan dalam peran ke peran lain, sehingga memungkinkan peran anggota untuk menggunakan hak istimewa yang diberikan ke peran lain.

Konsep peran memasukkan konsep "pengguna" dan "grup". Dalam versi PostgreSQL sebelum 8.1, pengguna dan grup adalah jenis entitas yang berbeda, tetapi sekarang hanya ada peran. Peran apa pun dapat bertindak sebagai pengguna, grup, atau keduanya.

Meskipun database ini menerapkan peran khusus untuk penggunaannya, mereka berbagi konsep menetapkan peran kepada pengguna untuk menetapkan hak istimewa dengan mudah. Menggunakan peran memungkinkan administrator basis data untuk mengelola pengguna yang diperlukan untuk masuk atau mengakses basis data.

Bayangkan jika Anda memiliki daftar pengguna yang harus Anda kelola atau daftar pengguna yang dapat dijatuhkan atau dicabut saat tidak diperlukan lagi. Dalam beberapa kasus tertentu, jika tugas tertentu perlu dikerjakan, administrator database dapat membuat pengguna dengan peran yang sudah ada. Pengguna yang dibuat ini dapat ditetapkan ke peran tertentu hanya dalam waktu singkat, lalu dicabut setelah tidak diperlukan.

Audit juga membantu memisahkan pengguna yang memiliki kecurigaan kerentanan atau paparan data sehingga dalam hal ini, membantu mengelola pengguna dengan peran dengan sangat mudah.

Sistem Manajemen Pengguna

Jika keamanan data Anda ditangani dan diterapkan dengan tepat, ini akan membuka jalan Anda menuju kesuksesan. Meskipun tidak ada solusi sempurna karena kerentanan dan intrusi selalu berkembang juga. Ini seperti cacing yang mencoba mengintai sepanjang waktu sampai ia dapat mencapai tujuannya untuk menembus keamanan Anda dan mendapatkan akses ke data Anda. Tanpa alat yang tepat seperti sistem peringatan atau saran untuk segala ketidakamanan dan kerentanan, akan sulit untuk melindungi data Anda.

ClusterControl membantu Anda mengelola pengguna dan memverifikasi atau memeriksa hak istimewa pengguna Anda dari penyeimbang beban, hingga pengguna basis data utama. Ini juga menawarkan penasihat dan peringatan sehingga akan memberi tahu Anda tentang kemungkinan kerentanan atau gangguan.

Misalnya, menggunakan MySQL/MariaDB dengan fitur awal ProxySQL mengimpor dan menambahkan pengguna. Untuk mengimpor pengguna, ini mengumpulkan daftar pengguna yang ada di cluster MySQL/MariaDB Anda saat ini dan menawarkan Anda untuk meninjau hak istimewanya saat ini. Lihat di bawah,

Juga dalam hal ini, pengguna ProxySQL dapat dinonaktifkan dengan cepat jika kerentanan tersebut telah dikenal untuk pengguna tertentu.

ClusterControl juga menawarkan Anda untuk mengelola pengguna secara langsung dari database Anda seperti untuk MySQL/MariaDB atau PostgreSQL. Untuk MySQL/MariaDB, Anda dapat pergi ke → Performance → Advisors:

Dengan mengklik tombol Edit, Anda dapat menyesuaikan bagaimana ClusterControl akan bereaksi jika menemukan pengguna dengan host atau '%" atau pengguna tanpa kata sandi. Lihat bagaimana skrip ditampilkan setelah Anda menekan tombol Tombol edit.

Setelah ClusterControl mengetahui bahwa salah satu dari penasihat ini dipicu, peringatan akan ditampilkan dan juga akan dikirim ke email yang telah Anda siapkan atau jika ada pemberitahuan pihak ketiga yang terintegrasi, itu akan diberitahukan di sana juga.

Kesimpulan

Hak istimewa akses basis data adalah salah satu target utama yang menjadi perhatian bagi pelanggaran dan penyusupan data. Jika pengguna database Anda terpapar atau jika ada ancaman besar terhadap versi database saat ini yang tidak ditambal, kemungkinan diretas atau menjadi target ransomware dan pencurian sangat tinggi. Memahami hak akses dan menetapkan batas yang benar membantu Anda mengurangi bahaya mengekspos data berharga Anda.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengotomatiskan dan Mengelola MongoDB di Cloud

  2. Mendapatkan daftar objek tersemat/bersarang unik dalam dokumen MongoDB

  3. Bagaimana saya bisa menanyakan mongodb menggunakan mongoid/rails tanpa batas waktu?

  4. Fungsi kustom menghitung kolom proyeksi mongodb

  5. MongoDB:Memperbarui subdokumen