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

Gambaran Umum Manajemen Pengguna MongoDB

Pengelolaan Pengguna Basis Data adalah bagian yang sangat penting dari keamanan data, karena kita harus memahami siapa yang mengakses basis data dan mengatur hak akses setiap pengguna. Jika database tidak memiliki manajemen pengguna yang tepat, akses pengguna akan menjadi sangat berantakan dan sulit untuk dipelihara seiring berjalannya waktu.

MongoDB adalah database dan penyimpanan dokumen NoSQL. Menerapkan konsep RBAC (Role Based-Access Control) adalah kunci untuk menerapkan manajemen pengguna yang tepat untuk mengelola kredensial pengguna.

Apa itu Kontrol Akses Berbasis Peran (RBAC)?

RBAC adalah pendekatan yang membatasi sistem hanya untuk pengguna yang berwenang. Dalam sebuah organisasi, peran dibuat untuk berbagai fungsi pekerjaan, dalam database kami kemudian membuat hak akses untuk melakukan beberapa operasi yang ditugaskan ke peran tertentu.

Anggota staf (atau pengguna sistem lainnya) diberi peran tertentu dan melalui mereka diberi izin untuk menjalankan fungsi sistem komputer. Pengguna tidak diberikan izin secara langsung, tetapi hanya mendapatkannya melalui peran (atau peran) mereka. Mengelola hak pengguna individu menjadi masalah menempatkan peran yang sesuai ke dalam akun pengguna; ini menyederhanakan operasi umum (seperti menambahkan pengguna atau mengubah departemen pengguna).

Tiga aturan utama yang ditetapkan untuk RBAC adalah:

  • Penugasan Peran :Subjek dapat menjalankan izin hanya jika subjek telah dipilih atau telah diberi peran.
  • Peran Otorisasi :peran aktif subjek harus diotorisasi untuk subjek. Dengan aturan 1 di atas, aturan ini memastikan bahwa pengguna dapat mengambil peran hanya untuk mereka yang berwenang.
  • Otorisasi Izin :Subjek dapat mengeksekusi izin hanya jika izin diberikan untuk peran aktif subjek. Dengan aturan 1 dan 2, aturan ini memastikan bahwa pengguna dapat menggunakan izin hanya untuk mereka yang berwenang.

Blog ini akan mengulas secara singkat Kontrol Akses Berbasis Peran di database MongoDB.

Peran Pengguna MongoDB

MongoDB memiliki beberapa jenis role dalam database, yaitu...

Peran Bawaan

Menyediakan akses ke data dan tindakan ke MongoDB melalui otorisasi berbasis peran dan memiliki peran bawaan yang menyediakan beberapa tingkat akses dalam database.

Role memberikan beberapa hak istimewa untuk melakukan sesuatu pada resource yang telah dibuat. Peran bawaan MongoDB memiliki beberapa kategori:

  • Database Pengguna :Peran Pengguna basis data memiliki peran untuk memanipulasi data dalam pengumpulan non-sistem. Contoh peran Database Pengguna adalah:read, readWrite.
  • Administrasi Basis Data :Peran Administrasi Database berkaitan dengan manajemen administrasi database seperti administrasi pengguna, skema, dan objek di dalamnya.
  • Contoh peran Administrasi Basis Data adalah:dbAdmin, userAdmin, dbOwner.
  • Administrasi Klaster :Peran administrasi cluster adalah untuk mengelola seluruh sistem MongoDB, termasuk replika dan pecahannya. Contoh peran administrasi cluster adalah:clusterAdmin, clusterManager.
  • Pencadangan dan Pemulihan :Peran ini khusus untuk fungsi yang terkait dengan pencadangan basis data di MongoDB. Contoh peran adalah:pencadangan, pemulihan.
  • Semua Peran Basis Data :Peran ada di admin database dan memiliki akses ke semua database kecuali lokal dan konfigurasi. Contohnya adalah:readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase.
  • Pengguna Super :Peran memiliki kemampuan untuk memberikan akses ke setiap pengguna, untuk setiap hak istimewa, di semua basis data. Contoh peran ini:root

Peran Buatan Pengguna

Selain built-in role, kita bisa membuat role sendiri sesuai kebutuhan kita, privilege apa yang akan kita berikan untuk role tersebut. Untuk membuat peran, Anda dapat menggunakan perintah fungsi db.createRole(). Selain dapat membuat role, ada beberapa fungsi lain untuk mengelola role yang sudah ada seperti:db.dropRole() yang berguna untuk menghapus role yang ada di database, db.getRole() berfungsi untuk mendapatkan semua informasi dari role tertentu.

Tindakan Hak Istimewa di MongoDB

Tindakan hak istimewa di MongoDB adalah tindakan yang dapat dilakukan oleh pengguna pada sumber daya. MongoDB memiliki beberapa kategori tindakan, yaitu:

  • Tindakan Manajemen Basis Data, tindakan yang terkait dengan perintah yang berkaitan dengan administrasi basis data seperti tindakan changePassword, createCollection, createIndex.
  • Kueri dan Tindakan Tulis, tindakan yang terkait dengan eksekusi manipulasi data dalam koleksi. Misalnya pada tindakan insert, perintah yang dapat dijalankan pada tindakan tersebut adalah perintah insert yang dapat dimasukkan ke dalam dokumen.
  • Tindakan Manajemen Penerapan, tindakan yang berkaitan dengan perubahan konfigurasi database. Beberapa tindakan yang termasuk dalam kategori Deployment Management adalah cpuProfiler, storageDetails, killOp.
  • Tindakan Replikasi, tindakan yang berkaitan dengan eksekusi sumber daya replikasi basis data seperti replSetConfigure, replSetHeartbeat.
  • Tindakan Administrasi Server, tindakan yang terkait dengan perintah dari sumber daya administrasi server di mongoDB seperti tindakan logrotate yang digunakan untuk memutar database log di tingkat sistem operasi.
  • Tindakan Sharding, tindakan yang terkait dengan perintah dari basis data sharding database seperti addShard untuk menambahkan node shard baru.
  • Tindakan Sesi, tindakan yang terkait dengan sesi sumber daya dalam database seperti listSessions, killAnySession.
  • Diagnostic Actions, tindakan yang terkait dengan diagnosis resource seperti dbStats untuk mengetahui kondisi terkini di database.
  • Tindakan Pemantauan Gratis, tindakan yang terkait dengan pemantauan dalam database.

Mengelola Pengguna &Peran MongoDB

Anda dapat membuat pengguna lalu menetapkan pengguna ke peran bawaan, misalnya sebagai berikut:

db.createUser( {

user: "admin",

pwd: "thisIspasswordforAdmin",

roles: [ { role: "root", db: "admin" } ]

} );

Pada script di atas, artinya user admin akan dibuatkan password yang sudah ditentukan dengan builtin root role, dimana role tersebut termasuk dalam kategori Superuser.

Selain itu, Anda dapat menetapkan lebih dari satu peran kepada seorang pengguna, berikut contohnya:

db.createUser(

{user:'businessintelligence', 

pwd:'BIpassw0rd', 

roles:[{'role':'read', 'db':'oltp'}, { 'role':'readWrite', 'db':'olapdb'}]

});

Pengguna intelijen bisnis memiliki 2 peran, pertama peran baca di database oltp, dan peran readWrite di database olapdb.

Membuat peran yang ditentukan pengguna dapat menggunakan perintah db.createRole (). Anda harus menentukan tujuan pembuatan role tersebut sehingga Anda dapat menentukan tindakan apa yang akan dilakukan dalam role tersebut. Berikut ini adalah contoh pembuatan role untuk monitoring database Mongodb :

use admin

db.createRole(

   {

     role: "RoleMonitoring",

     privileges: [

       { resource: { cluster: true }, actions: [ "serverStatus" ] }

     ],

     roles: []

   }

)

Kemudian kita bisa memberikan role yang sudah ditentukan user kepada user yang akan kita buat, bisa menggunakan perintah berikut:

db.createUser( {

user: "monuser",

pwd: "thisIspasswordforMonitoring",

roles: [ { role: "RoleMonitoring", db: "admin" } ]

} );

Sementara itu, untuk menetapkan peran ke pengguna yang ada, Anda dapat menggunakan perintah berikut:

db.grantRolesToUser(

    "existingmonuser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

Untuk mencabut peran pengguna yang sudah ada, Anda dapat menggunakan perintah berikut:

db.revokeRolesFromUser(

    "oldmonguser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

Dengan menggunakan peran yang ditentukan pengguna, kita dapat membuat peran sesuai keinginan kita sesuai dengan tindakan yang akan kita lakukan pada peran tersebut, seperti peran untuk membatasi pengguna hanya dapat menghapus baris pada database tertentu.

Kesimpulan

Penerapan hak akses dapat meningkatkan keamanan. Memetakan peran dan pengguna dalam database memudahkan Anda mengelola akses pengguna.

Pastikan semua informasi mengenai peran dan hak ini didokumentasikan dengan baik dengan akses terbatas ke dokumen. Ini membantu Anda berbagi informasi ke DBA lain atau personel pendukung dan berguna untuk audit dan pemecahan masalah.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. wildcard awalan mongoDB:pencarian teks lengkap ($ teks) temukan bagian dengan string pencarian

  2. Apa pola yang tepat untuk skema bersarang di Mongoose/MongoDB?

  3. Luwak findOneAndUpdate dan upsert tidak mengembalikan kesalahan, tidak ada dokumen yang terpengaruh

  4. Sisipkan/perbarui batch menggunakan Mongoid?

  5. Pembaruan MongoDBSatu()