Veri tabanları, günümüzde kuruluşların veri varlıklarını güvenli ve etkili bir şekilde yönetmeleri için hayati önem taşımaktadır. Bu bağlamda, rol tabanlı yetkilendirme, kullanıcıların veri tabanındaki erişim düzeylerini ve yetkilerini esnek bir şekilde yönetmelerine olanak tanırken, güvenlik ve yönetim açısından kritik bir rol oynamaktadır. Bu yazımızda mongodb veri tabanlarında rol tabanlı yetkilendirmeyi sağlayabilmek için authorization parametresinden bahsedeceğiz.

MongoDB veri tabanlarında rol tabanlı yetkilendirme default olarak kapalı durumdadır. Aslında Veri tabanı seviyesinde rol tabanlı yetkilendirme için çeşitli yetkilere sahip rol grupları bulunmaktadır fakat bu rolleri bir kullanıcıya atadığımızda atanan rol dışında da işlem yapabildiğini görebilmekteyiz. Yani bir kullanıcıya “read” rolü tanımlamamıza rağmen kullanıcı yazma işlemi yapabilmekte hatta collection silebilmektedir.

MongoDB’de rol tabanlı yetkilendirmeyi tam anlamıyla kullanabilmek için authorization parametresini aktif hale getirmemiz gerekmektedir.

MongoDB Authorization Parametresi

MongoDB’de authorization parametresinin önemi, veri tabanı sunucusunun güvenlik ayarlarını belirlemesidir. Bu parametre, kimlik doğrulamasının etkin olup olmadığını belirler. authorization parametresinin iki değeri vardır;

enabled : Bu değer, kimlik doğrulamasının etkin olduğunu ve kullanıcıların veritabanına erişmek için kimlik doğrulaması yapmaları gerektiğini belirtir

disabled: Bu değer, kimlik doğrulamasının devre dışı bırakıldığını belirtir. Kullanıcıların veri tabanına erişmek için kimlik doğrulaması yapmaları gerekmez. Güvenlik riskleri oluşturacağı için canlı ortamlarda önerilmez

Authorization parametresinin önemi aşağıdaki şekilde özetlenebilir.

Güvenlik: Kimlik doğrulaması, veritabanı erişimini sınırlar ve yetkilendirilmemiş erişimi engeller, böylece veritabanını kötü niyetli kullanıcılardan korur.

İzlenebilirlik: Kimlik doğrulaması, kullanıcı faaliyetlerini izlemeyi kolaylaştırır. Kimin hangi kaynaklara eriştiği gibi faaliyetleri denetlemek için kimlik doğrulamasının etkinleştirilmesi önemlidir.

Yönetim: Kimlik doğrulaması, kullanıcıların veri tabanına erişmek için kimlik doğrulaması yapmalarını gerektirir, bu da veri tabanı yöneticilerinin kullanıcıların erişim haklarını kontrol etmesini ve yönetmesini sağlar.

Parametrenin Aktif Hale Getirilmesi

Parametre 1 Primary ve 2 Standby sunucudan oluşan replicaset’de parametre aşağıdaki şekilde aktif hale getirilebilir.

İlk olarak replicaset üyelerinin bulunduğu bütün nodelarda mongo-security dizini oluşturulur.

root@mongodbtest01: mkdir /var/lib/mongodb/mongo-security
root@mongodbtest02: mkdir /var/lib/mongodb/mongo-security
root@mongodbtest03: mkdir /var/lib/mongodb/mongo-security

MongoDB replicaset üzerinde authorization parametresini aktif edebilmek için keyfile oluşturulması gerekmektedir. Keyfile bir MongoDB replika kümesinde veya bir MongoDB sharded kümesinde bulunan üyeler arasında iletişimi şifrelemek için kullanılır. Aşağıdaki komut ile , OpenSSL kütüphanesini kullanarak 768 bayt uzunluğunda base64 algoritması kodlanmış bir key üretiyoruz.

root@mongodbtest01: openssl rand -base64 768 > /var/lib/mongodb/mongo-security/keyfile.txt

Replicaset’de bulunan bütün sunucularda aynı key bulunması gerektiği için keyfile.txt dosyasını diğer sunuculara da aktarıyoruz.

root@mongodbtest01: scp /var/lib/mongodb/mongo-security/keyfile.txt root@mongodbtest02:/var/lib/mongodb/mongo-security/
root@mongodbtest01: scp /var/lib/mongodb/mongo-security/keyfile.txt root@mongodbtest03:/var/lib/mongodb/mongo-security/

Keyfile bütün sunuculara taşındıktan sonra dosya ve dizin yetkilerini ayarlıyoruz.

root@mongodbtest01: chown mongodb:mongodb -R /var/lib/mongodb          
root@mongodbtest02: chown mongodb:mongodb -R /var/lib/mongodb
root@mongodbtest03: chown mongodb:mongodb -R /var/lib/mongodb
root@mongodbtest01: chmod 400 /var/lib/mongodb/mongo-security/keyfile.txt
root@mongodbtest02: chmod 400 /var/lib/mongodb/mongo-security/keyfile.txt
root@mongodbtest03: chmod 400 /var/lib/mongodb/mongo-security/keyfile.txt

Authorization parametresini aktif etmeden önce hem mongodb cluster’ımızı yönetmek için hemde operasyonel işlemleri gerçekleştirmek için veri tabanı seviyesinde root yetkisine sahip bir kullanıcı oluşturmamız gerekiyor. Mongodb ye bağlanarak admin veri tabanı altında kullanıcıyı oluşturuyoruz.

root@mongodbtest01: mongosh 
mongodb-Replication [direct: primary] test> use admin
mongodb-Replication [direct: primary] admin> 
mongodb-Replication [direct: primary] admin> db.createUser( { user: "sysdbaops", pwd: "pass", roles: [{ role: "root", db: "admin" }] } );

Kullanıcıyı oluşturduktan sonra cli üzerinde erişimi kontrol ediyoruz.

root@mongodbtest01: mongosh -u msrsAdmin -p pass --authenticationDatabase admin

Bağlantıyı sağladığımızı teyit ettikten sonra , artık veri tabanı seviyesinde parametre değişikliğini gerçekleştirebiliriz.  Bütün nodelarda mongod.conf dosyasına security bölümünü aktif ederek aşağıdaki parametreleri geçiyoruz.

root@mongodbtest01: vi /etc mongod.conf
    
#security:
security:
   authorization: enabled
   keyFile: /var/lib/mongodb/mongo-security/keyfile.txt

Parametreyi ekledikten sonra bütün nodelarda servis restart edilir.

root@mongodbtest01: systemctl restart mongod.service
root@mongodbtest02: systemctl restart mongod.service
root@mongodbtest03: systemctl restart mongod.service

İşlem tamamlandıktan sonra artık kullanıcılarımıza role tabanlı yetkilendirme yapabiliriz. Konu hakkında detaylı bilgi mongodb kurumsal dökümanında bulunabilir. Diğer yazılarımıza buradan göz atabilirsiniz.

Paylaş
Bağlantıyı kopyala