Ana içeriğe atla

MongoDB'de Rol Tabanlı Erişim Denetimi (RBAC)

MongoDB'de rol tabanlı erişim denetimini (RBAC) keşfedin: kullanıcı ve rol yönetimi, özel roller oluşturma ve dağıtımlar için asgari ayrıcalık ilkesi uygulama.
Güncel 3 Eki 2026  · 5 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Dijital çağda daha fazla insan çevrimiçi hâle geldikçe, güvenliği sağlamak ve uygulama ile sistemlere erişimi yönetmek için izinlerin ve rollerin tanımlanmasına duyulan ihtiyaç artıyor. Rol tabanlı erişim denetimi, kullanıcıların önceden tanımlanmış rollerine dayalı olarak kaynaklara erişimi kontrol etmek için kullanılan bir yetkilendirme modelidir. 

MongoDB'nin RBAC modeliyle eylemler roller biçiminde temsil edilir ve doğru kullanıcılara atanır. Örneğin, birden fazla ayrı ayrı izin atamak yerine, tek bir rol (ör. dbAdmin) atayabilirsiniz; bu rol, tanımlı izin kümesini (ör. veritabanındaki koleksiyonlarda okuma) otomatik olarak içerir. Bu model, kullanıcı erişimini ölçeklenebilir şekilde yönetmeyi kolaylaştırır.

MongoDB'de RBAC'i Etkinleştirme

Temel RBAC modelinde erişim varsayılan olarak reddedilir; bu da kullanıcıların bir role sahip olmadan kaynaklara erişemeyeceği anlamına gelir. Kullanıcılara birden fazla rol atanabilir ve her rol, belirli yeteneklere erişmek için belirli ayrıcalıklar veya izinler setine sahip olabilir.

RBAC Temel Kavramları

RBAC hakkında bilmeniz gereken bazı temel kavramlar şunlardır:

Kullanıcılar

RBAC modelinde kullanıcı, veritabanı kaynaklarına ve işlemlerine erişimini belirleyen bir veya daha fazla rol verilen varlıktır. Rol ataması yoksa bir kullanıcı sisteme erişemez. Sisteme erişim için kullanıcıların kimlik doğrulaması yapması ve en az bir role atanmış olması gerekir.

Roller

MongoDB, hem kendi kendini yöneten dağıtımlar hem de MongoDB Atlas için yerleşik roller ve ayrıcalıklar sağlar. Yaygın yerleşik rollere read, readWrite ve dbAdmin/atlasAdmin rolleri örnek verilebilir. Veritabanı yönetici rolleri, diğer tüm veritabanı kullanıcı rolleriyle karşılaştırıldığında daha yüksek ayrıcalıklara sahiptir; buna diğer rollerin ayrıcalıklarını yönetme yetkisi de dahildir.

Bu yerleşik roller istenen ayrıcalık setini sağlayamıyorsa, MongoDB kullanıcı tanımlı roller oluşturmak ve değiştirmek için yöntemler sunar.

Bir rol, kullanıcıya atanan ayrıcalıklar bütünüdür.

Örneğin, “read” rolü salt okuma ayrıcalıklarına sahip olabilir; “admin” rolü okuma ve yazma ayrıcalıklarına sahip olabilirken “owner” rolü belirli bir öğe (bir veritabanı, bir belge vb.) üzerinde okuma, yazma ve silme ayrıcalıklarına sahip olabilir.  Bir rol, belirtilen eylemleri kaynaklar üzerinde gerçekleştirme ayrıcalığı verir. Her ayrıcalık, rolde açıkça belirtilmiş olabilir ya da başka bir rolden devralınmış olabilir — veya her ikisi de.

Kullanıcı Tanımlı Roller / Özel Roller

MongoDB, yöneticilerin bir MongoDB sistemine erişimi kontrol etmek için kullanabileceği çeşitli yerleşik roller sağlar. Ancak mevcut roller, istediğiniz belirli ayrıcalıkları tanımlayamıyorsa, bir veritabanında kullanıcılara atanacak yeni roller tanımlayabilirsiniz — buna özel rol denir. Yönetim (admin) veritabanında oluşturulan roller istisna olmak üzere, bir rol yalnızca kendi veritabanına uygulanan ayrıcalıkları içerebilir ve yalnızca kendi veritabanındaki diğer rollerden devralabilir.

Yeni bir rol oluşturmak için, ayrıcalıkları privileges dizisinde ve devralınan rolleri roles dizisinde belirterek db.createRole() yöntemini kullanın.

MongoDB, bir rolü benzersiz olarak tanımlamak için veritabanı adı ile rol adının birleşimini kullanır ve tüm rol bilgilerini yönetim veritabanındaki admin.system.roles koleksiyonunda saklar.

Örnek: Bu örnek, sales_db veritabanındaki sales koleksiyonuna yalnızca belge ekleyebilen özel bir rol (sales_attendant) oluşturur.

use sales
db.createRole(
   {
     role: "sales_attendant",
     privileges: [
       {
         resource: { db: "sales_db", collection: "sales" },
         actions: [ "insert" ]
       }
     ],
     roles: []
   }
)

Yerleşik roller 

Yerleşik roller, bir veritabanındaki koleksiyonlarda okuma ve yazma gibi işlemleri yapmaya olanak tanıyan, kullanıcılara atanmış önceden oluşturulmuş rollerdir. Yerleşik rollere örnek olarak read, write, readWrite, dbAdmin ve readAnyDatabase verilebilir.

  • read ve readWrite (veritabanı düzeyi erişim): Bu roller, belirli bir veritabanındaki sistem dışı tüm koleksiyonlarda sırasıyla salt okuma ya da okuma/yazma işlemleri yapma erişimi verir.
  • dbAdmin: Bu rol, belirli bir veritabanını yönetmek için gerekli yönetim haklarını verir; örneğin dizin ve koleksiyon oluşturma, silme ve değiştirme. Geliştirme ekipleri veya veritabanı bakım betikleri için uygundur.
  • clusterAdmin (operasyonel erişim): Bu rol, çoğunlukla operasyon (DevOps/Ops) personeline ayrılmış yüksek ayrıcalıklı bir roldür. Tüm MongoDB dağıtımını yönetmek için gerekli izinleri verir; buna periyodik yedekler oluşturma, çoğaltma kümelerini yapılandırma ve parçalama (sharding) dahildir.

Ayrıcalıklar (izinler)

Ayrıcalıklar, bir yetenek üzerinde izin verilen eylemler (ör. find, insert) bütünüdür.

Örneğin yetenek “müşteriyi mevcut bakiyesi hakkında bilgilendirmek” ise o zaman kullanıcı ayrıcalıkları (örneğin gişe görevlisi) salt okuma olabilir. Yetenek bir banka hesabının işlem limitini artırmak ise, ayrıcalıklar okuma ve yazma olabilir.

Devralınan Ayrıcalıklar

Bir rol, mevcut bir veya daha fazla rolü (tüm ayrıcalıklarıyla birlikte) içerebilir. Örneğin, bir dbAdmin rolü, kendi ayrıcalıklarıyla gelen okuma, yazma ve güncelleme rolleri (bunlar tekil roller olabilir) içerebilir.

Kaynaklar

Bir kaynak; bir veritabanı, bir koleksiyon, bir koleksiyonlar kümesi veya kümedir (cluster). 

Asgari Ayrıcalık İlkesini Uygulama

Modern veritabanı güvenliğinde Asgari Ayrıcalık İlkesi (PoLP) kritik öneme sahiptir. Bu ilke, her kullanıcıya yalnızca gerekli görevleri yerine getirmek için gereken en düşük izinlerin atanması gerektiğini söyler.

İyi bir uygulama örneği: Genel bir readWrite kullanıcı kullanmak yerine, uygulamaya özgü kullanıcılar oluşturun. Örneğin, envanter hizmetiniz yalnızca app_data veritabanıyla etkileşime giriyorsa, uygulama kullanıcısına yalnızca o tek veritabanı için readWrite erişimi verilmelidir. Bu bölümleme, ele geçirilmiş bir hizmetin diğer veritabanlarına (ör. billing veya users) yetkisiz erişim elde etmesini engeller.

Kod örneği: 

Asgari ayrıcalıklı bir kullanıcı oluşturma. Bu örnek, read/write erişimi kesin olarak yalnızca bank_data veritabanıyla sınırlı olan bir kullanıcı (branch_manager) oluşturur.

use admin
db.createUser(
   {
     user: "branch_manager",
     pwd: passwordPrompt(),
     roles: [ 
       { role: "readWrite", db: "bank_data" }
     ]
   }
)

En İyi Uygulamalar

  • Önceden iyi tanımlanmış roller ve ilkeler oluşturup atayın.
  • Sıkı güvenlik için asgari ayrıcalık ilkesini izleyin.
  • Mümkün olduğunda yerleşik rolleri kullanın; anormallikleri tespit etmek için atanan rolleri periyodik olarak denetleyin.

SSS

MongoDB'de RBAC nedir?

Rol tabanlı erişim denetimi, kullanıcı erişimini yönetmek için kullanılan bir güvenlik kontrolüdür.

Yerleşik bir rol ile özel bir rol arasındaki fark nedir?

Yerleşik rol, bir veritabanındaki koleksiyonlarda okuma ve yazma gibi işlemleri gerçekleştirmeye olanak tanıyan, kullanıcılara atanmış önceden oluşturulmuş bir roldür; özel rol ise istediğiniz belirli ayrıcalıkları tanımlayan kullanıcı tanımlı bir roldür.

Asgari Ayrıcalık İlkesi neden önemlidir?

Önemlidir çünkü kullanıcılara gerekli görevleri yerine getirmek için gereken en az izinlerin atanmasını sağlar.

Bir mağaza yöneticisinin yalnızca belirli bir veritabanından veri okuyup yazabilmesini istiyorsanız, hangi tür rol atarsınız?

readWrite

Özel bir rol oluşturmak için hangi komut kullanılır?

db.createRole()


Afi Gbadago's photo
Author
Afi Gbadago
LinkedIn

Afi, MongoDB'de geliştiriciler için savunuculuk yaparak Django ve Python'a odaklanır; eğitimler, konuşmalar ve topluluk etkileşimi aracılığıyla mühendislerin modern veri teknolojileriyle geliştirme yapmalarına yardımcı olur. Python ve Web alanında tanınmış bir Microsoft MVP'sidir; Django Software Foundation yönetim kurulunda görev yapar ve DjangoCon US 2025 için Program Başkanıdır. Afi ayrıca Black Python Devs için Bölgesel Yürütücüdür ve aktif bir açık kaynak katkıcısı ile uluslararası konuşmacıdır.

Konular
MongoDB

En İyi DataCamp Kursları

Kurs

Python ile MongoDB'ye Giriş

3 sa
24.4K
MongoDB ile esnek yapılandırılmış verileri işlemeyi ve analiz etmeyi öğrenin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör