Serverless Applications'ta Rol tabanlı Access Control'i uygulama
Serverless hesaplama, organizasyonların inşa ve dağıtma yollarını değiştirdi.Süresel altyapı yönetimi ile, bulut sağlayıcı ölçeklendirme, yarılama ve kullanılabilirlik ile ilgili olarak, bu değişim, yeni güvenlik zorlukları, özellikle de erişim kontrolü konusunda yeni güvenlik sorunları ortaya koyar.In a serverless environment, functions are ephemeral, granular ve sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık, izinler, mesaj kuyrukları veya planlanan olaylar olmadan güvenli bir şekilde, güvenli bir şekilde erişim kontrolü olmadan.
Rol tabanlı Access Control (RBAC) nedir?
Rol bazlı Access Control, bireysel kullanıcılar için değil rollere izin veren bir güvenlik paradigmasıdır. Kullanıcılar daha sonra iş işlevlerine dayalı rollere karşı gruplandırılabilir ve bu roller hangi kaynaklar üzerinde performans gösterebileceklerini belirler. Örneğin, sunucusuz bir belge işleme sistemi, anurFLT:0)) Bu merkezileştirme işlemine izin verebilir ve tüm S3 kovaya erişim sağlarken, alginçlerin en az 2.sını sağlar.
RBAC üç temel kuralla tanımlanır:
- [FONT:0)Role atama:[Dönetici:[Dönetici:0) Bir konu, bu izni içeren bir rol görevlendirilmişse bir izin kullanabilir.
- [FONT:0)Role yetkilendirme:[Dönetici:[Dönetici:0) Bir konu için aktif bir rol onlara izin verilmelidir.Bu, bir kullanıcının birden fazla rolü olsa bile, sadece bir rol bir seferde aktif olabilir (veya bir alt set).
- [FONT:0) İzin izni:[Dönetici:[Dönetici:0) Bir konu, konu için izin verilen izinin yalnızca yetkili olup olmadığını bir izin kullanabilir.
Neden Serverless Access Control Challenges
Geleneksel monolithic uygulamalar genellikle tek bir giriş noktası vardır, orta-tavran kimlik doğrulama ve izin vermelerini basitleştirir. Serverless uygulamalar, aksine, onlarca veya yüzlerce küçük, eyaletsiz fonksiyonlardan oluşur, her biri doğrudan kullanılabilir.
- [FONT:0)Yerel izin yönetimi:[Dönetici:[Dönetici:0) Her işlev veritabanı, kuyruklar veya dış API'ler ile etkileşime girebilme iznini gerektirir.
- [FONT:0]Dynamic kaynak erişim:) Fonksiyonlar, etkinlik ücreti veya kullanıcı bağlamına bağlı olarak farklı kaynaklara erişmeli. Statik IAM politikaları bu senaryolarda sık sık sık sık kısa düşebilir.
- [FONT:0]Limited görünürlük:[Dönetici:[Dönetici:0)[Dönetici:0)) Kaynaksız mimariler alt altyapıdan soyutlanır ve hangilere ve ne zaman erişilebilen denetim yapmak zorlaşır.
- [FONT:0)Cold etkileri:[Dönetici:[Dönetici:0)[Dönetici:0)Cold start effects:[[Dönetici:[Dönetici: 0) Bir veritabanından rol almak için gerekli olan Authorization logic, potansiyel olarak kullanıcı deneyimine geç kalmış olabilir.
Bu zorluklar iyi planlanmış bir RBAC uygulaması sadece en iyi bir uygulama değil, üretim-grad sunucusuz uygulamalar için bir zorunluluk haline getiriyor.
Bir RBAC Sisteminin Temel Bileşenleri
Uygulama stratejilerine girmeden önce, herhangi bir RBAC sisteminin bina bloklarının anlaşılması faydalıdır:
- [FONT:0) Kullanıcılar:[Dönetici:[Dönetici:0) erişime ihtiyaç duyan insan veya hizmet kimlikleri.
- [FONT=0)Roles:[Dönetici:[Dönemli kategoriler)[Dönetici:0))[Dönemli:[Dönemli: · 4)))))))))))[Dönergeler (Döneticiler)))
- [FONT=0) İzinler:[Dönem:[Dönemli bir kaynak üzerinde belirli bir eylem yapma yeteneği (örneğin, [[Dönetici: 2)
- [FONT:0)Policies:[Döneticiler:[Döneticiler:[Döneticiler:[Dönler:)[[Dönler:[Dönler:)))))))) Bir dizi izni tanımlayan Belgeler ve rollere eklenmiştir.
- [FONT=0]Session context:[Dönetici, kullanıcı, rolleri ve mevcut istek (örneğin, zaman, IP, kaynak erişimli).
Sunucusuz olarak, bu bileşenler genellikle bulut sağlayıcı IAM sistemleri (AWS IAM, Azure RBAC, GCP IAM) tarafından ifade edilir, ancak özel bir yetki hizmeti kullanarak uygulama katmanında da uygulanabilir.
RBAC'yi Serversız Uygulamaların Uygulanması için Stratejiler
Tek boyutlu bir yaklaşım yoktur. Doğru strateji bulut sağlayıcınıza, izinlerinizin karmaşıklığına ve geç kalmışlık için toleransınıza bağlıdır. Aşağıda kanıtlanmış yöntemler vardır.
1. Bulut IAM Hizmetleri Vakıf Olarak
Çoğu büyük bulut sağlayıcısı, DynamoDB'den yararlanmak için kullanılan ve referans seviyesindeki politikaları tanımlamak için kullanılabilir. Örneğin, [[D:0)AWS IAM), fonksiyon için uygulama rollerini oluşturmanıza izin verir.Eğer bir işlev DynamoDB'den okumak için gerekliyse, o işlevin tamamını aynı şekilde yerine getirir, o işlevin içinde iyi kullanıcı iznini yerine getirir.
Azure için, FLUTT:0)Azure RBAC) Azure işlevleri ve App Servisi ile entegre edilmiştir. kimlikleri veya Azure AD gruplarının yönetilebilmesi için roller atabilirsiniz ve bu roller Blob Storage veya Cosmos gibi Azure kaynaklarına erişim sağlar.
2. Özel Politikalarla Güzel Saklamalı Erişim Kontrolü
İzinler talep özelliklerine bağlı olduğunda (örneğin, kullanıcının kimliği, belgenin sahibi veya yapılan eylem), bulut IAM sadece yetersizdir. Bu asansörler kullanıcı kodundan yük çok şey gelir.
Daha karmaşık kurallar için, çağrıcının talep edilen eylemi yerine getirme hakkına sahip olup olmadığını belirlemek için izin vermeniz gerekebilir.Bu genellikle başvuru aşamasındaki bir giriş kontrolünü (PBAC) ve çok-tenant SaaS uygulamaları ile popüler.
3. API Gateway Özel Yazarlar
HTTP (örneğin, REST veya GraphQL) ile açığa çıkan işlevlerin yanı sıra API Gateway'nin gerçek bir uygulama noktası olduğunu ifade eder.AWS API Gateway özel yazarizers) (Lambda yazarizers) bir ayıklayıcıyı aynı şekilde onaylayabilir ve Azure Yönetim, JWT'nin doğrulama ve politika ifadelerini sunarken, API uç noktaları ve yöntemleri onaylayabilir.
Özel yazarizerler idealdir çünkü yetkilendirme mantığını tek bir işleve göre yoğunlaştırırlar, çünkü her arka uç işlevine yayılmıştır. Yazarizer token, ekstra kullanıcı rollerini alır, izinleri arar ve bir politika döndürür. Bu şekilde, iş mantığı fonksiyonlarınız devletsiz kalır ve odaklanmış durumda.
4. Rol Mappings in a Secure Datastore
Roller ve kullanıcı atamaları, iş zamanında depolanmalıdır ve yeniden beslenmemelidir. Seçenekler şunları içerir:
- [FONT:0]Managed directory hizmetleri: [Dönetici: [Dönetici: 0,0] Azure AD, AWS Cognito veya Auth0, özel nitelikler veya gruplar olarak rol bilgilerini saklayabilir.
- [FONT:0)Relational veya NoSQL veritabanı:[Dönetici:[Dönetici:0)[0))))) Bir köşeye veya ayrı bir [[Dönetici 7) haritalama masasına erişim.
- [FONT:0)Distributed önbellekler:[Dönetici:[Dönetici:0) Amazon ElastiCache (Redis) veya DAX, düşük gecikmeli, soğuk için kritik olan verilere hizmet edebilir.
Veri sahibinin katı IAM politikaları aracılığıyla güvenli olduğundan emin olun. Hiçbir zaman rol verilerini istenmeyen uç noktalarına açığa çıkarma.
Uygulama Adımları: Tasarımdan İşsizliğe
RBAC'yi sunucusuz bir uygulamada tasarlamak ve uygulamak için bu adımları izleyin:
- [FONT:0) Kaynakları ve eylemleri ortadan kaldırın:) Tüm sunucusuz işlevleri, API'ler, depolama kovaları, kuyrukları ve masaları.Her biri için, yapılabilecek eylemleri tanımlayın (invoke, read, write, delete).
- [FONT:0)Define rolleri:[[Dönetici:[Dönetici:0) İş işlevlerini anlamak için Röportaj paydaşları (örneğin müşteri, destek ajanı, yönetici). her biri bir dizi eylem için.
- [FONT=0] Tasarım IAM politikaları: [Dönetici kaynakları için, minimum gerekli eylemleri sağlayan IAM politikaları oluşturmak. ARNs'leri sınır kapsamı için kullanın.
- [FONT=0)Implement authentication:[Dönetici:[Dönetici:0) Her HTTP uç noktasının doğrulanabilir bir token (JWT, OAuth2) gerekli bir kimlik sağlayıcı kullanın Cognito, Auth0 veya Firebase.
- [FONT:0] Özel bir yazarcı inşa edin:Bir Lambda işlevi yazın, kullanıcının rolünü çıkarın, bir izin mağazası sorgulayın ve bir IAM politika belgesi döndürür.
- [FONT:0]DTP'nin gözetimi tetiklenmemektedir: SQS, S3 olay veya DynamoDB akışları için, olay ücretinin içinde rol bağlamını içerir veya işlev içinde bir göz atın.
- [FONT:0)Cache agresif bir şekilde:[Dönetici:[Dönetici:0) Mağaza rolü-to-permission mappings in a Redis cache with a TTL to reduce database load and improve latency.
- [FONT:0)Test iyice:[Dönetici:[Dönetici:0) Farklı roller ve bu izinsiz eylemlerin bloke edildiğini açıklayan entegrasyon testleri yaz.AWS IAM Access Analyzer[DDDDDDDDDDDDDDD)
- [FONT=0)Monitor ve denetim:[Dönetici:[Dönetici:0) Enable CloudTrail (AWS) veya Faaliyet Logs (Azure) tüm erişim girişimlerine giriş yapmak için uyarılar ayarlar.
Ortak Pitfalls ve Them'dan Nasıl Kaçırmak
- [FONT:0)Genel olarak izin verilen görevler: Geliştiriciler tüm işlevlerin tek bir “güç kullanıcısı” IAM rolü eklemek cazip olabilir. Bu, en az ayrıcalık ve patlama yarıçapını arttırır.
- [FONT:0) Soğuk algınlığı görmezden gelin: [Dönetici: 0,4] Her bir davetteki bir veritabanından gelen rol verileri 200-500ms latency ekleyebilir. API Gateway yazarizer ve önbellek.
- [FONT:0)Hardcoding permissions:[Dönetici:[Dönetici:0)[Dönlendirme izni)[[FONTs)) İzinler, bir veritabanı veya yapılandırma dosyasında onları güncellemek kolay olmalıdır.
- [FONT:0] Hizmet kimliklerini seçme:[Dönlendirme:[Dönetici:0] RBAC, insan olmayan aktörleri kapsamalıdır (örneğin, bir işlevi tetikleyen bir olay).
- [FONT:0)Yönetici için testin yerine getirilmesi:[Dönetici:0)))))))))))))) Bu, "mutlu yol" senaryolarını test etmek kolay. Adversarial test - - kaynaklara sınırsız bir ton ile veya doğrulanmış iddialarla erişmek için - temel.
Gerçek Dünya Örneği: Güvenli Çok katmanlı Doküman İşleme
Her bir kiracının bir S3 kovasında kendi klasörü vardır. API Gateway, bir Lambda işlevi belge yükleme için, işlem için başka bir işlem (S3 olay aracılığıyla abartılmış) ve DynamoDB'de depolama sonuçları için üçüncü bir işlem.
[0]Roles: [Dönem: [Dönem: 1]
- [FONT:0]Tenant Admin:[Dönetici:[Dönetici:[Dönetici:[Dönetici:[Dönetici: · 1) Belgeleri, görüş sonuçlarını yükleyebilir ve kendi iş dosyalarını silebilir.
- [FONT:0)Viewer:[Dönetici:[Dönetici:0) Sadece sonuçları görebilir (DörtgenDB'yi hazırlayabilir veya silme.
- [FONT:0)Sistem Yöneticisi:[Dönetici:[Dönetici:0) Tüm kiracılara (yalnızca güvenilir operasyonlar ekibi için erişim)
[FONT:0)Implementation:[Dönem:[Dönem: 1)
- On kişi Cognito tarafından yayınlanan bir JWT'de depolanır, [[ŞUYUDÜSÜSÜSÜSÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ
- API Gateway, JWT'yi kodlayan özel bir Lambda yazarı kullanır, rol izni almak için bir DynamoDB masası sorgular ve onant'ın ID ön ekine erişim sağlayan bir politika döndürür.)
- Yükleme fonksiyonu talep bağlamında onant ID alır; dosyayı doğru klasörün içine yerleştirmek için kullanır. İşlem fonksiyonu, onant ile sonuçları ilişkilendirecek klasörü okur.
- Tüm DynamoDB sorguları birincil anahtarda onant kimlik içerir ve IAM politikası, işlevin sadece bu bölüm anahtarıyla okuyabildiği veya yazılabilir.
Bu mimari, bir kiracının başka bir kiracının verilerine erişemeyeceği ve bu Viewer kullanıcıları yükleme işlevini kullanamaz. roller ve izinler merkezi olarak yönetilebilir ve değişiklikler herhangi bir işlevi yeniden çalıştırmadan hemen etkilenebilir.
Araçlar ve Çerçeveler RBAC'yi Basitleştirmek için
Birkaç açık kaynak ve ticari araçlar RBAC uygulamasını hızlandırabilir:
- [FONT:0) Açık Politika Ajanı (OPA):), Bir yankar veya mikro hizmet olarak karmaşık yetki kuralları uygulamak için bir araç olarak konuşlandırılabilecek bir genel politika motoru.YouTube / Petert runtimes ile iyi bir şekilde bütünleştirir.
- [FONT:0)Casbin: [Dönetici: [Dönetici: 1] Go, Java, Node.js ve Python. Supports RBAC, ABAC ve özel modeller.
- [FONT:0]Auth0 / Firebase Auth:[Dönetici: Her ikisi de özel iddialar ve roller aracılığıyla RBAC'yı kurdular. API Gateway ve Cloud Functions ile sorunsuz bir şekilde entegre ettiler.
- [FONT:0]AWS Doğrulanmış İzinler: Lambda dışında yetki kararlarını merkezileştirmek için kullanılan yönetilen bir Cedar politikası hizmeti.
Denetim ve Uyum
RBAC tek başına yeterli değildir. uyumluluk gereksinimleri karşılamak için (SOC 2, HIPAA, GDPR), denetim yapmanız gerekir:
- EnableFLT:0) Bulut iz (Dönetici) tüm IAM eylemleri ve kaynak erişim için[Dönetici).
- Kullanıcı kimliği, kaynağı ve zaman notamp ile her yetki kararı (parça veya ELK gibi bir SIEM'e) yapısal bir giriş yaklaşımı kullanın.
- DüzenliFL:0) ulaşılan incelemeler[[Döneticileri onaylandığında veya iptal edilir.
- Kullanım:0)polisi simülasyon araçları[[Dönetici:0] (e.g., AWS IAM Access) bu politikaların yalnızca amaçlanan izinleri onayladığı için kullanılır.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Sunucusuz uygulamalarda Rol Tabanlı Erişim Kontrolü sadece bir IAM politikasına eklenme meselesi değildir. Burada belirtilen roller, iyi hazırlanmış izin stratejileri ve API Gateway yazarı gibi merkezileştirilmiş uygulama noktaları kullanarak - sağlam bir temelle birlikte bulut-katılım.Aslasız mimarileri birleştirerek, her iki güvenlik ve performans için de uygulanabilir. Burada belirtilen stratejileri ve en iyi uygulamaları - özel yazarizerleri ve depolamak ve API Gateway haritalarını kullanarak.