Dağıtılmış Sistemlerde Kimlik Doğrulama ve Yetkilendirmeyi Anlamak
Kimlik doğrulama ve yetki herhangi bir güvenli sistemin arka kemiği oluşturur, ancak uygulamaları, bir monolithic mimariden dağıtılmış bir kişiye taşınırken önemli ölçüde daha karmaşık hale gelir. Kimlik doğrulamaları, kullanıcıların güvenlerini korumak için gereklidir.
Modern dağıtılmış mimariler - mikro hizmetler, sunucusuz fonksiyonlar ve kenar dağıtımları gibi - hem ölçeklenebilir hem de dirençli olan talep doğrulama mekanizmaları. Bu makale, güvenli bir auth sistemleri oluşturmak için temel kavramları, zorlukları ve pratik stratejileri araştırıyor, özel bir odak ile kurumsal düzeyde nasıl araçları nasıl yapılandırıyor:0).Directus).
Dağıtılmış Mimarlıklarda Kimlik ve Yetkinlik
Dağıtılmış sistemler, monolithic uygulamalarda daha az belirgin olan eşsiz güvenlik engellerini tanıtmaktadır. Bu zorlukların tanınması sağlam bir çözüm inşa etmeye yönelik ilk adımdır.
Genişlemiş Saldırı Yüzeyi Genişledi
Her hizmet, API ağ üzerinden iletişim kurmak için son bir nokta ortaya koyar ve mikro hizmet, potansiyel saldırı vektörlerinin sayısı multiplies. Bir saldırgan bir hizmet tehlikeye atabilir ve doğrulama düzgün bir şekilde izole edilmezse başkalarına bir adım taş olarak kullanabilir.
Konsolide Güvenlik Politikaları Across Services
Merkezileştirilmiş veri depolama ve farklı teknoloji yığınları, saldırıcıların kullandığı zayıf bağlantılara yol açabilir.Bir hizmet, JWT'leri oturum kurabiyelerine bağlı iken başka bir servis doğrulama için kullanabilir. merkezileştirilmiş bir politika motoru olmadan, inconsistityler, saldırganların kullandığı zayıf bağlantılara yol açabilir.
Oturum ve Scale Yönetimi
Kullanıcıların çeşitli onlarca hizmetteki oturumlarını yönetmek zor. JWTs gibi devletsiz jetonlar popülerdir, çünkü sunucunun oturum depolamasını ortadan kaldırırlar, ancak aynı zamanda geri dönüş, ve expiry gibi konuları da tanıtırlar.Bir uzlaşmacı kullanıcı için erişimin geri çekilmesi, tüm hizmetlere geri dönmeleri gerekir - beslenme sorunu.
Latency ve Performans Overhead
Her kimlik doğrulama ve yetki kontrolü geç kalmış bir anahtardır. Bir monolith, tek bir in-memory check hızlıdır. dağıtılmış bir sistemde, belirtilmiş bir kimlik hizmeti veya kriptografik imzalar aracılığıyla, performansla yavaşlayan bir güvenlik sürekli bir dikkate değerdir.
Foundational Protokoller ve Standartlar
Uygulama ayrıntılarına girmeden önce, dağıtılmış sistemlerde güvenli bir şekilde kabul edilen en yaygın kabul edilen protokolleri anlamak önemlidir.
JSON Web Hediyeleri (JWT)
JWTs kompakt, JSON ödeme yüklerini içeren URL güvenli jetler. Onlar kendi kendine özgüdür - varsayılan olarak şifrelenir, bu nedenle hizmetler herhangi bir şifreleme olmadan ödeme yüklerine asla uymamalıdır. JWTs'i her istek için bir veritabanına sahip olmak için kaydolur.
OAuth 2.0
OAuth 2.0, kullanıcı kimlik doğrulamasını sağlamadan bir kullanıcı tarafından sınırlı erişim elde etmek için üçüncü taraf uygulamaları sağlayan bir yetkilendirme çerçevesidir.OAuth 2.0, özel bir yetki sunucusuna izin vermekle çalışır, bu da kullanıcı kimliğiyle eşleştirilir. OAuth 2.0, çoğu modern Tekerli İşaret Sistemi için temeldir.
Güvenlik Markup Dili (SAML)
OAuth'dan daha yaşlı olsa da, SAML, özellikle de miras sistemleri ile entegrasyon için ortak kalır. SAML XML tabanlı iddiaları kullanır ve genellikle kimlik doğrulama talebine girişen servis sağlayıcına dayanır.For greenfield distributed systems, OAuth 2.0/OIDC genellikle mobil ve API-ilk mimarileri için daha iyi bir destek nedeniyle tercih edilir.
Güvenli Kimlik için Stratejiler
Doğru kimlik doğrulama stratejisini seçmek, sistemin belirli ihtiyaçlarına bağlıdır, örneğin hizmet sayısı, verilerin duyarlılığı ve kullanıcı deneyimi gereksinimlerine bağlıdır.
JWTs ile Hediye bazlı Kimlik
JWT'leri kullanarak, dağıtılmış sistemlerde devletsiz kimlik doğrulama için en yaygın yaklaşımdır.Her hizmet, kullanıcılarına geri dönmelerini ve aynı kamu anahtarını paylaşmalarını sağlayarak, ağ turlarını azaltır ve ölçeklenebilirliği artırır. Örneğin, Directus, JWTs'i API kimlik doğrulamasını sağlar ve ön başvurularını kullanıcılarına ve izin verilenleri onay için geri göndermeye izin verir.
OAuth 2.0 ve OpenID Connect (OIDC)
Üçüncü taraf girişini desteklemeli sistemler için, kullanıcı kimlik sağlayıcılarının (IdPs), OAuth 2.0 ile OIDC, "/kullanıcı kullanıcı deneyimlerini oluşturmak için kolay hale getiriyor.The permission server (e.g, Keycloak) issues tokens after authenticating the user. Services then validate those tokens. OIDC, kullanıcı profili bilgilerini "/kullanıcının son noktası aracılığıyla elde etmek için standart bir yol sunar.
Çok faktörlü Kimlik (MFA)
MFA, iki veya daha fazla faktör gerektirdiği hesap uzlaşma riskini önemli ölçüde azaltır: MFA'nın gerçekleştirildiği bir şey (köfke veya donanım anahtarı) veya MFA'nın kullanılmadığı bir şey.
Şifresiz ve FIDO2/WebAuthn
Şifresiz kimlik doğrulama daha güvenli ve kullanıcı dostu bir alternatif olarak yol katıyor. WebAuthn, FIDO2 standardının temel bir bileşeni, kullanıcıların biyometrik veya donanım güvenlik anahtarlarını kullanarak halka açık kriptografi kullanarak dağıtmasını sağlar. Özel anahtar asla kullanıcının cihazını terk etmez, sunucudan ihlal etme riskini ortadan kaldırır. Directus WebAuthn outofthebox'ı destekler, parolasız girişleri kullanarak şifresiz giriş yapmak için kolay hale getirir.
Güzel Yasaklı Yetkinlik
Bir kullanıcı gerçekleştirilmiş olduğunda, izin verilen sistemlerde tam olarak ne yapabileceklerini belirler, yetki kararları hızlı ve sürekli olarak hizmet sınırları içinde yapılmalıdır.
Rol Tabanlı Erişim Kontrolü (RBAC)
RBAC, kullanıcının rolüne dayanan izinler verir (örneğin, yönetici, editör, görüşer). Bu, rollerin statik olduğu en basit modeldir ve karmaşık dağıtılmış ortamlarda, roller herhangi bir veri operasyonu öncesinde doğrudan API tarafından değerlendirilir.
Attribute-Based Access Control (ABAC)
ABAC, kullanıcının özelliklerini, kaynağı, eylem ve çevre (örneğin, günün zamanı, konumu) değerlendiren politikalar kullanır. Örneğin, bir politika “editing belgeleri yalnızca kullanıcı bölüm ve belgenin bir kombinasyonuyla destekleyebilir ve özel bir kancaya izin verir.
Access Control Lists (ACL) ve İzinler
Bireysel kullanıcıların veya grupların belirli kaynaklar için eşsiz izinlere ihtiyacı olan sistemler için, ACLs doğrudan bir harita sunar. ACLs, kaynağın kendisi veya merkezileştirilmiş bir veritabanında depolanabilir.ACLs, büyük sayıda kaynak ve kullanıcı için yönetilebilir.
Least Privilege Prensibi
Ne olursa olsun, her zaman en az ayrıcalık ilkesine bağlı olarak. Kullanıcılar ve hizmetler sadece işlevlerini yerine getirmeleri gereken izinler verilebilir.Reklam olarak kontrol ve denetim izinleri. dağıtılmış sistemlerde, hizmet hizmeti-hizmet iletişimi de sıkı kontrollere ihtiyaç duyar - ek bir ihtiyaç olmadıkça kullanıcı verilerine erişmemelidir.
Directus ile Pratik Uygulama
[FONT:0)Directus[DÜT:1], REST veya GraphQL API'sini kullanan açık kaynaklama ve izin verme katmanı olarak kullanılabilir.
Directus'ta Kimlik Sağlayıcıları
Directus birden fazla kimlik doğrulama mekanizması destekliyor:
- [FONT:0)Local kimlik doğrulama:[Dönetici:[Döneticiler e-posta ve şifre ile kayıt ve giriş yapabilirler. Şifreler bcrypt kullanarak kabul edilir.
- [FONT=0)OAuth 2.0 / SSO: Direktus, dış sağlayıcılara karşı kimlik sağlayıcı olarak hareket edebilir (Google, GitHub, Okta, Azure AD vs.).
- [FONT:0)WebAuthn / FIDO2: Donanım güvenlik anahtarları veya biyometriklerle şifresiz giriş.
- [FONT=0)API Hediyeleri:[Döneticileri için] Sunucu-server iletişim için, Directus statik API jetleri ve dinamik JWT jetonları belirli izinlere kapılabilir.
- [FONTAP / Active Directory: [[Dönetici:0][Dönetici:0)LDAP / Active Directory:[Dönetici:[Dönetici:[Dönetici: 1) Uygulamanın işletme dizileri ile entegrasyonu.
Directus, ihraç edilmek, yenilemek ve geri bildirim almak için çalışır.Bir kullanıcı girişleri olduğunda, yeniden giriş yapmadan (JWT) ve bir yenileme token. erişim token kısa bir ömür (default 15 dakika) vardır ve yenileme süresine göre daha uzun sürer (7 gün varsayılan olarak) ve yeniden giriş yapmadan yeni erişim jetonları elde etmek için kullanılabilir.
Yazarlar ve Doğrudanus'ta İzinler
Directus, RBAC'yi dinamik koşullarla birleştiren zengin bir izin sistemi sağlar. Rolleri tanımlayabilirsiniz ve sonra koleksiyon başına izinler (oku, oluşturma, güncelleme, sil) kendi mesajlarıyla güncellemenizi sağlar. Permissions ayrıca “$CURRENT USER”, “$CURRENT ROLE”, veya hatta tarih koşulları. Örneğin, bir kullanıcının kendi mesajlarını güncellemesine izin verebilir.
Directus ayrıca, kancalar aracılığıyla özel izin doğrulamayı destekler.Eğer herhangi bir API işlemine karşı kapalı olmayan bir izin kontrolü yerine getirmeniz gerekir - dış bir hizmete karşı kontrol veya bir iş kuralına karşı kontrol etmek gibi - herhangi bir API işleminden önce veya sonra çalışan özel bir kanca senaryosu yazabilirsiniz.
Directus'u Dış Mikro Servislerle Bütünleştirin
Bir dağıtılmış mimaride, Directus, Doğrudanus'un genel anahtarını kullanarak doğrudan kullanıcıya bağlı olmayan “API jetonları” olarak adlandırarak, Directus'un genel anahtarını doğrulayabilir veya başka bir hizmeti doğrudan doğrulayabilir.For service-to-service communication, Directus, doğrudan bir kullanıcıya bağlı olmayan “API jetonları” desteklemektedir.You can also use Directus as an OAuth 2.0 permission server, letting other services to get access tokens programmatically.
Kimlik ve Yetkinlik
Hangi araçları ve protokolleri seçerseniz seçin, herhangi bir üretim dağıtılmış sisteminde uygulanmalıdır birkaç güvenlik uygulaması vardır.
Şifrelenmiş İletişim Kanalları Kullanın
Müşteriler, hizmetler ve kimlik doğrulama sunucusu TLS 1.2 veya daha yüksek kullanarak şifreli olmalıdır. Bu, karşılıklı algı ve insan-in-the-orta saldırıları önlemek için her zaman HTTPS'yi API Gateway veya yük bakiyesi ile uygulamalıdır.
Güvenli Hediye Deposu
Müşteri tarafında, platform güvenli depolama için depoya erişim sağlar.For browser-based applications, Http'ı sadece “Güvenli” ve “SameSitenin bayrakları XSS saldırılarını önlemek için. Mobile ve masaüstü uygulamaları için, platformun güvenli depolamasını kullanın (örneğin iOS, Android Keystore). Yerel olarak jetonları yerel olarak depolamaktan kaçının, JavaScript'e erişilebilir olduğu gibi.
Hediye Revo ve Rotation
Yeniden iptal etme planı. Kısa ömürlü erişim jetleri, bir uyarının gerekli olduğu durumlarda, bir şifre değişikliği gibi bir güvenlik olayı sonrasında logout kullanıcılarının tümünü geri almak için bir API'yi otomatik olarak yenilediler. Direktus otomatik olarak kullanılanlardan sonra yenilenir (rotation) ve bir API'yi bir kullanıcı seansını geri almak için bir sistem uygular.
Limiting ve Brute Force Protection
Kimlik doğrulama uç noktaları, giriş ve kayıt uç noktalarında sınırlı olan bir geri dönüşüm oranıdır. Direktus, giriş girişimleri için limitli bir maliyetle elde edilir - birkaç başarısız denemeden sonra, kullanıcı hesabı geçici olarak kilitlenir.Daha gelişmiş koruma, Nginx, Cloudflare veya bir API gibi araçları kullanarak elde edilebilir.
Logging ve İzleme
Tüm hizmetlerden, anormal kimlik doğrulama modellerini tespit etmek için girişleri yapın. Başarılı ve başarısız giriş girişimleri, token yeni olaylar ve izin inkarları. SIEM sistemi (örneğin, Wazuh, ELK yığını) hizmetleri arasındaki olayları ilişkilendirir. alışılmadık zamanlarda yapılan yüksek sayıda başarısız girişimler veya ayrıcalıklı operasyonlar için uyarılar ayarlayın.
Düzenli Güvenlik Denetimleri ve Güncellemeleri
JWT, bcrypt ve Directus gibi tüm bağımlılıkları ve hizmetleri devam etmek, güvenlik yamalarını otomatik tarama araçları (örneğin, Bağırga, Snyk) bilinen açıklıkları tanımlamak için.Relevleme ve izin değerlendirmeleri odaklanmış periyodik penetrasyon testleri ve kod yorumları.
Ortak Pitfalls ve Them'dan Nasıl Kaçırmak
En iyi uygulamalarla bile, takımlar genellikle hataları yapar. İşte dağıtılmış kimlik doğrulama ve yetkide bazı yaygın tuzaklar:
Geçerlilik olmadan Hediyeleri Güvenmek
Her hizmet, Jetonları bağımsız olarak doğrulamalıdır - bir token geçerli olduğunu varsaymak gerekir çünkü iç bir ağdan geldi. imza doğrulama, kontrol sona erme ve token'un geri dönmediğini doğrulama. Mikro hizmetler ortamları, bir yankar veya hizmet ağı kullanmayı düşünün (örneğin, Istio, Linkerd) geçerliliği sağlamak için.
Overpermissive Varsayılan Rols
Ortak bir hata, varsayılan olarak “daha sonralayıcı kullanıcı” gibi izin verilendir. Her zaman izinler ile başlayın ve sadece gerekli olan şeyleri ekleyin. Directus, varsayılan rolü ve gerçekleştirilmiş rolü tanımlamanıza izin verir, bu yüzden bunları kısıtlamaya dikkat edin.
Hizmet Hesabı Güvenlik Ignoring Service Account Security
Hizmetsiz kimlik doğrulama genellikle ihmal edilir. Tüm hizmetler için uzun ömürlü statik API jetlerini kullanmayın. Bunun yerine, servislerin kimlik sağlayıcından kısa ömürlü jetonları talep edebileceği bir sistem uygulayın (örneğin Directus gibi) bu jetonları düzenli olarak kullanarak.
Zavallı Hata Auth Flows'ta işleme
Hata mesajlarında çok fazla bilgi ortaya koymak saldırganlara yardımcı olabilir. Örneğin, “Kullanıcı bulunamadı” vs “Invalid password”, kullanıcı adı “Invalid information” gibi genel mesajları kullanın ve detayları sunucunun da oturum açma gibi oturum açma koşulları.
Gerçek Dünya Kullanım Vakası: Dağıtılmış E-Ticaret Platformu
Mikro hizmet mimarisi ile inşa edilmiş bir e-ticaret platformu düşünün. Ürün kataloğu, alışveriş sepeti, sipariş yönetimi, ödeme işleme ve kullanıcı profilleri için ayrı hizmetler vardır.Her hizmet, kullanıcıyı özgünleştirmek ve eylemleri yazarlaştırmak zorundadır.
İşte güvenli bir sistem nasıl inşa edilebilir:
- [FONT:0]Identity Management:[Dönetici:[Dönetici:0) Merkezi kimlik sağlayıcısı olarak Directus'u kullanın.Bu kullanıcı hesapları, kayıtlarını saklar ve Google ve Facebook aracılığıyla SSO'yu sağlar.
- [[Kategori:0)Token Issuance:[Dönetici:[Dönetici 1 ) Kullanıcı girişleri olduğunda, Doğrudan bir JWT kullanıcı kimlik, rol ve MFA statüsü içeren bir JWT sorunları. erişim token kısa ömürlü (15 dakika) Http'te bir yenileme yapılır.
- [FONT=0]Hizmet Doğrulaması: [Dönetici 1] Her mikro hizmet, Doğrudanus'un kamusal anahtarını kullanarak JWT'yi doğrulamaktadır.Her istek için Directus'u aramalarına gerek yoktur.
- [[FONT:0)Yazdırma:[Dönetici:[Dönetici:0) Ürün katalog servisi, tüm siparişlere erişmek için "admin" veya "support" rolü gerektirir; normal kullanıcılar sadece kendi siparişlerini görebilir (CURRENT USER'in kullanıcı alanıyla karşılaştırması ile kontrol edilebilir).
- [FONT:0]Hizmet-to-Hizmet:[Dönetici:[Dönetici:0) Ödeme hizmeti, sınırlı izinleri kullanan Direktus API'si kullanarak sipariş servisi ile iletişim kurar - sadece kullanıcı profillerini oluşturamaz ve güncelleştirme siparişleri oluşturabilir.
- [FONT:0)Monitoring:[Dönetici:[Dönlendirme:[Dönlendirme) Tüm kimlik doğrulama girişimleri merkezi ELK yığınına giriş yapılır. Alerts aynı IP'den çok başarısız girişler için yapılandırılır.
Bu kurulum, tüm hizmetlerde çalışan ölçeklenebilir, düşük değer ve güvenli kimlik doğrulama ve yetki katmanı sağlar.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Güvenli kimlik doğrulama ve dağıtılmış mimarilerdeki izinsiz sistemler, OAuth 2.0/OIDC'yi federasyon için kabul etmek, en az ayrıcalıkları anlamak ve her şeyi izlemek ve güvenlik en iyi uygulamaları uygulamak, kesintisiz kullanıcı deneyimi sağlamak için dağıtık bir sistem oluşturabilirsiniz.
Daha fazla okuma için, [[Dönetici:0)Directus doğrulama belgesi[Dönetici:2) ve resmi )OAuth 2.0 spesifikasyon[Döneticiler için[Döneticiler için) JWT için en iyi uygulamalar için, [[DüzDÜDÜDÜDÜDÜDÜDÜDÜSÜSÜSÜye Olmayanlar İçin Tıklayınız.