Bu, projenizin boyutuna ve gereksinimlerine bağlıdır.
Kullanıcılar hakkındaki verilerin farklı amaçlarla ve böylece gerekliliklerle iki gruba ayrılmasının bir yolunu görebiliyorum:
- Kimlik verileri: kullanıcı adı, şifre hash, e-posta adresi, son giriş zamanı, vb.
- Kullanıcı tercihlerini, en son etkinlikleri, durum güncellemelerini vb. İçeren kullanıcı profili verileri.
Kullanıcıyla ilgili her iki kategoriye de düşebilecek bazı özellikler olduğunu unutmayın (örneğin, kullanıcının doğum tarihi). Bu iki set arasındaki fark, birincisinin sıkı bir şekilde kontrol edilmesidir ve yalnızca belirli iş akışları yoluyla değiştirilebilir. Örneğin, bir şifreyi değiştirmek mevcut şifreyi sağlamayı gerektirebilir, e-postayı değiştirmek e-postanın doğrulanmasını gerektirebilir ve kullanıcının şifreyi unutması durumunda kullanılır.
Tercihler, böyle bir ACL gerektirmez ve kullanıcı tarafından onaylandığı sürece, kullanıcı veya başka bir uygulama tarafından teorik olarak değiştirilebilir. Kötü amaçlı veya bir hata nedeniyle bir uygulama verileri bozarsa veya değiştirmeyi denerse (başka güvenlik önlemleri alındığını varsayarsak) bahis miktarı düşüktür. çünkü kullanıcının kimliğini almak veya hizmeti reddetmek veya yönetici için destek maliyetlerine vb. neden olmak için kullanılabilirler.
Bu nedenle, genellikle veriler iki tür sistemde depolanır:
- Kimlik verileri genellikle bir dizine veya bir IAM çözümüne gider.
- Tercih verileri bir veritabanında sona erecektir.
Uygulamada insanların bu kuralları ihlal edeceğini ve birini ya da diğerini kullanacağını (örneğin, ASP.NET üyelik sağlayıcısının arkasındaki SQL sunucusu) söylemiştik.
Kimlik verileri büyüdükçe veya onu kullanan kuruluş büyüdükçe, farklı sorun türleri ortaya çıkar. Örneğin, dizin durumunda, parola değişikliklerini hemen bir çok sunucu ortamındaki tüm sunuculara çoğaltmaya çalışır. Bununla birlikte, kullanıcı tercihi sadece nihai tutarlılık gerektirir. (FYI: Bunların her ikisi de CAPS teoreminin farklı optimizasyonlarıdır.)
Son olarak, dizinler (özellikle çevrimiçi / bulut dizinleri), OAUTH (örneğin, Facebook, Google, Microsoft Hesabı, ADFS gibi) protokollerini kullanan diğer kaynaklara erişim belirteçleri yayınlar; Bir veritabanı, dizinin gerekmeyen oldukça karmaşık birleştirmeleri ve sorgu yapısını destekleyecektir.
Daha fazla ayrıntı için, kimlik dizininde ve veritabanında yapılan birkaç arama yardımcı olacaktır.
Sonunda, herhangi bir üçüncü tarafla entegrasyon da dahil olmak üzere (ve ne kullanıyorlarsa), senaryolarınızın gelecekte ne olacağı ve ne olacağı beklenir. İyi bir proje ise ve kullanıcı kimliği verilerini güvence altına alabildiğinizden ve doğru şekilde doğrulayabildiğinizden eminseniz, veritabanına gidebilirsiniz. Aksi takdirde, bir kimlik rehberini araştırmaya değer olabilir.
DB, IMO'ya giderseniz, bir DB vs iki kullanmak sonunda hem kullanıcılar hem de uygulamalar için erişim kontrolüne iner.