MongoDB'de güvenlik ve yedekleme

İçindekiler
Hizmetimizi bir üretim ortamında veya belki de birkaç kullanıcılı bir geliştirme ortamında kurarken, yapmamız gereken ilk şey bir güvenlik şeması oluşturmaktır, bu bizim hatalarımızı önlememizi sağlar. veritabanları kişiler tarafından yanlış erişilmektedir.
ana özelliği MongoDB bir örneği kurarken, herhangi bir kimlik doğrulama önlemi oluşturmadan çalışır, geliştirmenin başlamasını kolaylaştırmak için böyledir, ancak altyapımızı güvence altına almamız gereken bir nokta gelir.
Verilerimizin güvenliği ve yedeklenmesi konusu ile ilgili bir diğer önemli nokta da, belirli bir anın yedeğini almamız gerektiğinde, ancak veri hareketi olmasını istemediğimiz zamandır, çünkü bu şekilde verilerimizin bütünlüğünü garanti ediyoruz. Veritabanı ve belge koleksiyonları. Bu açıdan da içinde bir araç var MongoDB bu, kopyaladığımız şeyin uygun olduğundan emin olmak için onu geçici olarak engellememize izin verir.
GereksinimlerBu vesileyle ihtiyaç duyduğumuz gereksinimler çok basit, sadece bir örneğine sahip olmalıyız. MongoDB sistemimizde kurulu ve çalışır durumdaysa, hizmete konsol aracılığıyla da erişmemiz gerekecek. Bu eğitimde geliştirilmiştir pencereler, bu nedenle bazı komutlar diğer işletim sistemlerinde değişebilir, ancak bunların tümü konsolun dışında yapılanlarla ilgilidir. MongoDB, ve yolları ifade etme şeklimiz.
Kullanıcı kimlik doğrulama parametrelerinin ayarlanması, işletim için hayati önem taşıyan bir şey değildir. MongoDB üretimde, hizmeti çalıştığı ekipmanın bir bağlantı filtresi olacak şekilde kurabildiğimiz için, söz konusu ekipmana ağ dışından erişmeye çalışırsak, erişimimiz olmaz.
Güvenliğe yönelik bu basit yaklaşım çok etkilidir, ancak yalnızca hizmetin diğer ekiplerle paylaşılmadığı projeler için, çünkü aynı sunucuya karşı çalışan farklı geliştirme ekiplerimiz varsa başka bir şeye ihtiyacımız var. Burası kimlik doğrulama, onunla dilersek koleksiyon başına bir kullanıcı ve şifre istemeye özen gösteriyoruz, böylece her bilgisayar için farklı örnekleri yeterince ayırma imkanımız var.
Her iki güvenlik önlemi de özel değildir ve bunları aynı anda kullanmak istiyorsak, yaptığımız şey, ister üretim, ister üretim öncesi veya çoklu ekip geliştirme olsun, ortamımız için çok daha güvenli bir hizmet yaratmaktır.
NS kimlik doğrulama en temel haliyle komutla elde edilir. Kullanıcı oluştur Bu, seçtiğimizde yürütülmelidir. Veri tabanı yönetici kullanıcılarımızın olması gereken yer burasıdır.
Sürümden beri not etmek önemlidir. 2.6 nın-nin MongoDB yöntemin kullanılmaya başlanmış olmasıdır. Kullanıcı oluştur, geçmişte her şey yöntemle çözüldü Kullanıcı EkleAncak, değişiklik yapılırken daha fazla çok yönlülük sağlamak için değişiklik yapıldı.
Bir yönetici kullanıcısını ve ardından sadece Veritabanını okuyabilen bir kullanıcıyı nasıl ayarlayacağımıza bakalım. Ölçek.
Yöntemi alan belgenin yapısı Kullanıcı oluştur sonraki:
 {"Kullanıcı": "kullanıcı adı", "pwd": "şifre", "roller": [{"rol": "", "db": ""},]}
Belirttiğimiz gibi, oluşturduğumuz kullanıcı için isim ve şifre belirlemeliyiz ancak buna ek olarak kullanıcıya verdiğimiz yetkileri tanımlamamızı sağlayacak bir izin yapısı olan rolleri de oluşturmalıyız. .
Aşağıdaki örnekte, tüm erişime sahip bir yönetici kullanıcı oluşturacağız. veritabanları ve bu hizmeti kontrol edebilir, bunun için kullanacağız roller:
  • küme Yöneticisi
  • readAnyDatabase
  • okuma yazma

Bu üç parametre ile zaten ilk kullanıcımızı yönetebiliriz. Bunun konsolda nasıl göründüğüne bakalım:

Bununla zaten yönetici kullanıcımızı başarıyla oluşturduk, şimdi yapacağımız sonraki adım güvenliği etkinleştirmek olduğundan kullanıcı adı ve şifreyi doğru bir şekilde hatırlamalıyız, bunun için servisi parametre ile başlatmalıyız. -auth.
Hizmeti yeniden başlatırken, yeni oluşturulan yönetici kullanıcımızı yerleştirebiliriz ve test etmek için yalnızca okuyabilen bir kullanıcı oluşturacağız. Veri tabanı. Aşağıdaki adımlarda servisi nasıl yeniden başlattığımızı görelim.
Önce onu durdurmamız gerekiyor, örneğin pencereler kendimizi çalıştığı konsola konumlandırıyoruz ve tuşlara basıyoruz CTRL + C. Daha sonra tekrar normal bir şekilde hizmetimize başlıyoruz ama sonunda parametreyi geçiyoruz. yetki, aşağıdaki konsolda görebileceğimiz gibi:

Bu yapıldıktan sonra, kontrol konsoluna geri döneceğiz. MongoDB, ancak bu durumda yeni oluşturduğumuz kullanıcımızı kullanacaksak:
 mongo.exe --username = root --password = 123456 admin
Bu önceki satır ile hizmetimize güvenle erişebiliyoruz, bunu aşağıdaki resimde görebiliriz:

Bu örnekte "123456" dan daha güvenli bir parola kullanmamız gerektiğini unutmamak gerekir, bu yalnızca gösterim amacıyla kullanılır, ancak üretim ortamı için uygun değildir.
Kimlik doğrulama ile nasıl erişileceğini doğruladığımız için, yalnızca içinde okuyabilen bir kullanıcı oluşturacağız. Veri tabanı Ölçek, bunun için bir kullanıcının oluşturulmasını tekrarlayacağız, ancak rolü belirteceğiz:
 okuman
Böylece bu şekilde kullanıcıyı koleksiyonlara yazamayacak şekilde sınırlamış olacağız. Cevabı konsolumuzda görelim:

Şimdi bir belge yazmaya çalışırken bir hata alacağız:

O zaman, kullanıcılarımızı nasıl yeterince güvenli hale getirdiğimizi gördük, bu kullanıcı yönetimi işinin biraz karmaşık olduğu açıktır, ancak bir kez yaptıktan sonra, yetkisiz erişime sahip olmayacağımızdan emin olabiliriz. veritabanları koruduğumuzu.
Yedekleme yaparken sağlamamız gereken en karmaşık faaliyetlerden biri, verilerin bütünlüğünü garanti etmemiz gerektiğidir, bu bizi bir ikilem haline getirir, daha az kullanıcının çalıştığı ve yedeklemeyi yaptığı zamanı tespit eder veya veriden bağımsız olarak yapar veya yapar. .
fsync ve kilitDurum böyle olmamalı, elbette en az sayıda kullanıcı olduğunu bildiğimiz anda yedekleme yapmak her zaman önerilir, çünkü uygulama sorunlarından kaçınıyoruz, hangisini kullanırsak veriyi garanti etmek her zaman mümkündür. MongoDB nasıl olduğunu biliyoruz fsync Y kilit.
Bu iki parametre ile Veritabanımızın yazmaları reddetmesini sağlayabiliriz ve tam o anda yedeklemeleri uygun şekilde gerçekleştirebiliriz.
Bu kilidi oluşturmak için Veritabanımızda aşağıdaki komutu çalıştırmalıyız:
 db.runCommand ({"fsync": "1", "kilit": "1"});
Bununla bizim sahip olacağımız Veri tabanı yazmaya karşı etkili bir şekilde kilitlendi:

Gördüğümüz gibi, oldukça basit ve etkili, şimdi kilidi kırmak istiyorsak, komutu tekrar çalıştırmamız gerekiyor:
 db.fsyncUnlock();
İkincisi ile bir kez daha sahip olacağız Veri tabanı yazı alabilen:

Yukarıdakiler daha fazla esnekliği temsil etmesine ve veri bozulmasına karşı bize çok daha fazla güvenlik sağlamasına ve bütünlüğü desteklemesine rağmen, gerçek üretim ortamlarında izlememiz gereken bir uygulama değildir.
İdeal olan, verilerin bir kopyasına erişebileceğimiz ve böylece gerekli yedeklere sahip olduğumuz seçeneklerden herhangi biri ile değiştirebileceğimiz, çoğaltmalı bir ortam oluşturmaktır. replikasında olmak Veri tabanı kullanıcı kayıt yazamadığı için uygulamada hiçbir zaman hata ile karşılaşmayacak şekilde üretimi engelleyebilir veya kapatabilir ve yedeklemesini yapabiliriz.
Yedeklemelere gelince, sunucu replikalarının kullanılması tavsiye edildiğinden, ancak tasarlanma şekli nedeniyle işler daha karmaşık hale gelir. MongoDB, bu tip yapılar köle başı Uygulamaları çok kolaydır, bu nedenle konsepti anlamak en zoru, ancak uygulaması son derece kullanıcı dostudur. DBA.
Bununla, yönetimini gördüğümüz gibi bu öğreticiyi bitiriyoruz. MongoDB Oldukça gelişmiş, orta ölçekli bir yapıya sahipsek, kullanıcı güvenliği konusunu zaten düşünmüş olabiliriz, ancak kullanıcı oluşturmak karmaşık olmasa da, oturup bu tür bir yapı oluşturmak için iyi bir yapı tanımlamak iyi olur. izin verir.Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.
wave wave wave wave wave