Kimlik doğrulama ve Yetkilendirme Uygulamaları
Neden Kimlik ve Yetkin Mimarlıkta Önemlidir
Serverless hesaplama, takımların altyapı yönetimi tarafından nasıl inşa ve dağıtıldığını ve dağıtımını azaltmalarını ve talep edilen eylemi gerçekleştirmelerine izin verdiklerini değiştirdi.Bu doğrulama (grantlama izni) ve herhangi bir üretim hazırlayıcı uygulama olmadan, her işlev, çağrılının hassas verileri korumak için bağımsız olarak doğrulamalıdır ve talep edilen eylemi gerçekleştirmek için izin verilir.Bu doğrulama (vering identity) ve izin verir (granting permissions)
Kimlik doğrulama mantığının merkezi bir sunucuda yaşayabileceği monolithic uygulamalardan farklı olarak, sunucusuz uygulamalar API ağ geçidi, kimlik hizmetleri ve bireysel fonksiyonlarda kimlik doğrulamalarını dağıtır.Bu dağıtım, güvenlik, performans ve geliştirici deneyimi dengelemek için net bir strateji talep eder.
Önceki yazı: A Clear Distinction
Sık sık sık sık sık sık sık, kimlikten sonra izin verilen soruları cevaplayan kimlikleri kullanarak veya bir kullanıcı ve şifre, bir zaman kodu veya biyometrik faktör gibi doğrulama ve yetkilendirme. Authorization cevaplar "Kimin kurulmasına izin verilir?" - kimlikten sonra izinleri kontrol edin.
Sunucusuz ortamlarda, kimlik doğrulama API ağ geçidinde veya bir işlev tetiklenmeden önce özel bir kimlik sağlayıcı aracılığıyla sık sık sık sık sık yapılır. Yazarizasyon, bir JSON Web Token (JWT) veya bu sorumlulukların bir kombinasyonu aracılığıyla, güvenlik veya veri sızıntıları gibi açıklığa yol açabilir.
Serverless Applications için Kimlik Stratejileri
Serverless kimlik genellikle üç kategoriye girer: tamamen üçüncü taraf hizmetleri, işlevlerin içindeki özel kimlik ve OAuth2/OpenID Connect kullanarak güvenlik sağlar.Her yaklaşım uygulama kolaylığı, kontrol ve maliyet arasındaki ticaret-offları sunar.
Üçüncü bölüm Kimlik Sağlayıcıları
Çoğu sunucusuz uygulama, kimlik doğrulamayı sağlamak için adanmış bir IdP'ye güveniyor. Bu hizmetler kullanıcı yönetmenleri, şifreyi yönetmek, oturum yönetimi ve sosyal giriş sağlayıcıları ile entegrasyon. Popüler seçenekler şunlardır:
- [FONT=0)Amazon Cognito[[Dönetici: 1 ) – AWS API Gateway ve Lambda ile yerel olarak entegre edilen bir hizmettir. Cognito, kullanıcı havuzlarını geçici AWS kimlik kayıtları için sunar ve MFA'yı destekler ve Lambda'nın uyarlanmasıyla özel işlenebilirlik sağlar.
- [FONT=0]Auth0[[Dönetici:0][Dönetici:0)Auth0[FONT=FONT=FONT=FONT=))[FONT=[FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=I=FONT=I=I=I=FONT=I=I=I=FONT=I=I=)))
- [FONT=0]Firebase Authentication[[[Dönetici: 1 ) – Google'ın Firebase paketinin bir parçası, e-posta / kelime, telefon ve popüler sosyal sağlayıcıları destekler. Firebase Auth Firebase Functions ve Cloud Run ile sorunsuz bir şekilde bütünleştirir.
- [FONT:0)Azure Active Directory B2C[Dönetici: 1) Azure AD entegrasyonu gerektiren işletmeler için B2C, OAuth2 ve SAML gibi standartları desteklemek için kimlik yönetimi sağlar.
Güvenli kriminal depolama, şifreleme ve uyumluluk yükünden üçüncü taraf IdP offloads kullanarak. Ayrıca MFA, hesap kurtarma ve brute-force koruma gibi gelişmiş özelliklerin uygulanmasını basitleştirir.
Serverless Functions'te özel kimlik doğrulama
Kimlik doğrulama akışı üzerinde tam kontrole ihtiyacınız olduğunda - örneğin, bir miras kullanıcı veritabanı ile entegrasyon veya özel kimlik doğrulama protokollerine giriş yaptığınızda - doğrudan bir Lambda veya diğer sunucusuz işlevin içinde kimlik doğrulama mantığı uygulayabilirsiniz. Bu model genellikle API uç noktaları için özel bir token, dış ortaklar için API anahtarları gerektirdiğinde kullanılır.
Ancak, sıfırdan özel kimlik doğrulama risklidir. Serverless işlevleri devletsizdir, bu nedenle şifreyi güvenli bir şekilde işlemek zorundasınız (bcrypt veya Argon2), token nesli ve seans yönetimi. Cold, geçncy artışlarına neden olabilir.Bu nedenlerle, özel kimlik doğrulama mantığının ağır olduğu en iyi şekilde iç hizmetler veya kritik olmayan kullanıcı üsleri için ayrılmıştır.
OAuth2 ve OpenID Connect in Serverless
OAuth2, kullanıcıları Google'da imzalamasına izin vermek için endüstri standardıdır, GitHub veya Facebook, kullanıcı iddialarını taşıyan JWT'ler bu jetonları bir işleve, gecikmeli ve maliyete izin vermek için OAuth2/OIDC'nin kullanır.
Sosyal Giriş ve MFA
Sosyal giriş genellikle işaret sırasındaki sürtünmeyi azaltmak için en kolay yoldur. Hem Google hem de GitHub kimlik doğrulama platformuyla entegre edilebilir veya OAuth2 yetki kodu akışını manuel olarak uygulamanız gerekir, MFA ile sosyal giriş yapmak, daha hassas operasyonlar için uygularsa, saldırganın ikinci bir faktör olmadan sunucuya erişemez. çoğu IdPs desteği MFA'yı kutudan çıkarır, ancak bunu IdP'nin panounu yapılandırmalısınız.
Hediye bazlı Kimlik: Serverless Auth
Çünkü sunucusuz fonksiyonlar devletsiz, jetonlar - özellikle JSON Web Hediyeleri (JWT) - hizmet arasında kimlik doğrulama ve yetkilendirme işlemine izin vermek için tercih edilen mekanizmadır. A JWT, bir üst düzey, bir ücret yükü (kahkadar) ve imzadan oluşan kompakt bir işlevdir.
JWT Yapısı ve Geçerliliği
Tipik bir JWT, sunucusuz bağlamda, devre dışı bırakmadan önce standart iddialar (konuş, konu, sona erme) ve özel iddialar (kırıklar, izinler, kullanıcı kimlikleri) içerir.Bir sunucuda, görevlerin yerine getirilmesi veya son noktaya erişimi inkar eden bir IAM politikası.
Örneğin, Auth0'ı AWS Lambda ile kullanırken, Auth0'ın JWKS uç noktasına karşı token olan özel bir yazarizer yapılandırın.The authorizer then addes the decoded claim to make fine-grained permission decisions without performing token validasyon tekrar.
Oturum vs. Token Authentication
Geleneksel sunucu tabanlı uygulamalar sunucuda saklanan oturum kurabiyelerine güveniyor. sunucuda, seanslar zorlaşıyor çünkü fonksiyonlar zahmetsizce, ancak oturum açma işlemini sıfırlayacak şekilde ayarlanmalıdır (örneğin, token siyah listeler veya kısa son zamanlardaki geçiş zamanlarını yenilenen jetler ile birlikte gerçekleştirir).
Serverless için Yetkilendirme Modelleri
Kimlik doğrulamadan sonra, bu kimlikin ne yapabileceğini belirler. Üç ortak model Rol Tabanlı Erişim Kontrolü (RBAC), Attribute-Based Access Control (ABAC), ve Politika tabanlı Access Control (PBAC).
Rol Tabanlı Erişim Kontrolü (RBAC)
RBAC'de, izinler rollere karışır (örneğin, yönetici, editör, görüşer). Kullanıcılar bir veya daha fazla rol görevlendirilir ve sistem, kullanıcının rolü talep edilen eylemi izin verdiğinden kontrol eder. RBAC, JWT'yi deşifre ettikten sonra, son nokta için gerekli rolü içeriyorsa kontrol eder.Bu iyi tanımlanmış kullanıcı hiyerarşileri ile uygulamalar için iyi çalışır.
Attribute-Based Access Control (ABAC)
ABAC, kullanıcı özelliklerinin bir kombinasyonunun (örneğin, bölüm, izin seviyesi), kaynak özellikleri (örneğin, ABAC politikaları, Open Policy Agent (OPA) gibi bir motor kullanarak genellikle değerlendirilir.
Politikaya Dayalı Erişim Kontrolü (PBAC)
PBAC, uygulama kodu dışındaki yetkilendirme politikalarına merkeziyet vermektedir. AWS Kimlik ve Access Management (IAM) gibi Bulut hizmetleri, hangi işlemlerin hangi kaynaklarda hangi kaynakların hangi kaynakların izin verildiğine dair JSON politikaları tanımlamanıza izin verir. Bu tutarlılık hizmetleri, kullanıcı oturumuna ek olarak eklenebilir.
Yetkisiz Uygulamaların Yetkisi
İzinin uygulanabilir olduğu üç temel katman vardır: API Gateway (işten önce), bir Lambda yazarlayıcısı veya işlevin içinde.
API Gateway Authorization (Built-in)
AWS API Gateway, Azure API Yönetimi ve Google Cloud Endpoints yerel JWT geçerliliği ve politika tabanlı yetkiyi destekliyor. Örneğin, API Gateway'nin HTTP API'si belirli bir sorundan JWT'yi doğrulayabilir ve sonra haritanın kod izinleri olduğunu iddia eder.Bu yaklaşım hızla çünkü geçerlilik ağ kenarında gerçekleşir, Lambda'yı teşvik eder ve maliyetle azaltır.
Lambda Function Authorizers
A Lambda yazarizer (eski olarak özel bir yazarizer olarak bilinir) kullanıcı iznini belirlemek için bir veritabanıdır (bir ayık başlığı veya sorgu parametresi olarak) ve API Gateway'nin uygulamadığı bir IAM politikası döndürür.Yazdırıcı JWT, dış bir hizmet çağırabilir veya bir veritabanını dikkatlice belirlemek için sorgulayabilir.Çünkü yazarcının kendisi bir sunucusuz işlevidir, herhangi bir mantık uygular.
Doğrudan Fonksiyonlar içinde
Bazı mimarilerde, özellikle bir API ağ geçidi tarafından önlenmeyenler (örneğin, etkinlik odaklı fonksiyonlar, GraphQL çözümleyicileri), yetkiniz işlevinizin içinde olmalıdır. Bu model, JWT'ye karşı izinleri ve esnekliğe karşı kontrol etmek, işlevlerinizi geri yüklemeye yol açabilir.
Örneğin, Lambda için orta dikkat edin, JWT'yi parlar, roller onaylar ve ya da 403 yanıt döndürür veya eller kontrol eder. Bu, fonksiyon kodunu temiz tutar ve tek bir yetki noktası uygular.
Güvenli Serversız Kimlik ve Yetki için En İyi Uygulamalar
Doğru araçları ve desenleri seçmek ötesinde, güvenli bir sunucusuz bir tabaka en iyi uygulamalara bağlılık gerektirir. Aşağıdaki öneriler bulut sağlayıcı belgesi ve OWASP yönergelerinden alınmıştır.
HTTPS Her yerde HTTPS'yi kullanın
Müşteriler arasındaki tüm iletişim, API ağ geçidi ve geri dönüş işlevleri TLS. Sertifikası pinning ile şifrelenebilir, ancak bu sertifikaların düzenli olarak geri döndüğünü garanti eder.
Enforce Least Privilege
Her işlev sadece ihtiyaç duyduğu izinlere verilmelidir. Lambda işlevleri için iyi huylu IAM rollerini kullanın ve ESFLT gibi geniş izinler atamaktan kaçınmalıdır:2 Benzer şekilde API ağ geçidi yazarizerleri belirli kaynaklara erişimi sınırlamak için politikalar geri vermelidir.
Multi-Factor Authentication (MFA)
En hassas bir operasyon için MFA, özellikle de yönetici uç noktaları. Cognito ve Auth0 desteği MFA TOTP veya SMS ile.In serverless, MFA doğrulamasını JWT (e.g., 03)'de bir iddiayı kontrol ederek zorlayabilirsiniz.
Her Sınırda Geçerli Hediyeler
Bir token'in bir fonksiyonuna geçtiğini varsaymayın, zaten bir akış hizmeti tarafından onaylanmıştır.Her işlev token'in imzasını, sona ermesini ve soruncısını bağımsız olarak doğrulamalıdır.
Sırları güvenli bir şekilde yönetin
Hiçbir zaman API anahtarlarını, gizli anahtarları veya işlev kodunda veritabanı bilgilerini kullanın. AWS Sırları Yöneticisi, AWS SSM Parametre Store veya HashiCorp Vault gibi bir sır yöneticisi kullanın.Yerel gelişim için, çevre değişkenlerini dikkatli kullanın ve asla kontrol etmek için taahhüt etmeyin.
Rotate Keys Düzenli Olarak
Rotate anahtarlar, API anahtarları ve müşteri sırları normal bir programda (örneğin, her 90 gün) Automate rotasyonu bulut sağlayıcı araçları kullanarak. JWTs için, halkın anahtar URL'sinin (JWKS endpoint) geçerlilik başarısızlıklarından kaçınmak için güncellendiğini sağlayın.
Log and Monitor Access Access
API ağ geçidi erişim günlükleri ve Lambda CloudWatch logları için ayrıntılı giriş. Tekrarlanan 401 hataları, olağandışı coğrafi konumlar veya AWS CloudWatch Alarmları veya üçüncü taraf SIEM araçları gibi anormal desenler için izleyin.
Implement Rate Limiting ve Throttling
API ağ geçidi kullanım planlarını kullanın, throttling veya WAF (Web Application Firewall) doğrulama uç noktaları korumak için (örneğin, /login) brute-force saldırılarından. Lambda işlevi koncurrency limitleri aynı zamanda ezici aşağı uç IdPs'ten ani bir artış engelleyebilir.
Auth Logic Thoroughly
Kontrol ve yetki kodu için birim testleri ve entegrasyon testleri yazın. gecikmiş jetler, yanlış belirtilmiş jetler için testler ekleyin ve izin verme teşebbüsleri kullanın. API ağ geçidi olayları hakkında alay etmek için araçlar kullanın.
Güvenlik Patches'te Güncellemeler
Sunucusuz ekosistem hızla gelişti. IdP ve bulut sağlayıcınızdan güvenlik danışmanlarına abone olun. Lambda runtime versiyonlarına ve bağımlılıklara (örneğin, JWT kütüphanelerine, müşteriler) düzenli olarak uygulayın.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Kimlik doğrulama ve yetki sunucusuz uygulamalarda tercih edilmez - kullanıcılarına güvenmelerini ve hassas verileri korumalarını sağlamak temeldir.Vieraging managed ID sağlayıcıları, token-based doğrulama ve tabakalı yetki modelleri, kullanıcı tabanınız büyüdükçe güvenilir bir temel oluşturabilirsiniz.Bu makalede açıklanan modeller - üçüncü taraf IdPs, JWT geçerliliği, API yazarizerleri ve RBAC/AB - üretim ortamlarında kanıtlanmış ve uygulanabilir.
Güvenlik sürekli bir uygulama olduğunu unutmayın, tek zamanlı bir yapılandırma değil. Düzenli olarak auth politikalarınızı gözden geçirin, denetim logları ve güncelleme bağımlılıkları. doğru yaklaşımla, sunucusuz kimlik doğrulama ve yetkilendiriciler, engeller değil, hızlı, güvenli ve ölçeklenebilir uygulamalar için.For more reading, consult Top Ten ) and update dependFLT:2JWT.io)