Kursus
Seiring makin banyak orang terhubung ke dunia online di era digital ini, kebutuhan untuk mendefinisikan izin dan peran semakin meningkat guna memastikan keamanan dan mengelola akses ke aplikasi serta sistem. Role-based access control adalah model otorisasi yang digunakan untuk mengendalikan akses ke sumber daya berdasarkan peran yang telah ditentukan untuk pengguna.
Dengan model RBAC MongoDB, tindakan direpresentasikan dalam bentuk peran yang ditetapkan kepada pengguna yang tepat. Misalnya, alih-alih menetapkan beberapa izin individual, Anda dapat menetapkan satu peran (misalnya, dbAdmin) yang secara otomatis mencakup kumpulan izin yang didefinisikan (misalnya, read pada koleksi di database). Model ini memudahkan pengelolaan akses pengguna secara terukur.
Mengaktifkan RBAC di MongoDB
Dengan model RBAC inti, akses ditolak secara default, yang berarti pengguna tidak dapat mengakses sumber daya tanpa memiliki peran. Pengguna dapat ditetapkan beberapa peran, dan setiap peran dapat memiliki sekumpulan hak istimewa atau izin tertentu untuk mengakses kapabilitas tertentu.
Konsep Inti RBAC
Berikut adalah beberapa konsep kunci yang perlu Anda ketahui tentang RBAC:
Pengguna
Dalam model RBAC, pengguna adalah entitas yang diberikan satu atau lebih peran yang menentukan akses pengguna ke sumber daya dan operasi database. Seorang pengguna tidak akan memiliki akses ke sistem jika tidak ada penetapan peran. Untuk mendapatkan akses ke sistem, pengguna harus melakukan autentikasi dan harus diberi setidaknya satu peran.
Peran
MongoDB menyediakan peran dan hak istimewa bawaan untuk deployment yang dikelola sendiri maupun MongoDB Atlas. Beberapa peran bawaan yang umum adalah read, readWrite, dan dbAdmin/atlasAdmin. Peran admin database memiliki hak istimewa lebih tinggi dibandingkan peran pengguna database lainnya, termasuk hak untuk mengelola hak istimewa peran lain.
Jika peran bawaan tersebut tidak dapat menyediakan kumpulan hak istimewa yang diinginkan, MongoDB menyediakan metode untuk membuat dan memodifikasi peran yang ditentukan pengguna.
Peran adalah sekumpulan hak istimewa yang diberikan kepada pengguna.
Sebagai contoh, peran “read” dapat memiliki hak hanya-baca, peran “admin” dapat memiliki hak baca dan tulis, sedangkan peran “owner” dapat memiliki hak baca, tulis, dan hapus terhadap item tertentu (sebuah database, dokumen, dsb.). Peran memberikan hak istimewa untuk melakukan tindakan tertentu pada sumber daya. Setiap hak istimewa ditentukan secara eksplisit dalam peran atau diwarisi dari peran lain, atau keduanya.
Peran yang Ditentukan Pengguna / Peran Kustom
MongoDB menyediakan sejumlah peran bawaan yang dapat digunakan administrator untuk mengendalikan akses ke sistem MongoDB. Namun, jika peran yang ada tidak dapat mendeskripsikan hak istimewa spesifik yang Anda inginkan, Anda dapat mendefinisikan dan menetapkan peran baru kepada pengguna di sebuah database — itulah peran kustom. Dengan pengecualian peran yang dibuat di database admin, sebuah peran hanya dapat mencakup hak istimewa yang berlaku untuk databasenya dan hanya dapat mewarisi dari peran lain di databasenya.
Untuk membuat peran baru, gunakan metode db.createRole(), dengan menentukan hak istimewa dalam array privileges dan peran yang diwarisi dalam array roles.
MongoDB menggunakan kombinasi nama database dan nama peran untuk mendefinisikan peran secara unik, dan MongoDB menyimpan semua informasi peran dalam koleksi admin.system.roles di database admin.
Contoh: Contoh ini membuat peran kustom (sales_attendant) yang hanya dapat memasukkan dokumen ke koleksi sales dalam database sales_db.
use sales
db.createRole(
{
role: "sales_attendant",
privileges: [
{
resource: { db: "sales_db", collection: "sales" },
actions: [ "insert" ]
}
],
roles: []
}
)
Peran bawaan
Peran bawaan adalah peran yang sudah dibuat sebelumnya dan ditetapkan kepada pengguna yang memungkinkan mereka melakukan operasi seperti baca dan tulis pada koleksi di sebuah database. Contoh peran bawaan adalah read, write, readWrite, dbAdmin, dan readAnyDatabase.
- read dan readWrite (akses tingkat database): Peran ini memberikan akses untuk melakukan operasi hanya-baca atau baca/tulis, masing-masing, pada semua koleksi non-sistem dalam database tertentu.
- dbAdmin: Peran ini memberikan hak administratif yang diperlukan untuk mengelola database tertentu, seperti membuat, menghapus, dan memodifikasi indeks serta koleksi. Ini cocok untuk tim pengembangan atau skrip pemeliharaan database.
- clusterAdmin (akses operasional): Peran ini adalah peran dengan hak istimewa tinggi yang umumnya disediakan untuk personel operasi (DevOps/Ops). Peran ini memberikan izin yang diperlukan untuk mengelola seluruh deployment MongoDB, termasuk membuat backup berkala, mengonfigurasi replica set, dan sharding.
Hak istimewa (izin)
Hak istimewa adalah sekumpulan tindakan (mis., find, insert) yang diperbolehkan pada sebuah kapabilitas.
Sebagai contoh, jika kapabilitasnya adalah “memberi tahu nasabah tentang saldo saat ini,” maka hak istimewa pengguna (misalnya teller bank) dapat berupa hanya-baca. Jika kapabilitasnya adalah menaikkan batas transaksi sebuah rekening bank, hak istimewanya bisa berupa baca dan tulis.
Hak Istimewa yang Diwarisi
Sebuah peran dapat menyertakan satu atau lebih peran yang sudah ada (beserta semua hak istimewanya). Misalnya, peran dbAdmin dapat mencakup peran read, write, dan update (yang dapat berupa peran individual) yang menyertakan hak-hak istimewanya.
Sumber daya
Sumber daya adalah sebuah database, koleksi, sekumpulan koleksi, atau klaster.
Menerapkan Prinsip Least Privilege
Dalam keamanan database modern, Prinsip Least Privilege (PoLP) sangat penting. Prinsip ini menyatakan bahwa setiap pengguna harus diberi izin minimum yang diperlukan untuk menjalankan tugasnya.
Berikut contoh praktik terbaik: Alih-alih menggunakan pengguna readWrite global, buat pengguna khusus aplikasi. Misalnya, jika layanan inventaris Anda hanya berinteraksi dengan database app_data, pengguna aplikasi tersebut hanya boleh diberi akses readWrite ke satu database itu saja. Pemisahan ini mencegah layanan yang terkompromi mendapatkan akses tidak sah ke database lain (seperti billing atau users).
Contoh kode:
Membuat pengguna least privilege. Contoh ini membuat pengguna (branch_manager) dengan akses baca/tulis yang dibatasi secara ketat pada database bank_data.
use admin
db.createUser(
{
user: "branch_manager",
pwd: passwordPrompt(),
roles: [
{ role: "readWrite", db: "bank_data" }
]
}
)
Praktik Terbaik
- Buat dan tetapkan peran serta kebijakan yang terdefinisi dengan baik sejak awal.
- Ikuti prinsip least privilege untuk memastikan keamanan yang ketat.
- Gunakan peran bawaan jika memungkinkan; audit peran yang ditetapkan secara berkala untuk mendeteksi anomali.
FAQs
Apa itu RBAC di MongoDB?
Role-based access control adalah kontrol keamanan yang digunakan untuk mengelola akses pengguna.
Apa perbedaan antara peran bawaan dan peran kustom?
Peran bawaan adalah peran yang sudah dibuat sebelumnya dan ditetapkan kepada pengguna yang memungkinkan mereka melakukan operasi seperti baca dan tulis pada koleksi di sebuah database, sedangkan peran kustom adalah peran yang ditentukan pengguna yang mendeskripsikan hak istimewa spesifik yang Anda inginkan.
Mengapa Prinsip Least Privilege itu penting?
Ini penting karena memastikan pengguna diberi izin minimum yang diperlukan untuk menjalankan tugasnya.
Jika Anda ingin seorang manajer toko hanya bisa membaca dan menulis data dari database tertentu, jenis peran apa yang akan Anda tetapkan?
readWrite
Perintah apa yang digunakan untuk membuat peran kustom?
db.createRole()
Afi mengadvokasi para pengembang di MongoDB dengan fokus pada Django dan Python, membantu para engineer membangun dengan teknologi data modern melalui tutorial, presentasi, dan keterlibatan komunitas. Diakui sebagai Microsoft MVP untuk Python dan Web, ia menjadi anggota dewan Django Software Foundation dan menjabat sebagai Programme Chair untuk DjangoCon US 2025. Afi juga merupakan Regional Executor untuk Black Python Devs serta kontributor open-source aktif dan pembicara internasional.

