Rol Tabanlı Erişim Denetimi: Yerleşik ve Özel Roller
Öğrenenler, readWrite ve dbAdmin gibi yerleşik rolleri atayacak ve hizmet hesapları için en az ayrıcalık ilkesine uygun eylem kümelerine sahip özel roller oluşturacaktır.
Rol Tabanlı Erişim Denetimi: Yerleşik ve Özel Roller, CoddyKit'te ücretsiz bir MongoDB Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, MongoDB Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. MongoDB Academy kursu toplamda 4 dersten oluşur.
Rol Tabanlı Erişim Denetimi Nedir?
Rol Tabanlı Erişim Denetimi (RBAC), MongoDB'nin yetkilendirme modelidir. Tek tek izinleri doğrudan kullanıcılara vermek yerine, kullanıcılara roller — adlandırılmış ayrıcalık koleksiyonları — atarsınız. Bu, izin yönetimini ölçeklenebilir hâle getirir: bir rolü güncellediğinizde, o role sahip her kullanıcı değişikliği otomatik olarak devralır. MongoDB, en yaygın erişim modellerini kapsayan zengin bir yerleşik rol kümesiyle birlikte gelir.
Yerleşik Veritabanı Rolleri
MongoDB, belirli bir veritabanına uygulanan çeşitli veritabanı düzeyi roller sağlar. En yaygın kullanılanlar şunlardır: read (tüm koleksiyonları okuma), readWrite (okuma + ekleme/güncelleme/silme), dbAdmin (şema yönetimi, dizin oluşturma) ve userAdmin (bu veritabanındaki kullanıcıları oluşturma/değiştirme). Bu roller veritabanı kapsamlıdır; myApp üzerinde readWrite sahibi bir kullanıcı otherApp'e erişemez.
// Create a user with readWrite on one database only
use myApp
db.createUser({
user: 'appUser',
pwd: 'SecurePass!',
roles: [
{ role: 'readWrite', db: 'myApp' }
]
})
// Create a user with dbAdmin (can manage indexes but not data)
db.createUser({
user: 'dbaUser',
pwd: 'DbaPass!',
roles: [
{ role: 'dbAdmin', db: 'myApp' }
]
})Yerleşik Küme Genelinde Geçerli Roller
Bazı yerleşik roller, bir MongoDB örneğindeki tüm veritabanlarını kapsar. readAnyDatabase ve readWriteAnyDatabase, ilgili izinleri her veritabanında verir. dbAdminAnyDatabase, her yerde şema yönetimine izin verir. En güçlü rol, her şeye tam erişimi olan root rolüdür; bunu yalnızca ilk kurulum ve acil kurtarma için kullanın, uygulama hesapları için asla kullanmayın.
// Grant read-only access to all databases (reporting tool)
use admin
db.createUser({
user: 'globalReporter',
pwd: 'ReportPass!',
roles: [
{ role: 'readAnyDatabase', db: 'admin' }
]
})
// The root role — avoid for applications
// roles: [{ role: 'root', db: 'admin' }] // too powerful!En Az Ayrıcalık İlkesi
Her MongoDB kullanıcısı tam olarak ihtiyaç duyduğu izinlere — daha fazlasına değil sahip olmalıdır. Yalnızca ürünleri okuyan bir API'de readWrite değil, read bulunmalıdır. Belgeleri arşivleyen bir arka plan işi, yalnızca arşiv koleksiyonunda sorgulama ve silme yapabilmeli; tüm koleksiyonlarda işlem yapamamalıdır. En az ayrıcalık uygulaması, güvenliği ihlal edilmiş bir kimlik bilgisinin etki alanını sınırlar.
// Tightly scoped user for a product listing API
use admin
db.createUser({
user: 'productListingApi',
pwd: 'ProductApiPass!',
roles: [
{ role: 'read', db: 'catalog' } // read-only on catalog DB only
]
})Özel Roller Oluşturma
Yerleşik roller fazla geniş olduğunda db.createRole() kullanarak bir özel rol oluşturun. Rol tanımı, belirli ayrıcalıkları listeler; her ayrıcalık, bir kaynak (belirli bir veritabanı, koleksiyon veya küme) üzerinde gerçekleştirilen bir eylemdir (örneğin find, insert, createIndex). Özel roller, roles dizisini kullanarak mevcut rollerden miras da alabilir.
// Custom role: can read orders and update order status only
use myApp
db.createRole({
role: 'orderProcessor',
privileges: [
{
resource: { db: 'myApp', collection: 'orders' },
actions: ['find', 'update']
}
],
roles: [] // no inherited roles
})Kullanıcılara Özel Roller Atama
Özel bir rolü, yerleşik rolleri atadığınız şekilde atayın: kullanıcı oluştururken bu rolü roles dizisine ekleyin veya daha sonra db.grantRolesToUser() ile verin. Bir kullanıcı aynı anda birden çok role sahip olabilir ve bu rollerin izinlerini birleştirebilir. MongoDB, her işlemi yetkilendirirken atanan tüm rollerin tüm ayrıcalıklarının birleşimini hesaplar.
// Create user and assign custom role
use myApp
db.createUser({
user: 'fulfillmentWorker',
pwd: 'FulfillPass!',
roles: [
{ role: 'orderProcessor', db: 'myApp' }
]
})
// Grant an additional role to an existing user
db.grantRolesToUser('fulfillmentWorker', [
{ role: 'read', db: 'products' }
])Rolleri Geri Alma ve Erişimi Değiştirme
Bir çalışanın rolü değiştiğinde veya bir hizmet kullanımdan kaldırıldığında gereksiz izinleri derhâl geri alın. db.revokeRolesFromUser(), hesabı silmeden belirli rolleri bir kullanıcıdan kaldırır. db.updateUser(), roller dizisinin tamamını değiştirmenizi sağlar. Ayrıcalıkların zamanla gereksiz biçimde genişlemesini fark etmek için kullanıcıları ve atanan rollerini db.getUsers() ile düzenli olarak denetleyin.
// Revoke a specific role from a user
use myApp
db.revokeRolesFromUser('fulfillmentWorker', [
{ role: 'read', db: 'products' }
])
// Replace all roles for a user
db.updateUser('fulfillmentWorker', {
roles: [{ role: 'read', db: 'myApp' }] // demote to read-only
})Koleksiyon Düzeyinde Ayrıcalık Ayrıntı Düzeyi
Özel roller, tüm veritabanı yerine belirli bir koleksiyon kapsamında tanımlanabilir. Bu, örneğin bir hizmetin yalnızca products koleksiyonunu okuyabildiği, ancak aynı veritabanındaki users veya orders koleksiyonlarına erişemediği ayrıntılı erişim denetimine olanak tanır. Koleksiyon düzeyinde kapsam belirleme, kaynak belgesinde bir koleksiyon adı belirtilerek gerçekleştirilir.
// Role scoped to a single collection
use myApp
db.createRole({
role: 'catalogReader',
privileges: [
{
resource: { db: 'myApp', collection: 'products' },
actions: ['find']
}
],
roles: []
})Küme Yönetimi Rolleri
Çeşitli yerleşik roller, veri erişimi yerine küme düzeyindeki işlemleri yönetir. clusterMonitor, izleme komutlarına okuma erişimi verir (ölçüm dışa aktarıcıları için kullanışlıdır). clusterAdmin, parçaları, çoğaltma kümelerini ve genel işlemleri yönetmeye izin verir; çok güçlü olduğundan dikkatle sınırlandırılmalıdır. backup ve restore rolleri, tam yönetici hakları vermeden mongodump ve mongorestore için gereken belirli izinleri sağlar.
// Backup user — can dump data but not administer users
use admin
db.createUser({
user: 'backupAgent',
pwd: 'BackupPass!',
roles: [
{ role: 'backup', db: 'admin' }
]
})
// Monitoring exporter user
db.createUser({
user: 'prometheusExporter',
pwd: 'MonitorPass!',
roles: [
{ role: 'clusterMonitor', db: 'admin' },
{ role: 'read', db: 'local' }
]
})Rol Ayrıntılarını ve Devralınan Ayrıcalıkları Görüntüleme
Bir rolün, üst rollerden devralınan ayrıcalıklar da dâhil olmak üzere tam olarak hangi eylemleri ve kaynakları verdiğini görmek için db.getRole(roleName, { showPrivileges: true }) kullanın. Bu, denetim için çok önemlidir; özel bir rolün tam olarak doğru izinleri sağladığını ve devralınan roller aracılığıyla yanlışlıkla daha geniş erişim vermediğini doğrulayabilirsiniz.
// Inspect a custom role's full privileges
use myApp
db.getRole('orderProcessor', { showPrivileges: true })
// List all custom roles in the current database
db.getRoles({ showBuiltinRoles: false })
// List all users and their roles
db.getUsers()MongoDB Atlas'ta RBAC
MongoDB Atlas, RBAC'yi Database Access paneli aracılığıyla uygular. Atlas kullanıcı arayüzü, Atlas CLI veya Atlas API üzerinden yerleşik ya da özel rollere sahip veritabanı kullanıcıları oluşturabilirsiniz. Atlas ayrıca, belirli bir sürenin ardından otomatik olarak süresi dolan geçici kullanıcıları destekler; bu kullanıcılar kısa süreli geliştirici erişimi veya olaylara müdahale için idealdir. Ayrıca Atlas, kurumsal kimlik yönetimi için AWS IAM ve LDAP ile bütünleşebilir.
Hızlı Kontrol
Bu derste MongoDB ve NoSQL Databases kavramlarını ne kadar anladığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: read, readWrite ve dbAdmin gibi yerleşik roller, veritabanı kapsamında yaygın erişim modellerini kapsar; özel roller, yalnızca gereken kesin eylemlerle koleksiyon düzeyinde ayrıcalıklar tanımlamanıza olanak tanır; en az ayrıcalık ilkesi uyarınca her kullanıcı ve hizmet hesabı yalnızca gerçekten ihtiyaç duyduğu izinlere sahip olmalıdır. Sırada bekleyen verilerin şifrelenmesini ve aktarım sırasında TLS'yi ele alacağız.
Yapay zeka eğitmeniyle JavaScript öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 30
- Dersler
- 120
Sıkça Sorulan Sorular
“Rol Tabanlı Erişim Denetimi: Yerleşik ve Özel Roller” dersi ücretsiz mi?
Evet — “Rol Tabanlı Erişim Denetimi: Yerleşik ve Özel Roller” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve MongoDB Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. MongoDB Academy kursu toplamda 4 dersten oluşur.
“Rol Tabanlı Erişim Denetimi: Yerleşik ve Özel Roller” dersinde ne öğreneceğim?
Öğrenenler, readWrite ve dbAdmin gibi yerleşik rolleri atayacak ve hizmet hesapları için en az ayrıcalık ilkesine uygun eylem kümelerine sahip özel roller oluşturacaktır. MongoDB Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
MongoDB Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te MongoDB Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Rol Tabanlı Erişim Denetimi: Yerleşik ve Özel Roller” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu MongoDB Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her MongoDB Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Kimlik Doğrulama Mekanizmaları: SCRAM ve x.509
- Rol Tabanlı Erişim Denetimi: Yerleşik ve Özel Roller
- Beklemede Şifreleme ve Aktarım Sırasında TLS
- İstemci Tarafında Alan Düzeyinde Şifreleme