Sunucusuz Uygulamalarda Sırları ve Hassas Verileri Nasıl Yönetilir
Giriş: Sunucusuz Tek Güvenlik Talepleri
Serverless Computing, takımların nasıl inşa ettikleri ve dağıtıldığına dönüştürüldü.Süresel olarak, ölçeklendirme ve yamalama, AWS Lambda, Azure işlevleri ve Google Cloud Functions gibi platformlar, geliştiricilerin iş mantığına odaklanmasına izin veriyor. Ancak, bu paradigma değişimi, özellikle de sırların ve hassas verilerin yönetimi hakkında yeni güvenlik sorunları tanıtıyor.
Bu makale, sunucusuz ortamlarda sırları işlemek için kapsamlı bir kılavuz sunar. Temel zorlukları inceleyeceğiz, en iyi uygulamalara atacağız, büyük bulut sağlayıcıları kullanarak beton uygulama kalıplarıyla yürümek ve hassas verilerin tüm yaşam döngüsünü nasıl güvence altına almak için tartışacağız - üretime gelişimi.
Sunucusuzluğundaki Gizli Yönetimin Meydanlarını Anlayın
Serverless mimariler doğal olarak devletsizdir. Bir işlev çağrıldığında, infazdan sonra kırılan bir konteynerde çalışır (veya kısa bir süre boyunca yeniden kullanılabilir). Bu ephemeral doğa, uzun süren süreçlere veya dosya sistemlerine güvenemeyeceği anlamına gelir: Ortak pitfalls şunları içerir:
- [FONT:0) kod ve loglarda aşırılık:[Döneticiler, kaynak kontrolüne veya giriş sırasında bunları oturum açma konusunda kasıtlı olarak gizli tutabilirler.Bir sır bir giriş akışında, giriş ile herkes tarafından alınabilir - ve loglar genellikle süresiz olarak korunur.
- [[Dönetici değişken sınırlamaları:[Döneticileri uygun olsa da, genellikle işlev yapılandırmasında dağıtım sırasında ayarlanır ve açık metinde saklanabilir.Eğer bir saldırgan kazançları işlev yapılandırmaya erişimi okursa (örneğin, uzlaşmalı CI/CD boru hattı ile), gizli elde ederler.
- [FONT:0]Cold ve caching:[Dönetici: 0,4] Her davette sırların gecikme ve maliyetle tanıtılması mümkündür. Geliştiriciler bazen hafızada gizli sırları önbellek, ancak ephemeral konteyner birden çok davet için yeniden kullanılabilir – rotasyona yol açan veya süresiz.
- [FONT:0) Güvenilirlik ve rotasyon:[Dönetici:[Dönetici:0) Merkezi bir ton olmadan, hangi sırrı hangi gizliye eriştiğini bilmek ya da her işlevi güncellemeden sırları döndürmek zordur.
Bu zorluklar dağıtılmış, olay odaklı sunucusuz uygulamalar tarafından bileşiklenir. Tek bir işlev bir veritabanı, dış API ve bir kuyruk çağırmak için gerekebilir - her biri bu güvenli kimlikleri yönetmek için.
Sırları ve Hassas Data'ları yönetmek için en iyi uygulamalar
Herhangi bir sunucusuz güvenlik stratejisinin temeli en az ayrıcalık ilkesidir: Her işlev sadece ihtiyaç duyduğu sırların ve mümkün olan en kısa süre boyunca mümkün olan en temel uygulamalardır.
1. Gizli Gizli Yönetim Hizmetleri Kullanımı
Her büyük bulut sağlayıcısı, sırları depolama ve erişim için bir amaç inşa edilmiş bir hizmet sunar:
- [FONT:0]AWS Sır Yöneticisi) - otomatik rotasyon ve iyi ulaşılmış erişim politikaları ile sırları yönetir.
- [FONT=0) Azure Key Vault – gizli depolar, anahtarlar ve sertifikalar ve Azure işlevleri ile yönetilen kimliklerle entegre edilir.
- [0] Google Cloud Secret Manager - sürüm sunuyor, IAM kontrolleri ve Cloud Functions ve Cloud Run ile entegrasyon.
Bu hizmetler geri kalanında ve geçişte şifre sırları şifreliyor ve her erişimin denetim loglarını sağlıyor ve yeniden işlenmemiş işlevleri olmadan sırları döndürmenize izin veriyor. - Never store sırları in düz metin yapılandırma dosyaları veya satır kodu.
2. Ortam Değişkenleri Kullanın - Ama Bakım
Çevre değişkenleri, sunucusuz işlevlerin yapılandırmasına ortak bir yol olarak kalır. Ancak, doğru bir şekilde sırları asla tutmamalıdır. Bunun yerine, bir saldırganın çevresel değişkenleri saklaması için ortam değişkenlerini kullanmaları gerekir (örneğin, AWS Sırları Yöneticisi veya Azure Key Vault'ta bir sırrın ARN).
3. Geri ve Transitta Her Şeyi Şifreleyin
Sırlar nerede saklı tutarlar: Gizli yönetim servisi içinde, hafızanızda önbellek ( bellek şifreleme gibi teknikler kullanarak) ve ağ üzerinden aktarılan zaman tüm büyük gizli yönetim hizmetleri, müşteri tarafından yönetilen anahtarlarla şifreleme kullanarak şifrelemeyi uygular (CMKs)
4. Implement Strict Access Controls ve Least Privilege Prensipleri
Rol tabanlı erişim kontrolü (RBAC) veya nitelik tabanlı erişim kontrolü (ABAC) hangi işlevleri okuyabileceklerini sınırlamak için kullanın. AWS'de, IAM politikalarına yalnızca belirli bir gizli ARN'ler için ekin. aynı şekilde, Azure'da yönetilen kimlikler kullanın ve granular Anahtar Vault erişim politikaları atayabilir.
Ayrıca, gizli yönetim hizmetine erişimi kısıtlayın. Sadece yöneticiler, sırları yaratabilmeli veya silmeli. Operatörler ve geliştiriciler çalışmalarından gerekli sırları okumakla sınırlı olmalıdır ve denetim logları periyodik olarak gözden geçirilmelidir.
5.Bölümler Düzenli Olarak
Otomatik gizli rotasyon, bir uzlaşmanın patlama yarığını sınırlamak için kritiktir. AWS Sır Yöneticisi, BIOS hedeflerini kullanarak özel bir otomasyon gerektirir (örneğin, her 30 gün) ancak otomatik rotasyon, bir Bulut Fonksiyonlar veya Bulut Programı'nda gizliyi gerektiren bir işlev gerektirir. Azure Key Vault, diğer Azure hizmetleriyle birlikte bütünleştirir.
Otomatik rotasyonla bile, eski gizli versiyonların süresiz olarak tutulmasını sağlamalıdır. Güvenli bir pencereden sonra eski versiyonları (örneğin, 30 gün sonra rotasyon) eski bir uzlaşmayı kullanarak bir saldırganın önüne çıkmasını engellemek için bir saklama politikası uygulama.
6. Mümkün olan Nerede Dinamik ve Geçici Credentials kullanın
Örneğin, uzun ömürlü sırları destekleyen hizmetler için, AWS Lambda işlevleri, herhangi bir sırı saklamadan Azure servislerine kimlikleri (özellikle STS) erişmesini sağlayan (üçüncü, DynamoDB veya diğer AWS hizmetleri için geçici kimlikleri tamamen ortadan kaldırır.
7. Denetim ve İzleme Gizli Erişim
Gizli yönetim hizmetinize ve bu günlüklere merkezi bir güvenlik bilgileri ve etkinlik yönetimi (SIEM) platformuna giriş, bu nedenle beklenenden daha sık bir işlev okuma sırları için bir işlev okuma sırları için izlemek veya bilinmeyen IP adreslerine erişmek gibi. “erişim inkar etmek” gibi hataların uyarılarını gizli bir mağazaya ayarlayın, bu da yanlış yapılandırılmış bir işlev veya bruteforce bir denemesi gösterebilir.
Sırları Yönetimini Uygulama: Gerçek Dünya Desenleri
Uygulamaları bilmek bir şeydir; doğru şekilde uygulamak, üç büyük bulut sağlayıcı için uygulama kalıplarıdır, çapraz platform değerlendirmeleri ile birlikte.
AWS Pig Manager ile AWS Lambda
AWS Sır Manager'ı bir Lambda işlevi ile entegre etmek için, bu adımları takip edin:
- [FONT:0] Gizlii Yaratmak[Dönetici:0) – Veritabanı parolanızı, API anahtarını veya diğer hassas dizelerinizi Sır Yöneticisi'nde gizli olarak depolayın. Hedef servisi bunu desteklerse enable otomatik rotasyon.
- [FONT:0) Lambda yürütme rolünün erişimini sağlamak[DÜT:1) - Belirli gizli ARN'ye izin veren bir politika ekleyin. Seçmeli olarak, aynı zamanda metadata için [[ŞUYGrants:2).
- [FONT=0]İşletme sırasında sırrı geri almak – işlev kodunuzda (Node.js, Python, vs.), AWS SDK'yı ithal etmek ve arayFLT:3) Önbellekliliği azaltmak için küresel değişkende sırrı kontrol etmek için. Örneğin (sileştirilmiş kod):
const AWS = require('aws-sdk');
const secretsManager = new AWS.SecretsManager();
let cachedSecret;
exports.handler = async () => {
if (!cachedSecret) {
const data = await secretsManager.getSecretValue({ SecretId: 'arn:aws:secretsmanager:us-east-1:123456789012:secret:MyDbPassword-abc123' }).promise();
cachedSecret = data.SecretString;
}
// use cachedSecret securely, never log it
};
Sırların sadece soğuk bir başlangıç için bir kez getirildiğini unutmayın. Sonraki sıcak invokasyonlarda, önbellekli değer yeniden kullanılabilir.Eğer sırları sık sık döndürürseniz, önbellek üzerinde kısa bir Zaman-Live (TTL) ayarlamayı düşünün veya yeniden sürüm kontrol edin.
Azure Key Vault ile Azure işlevleri
Azure, Windows'un ayarlarına uygun olarak daha sorunsuz bir şekilde entegre edilebilir:0)Key Vault referansları[Döneticileri 1 ) Uygulama Konsülasyonunda veya işlevin ayarlarının bir parçası olarak, SDK'yı manuel olarak aramanız yerine, bu özel sözlüğe bir ortam değişkeni ayarlayabilirsiniz:
@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/DbPassword/)
İşlev çalışırken, Azure otomatik olarak referansı çözüyor ve bir ortam değişkeni olarak gizli değeri enjekte ediyor. Bu yaklaşım büyük ölçüde kodu basitleştirir ve herhangi bir yapılandırma dosyasından sır tutar. Ancak, işlevin sistem tarafından belirlenen kimlikleri henüz garanti etmelisiniz.
Birden fazla sırrı dinamik olarak alma ihtiyacı olan fonksiyonlar için, [[ŞUYGÜ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ÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ
Google Cloud Functions with Secret Manager
Google Cloud Functions, gizli bir sürüm sunmak için çevre değişkenleri aracılığıyla sırları erişebilir. Dağıtım emrinde, talep üzerine sırları getirmek için bir ortam değişkeni belirtebilirsiniz. ”->
Google Cloud Secret Manager'ın eşsiz bir özelliği, IAM bağlayıcılarını kullanarak gizli seviyede erişim sağlayabilirsiniz ve ayrıca Müşteri tarafından yönetilen Encryption Keys (CMEK) ek koruma için de kullanabilirsiniz.
Bulutun Ötesinde: CI/CD ve Geliştirmedeki Sırlar
Sırlar sadece üretimde değil, aynı zamanda gelişim ve sürekli entegrasyon / sürekli dağıtım sırasında (CI/CD) boru hatlarında da yönetilmelidir. Geliştiriciler genellikle sunucusuz fonksiyonları gerçek servis uç noktaları ile yerel olarak test etmelidir.En güvenli uygulama, kimliklerine ve sınırlı izinlere kapsadığı kişisel sırları veya geçici kimlikleri kullanmaktır.
- [FONT:0)Local gelişimi:[Dönetici:[Dönetici için) [FONTD:0)Yerel gelişim:[Dönetici için:[Dönetici için) Yerel yapılandırma dosyalarında bilgi sahibi olmak için gerekli olan bilgiler.
- [FONT:0]CI/CD boru hatları:[Dönetici:[Döncüm:) Mağaza sırları boru hatları sırları (örneğin, GitHub Actions sırları, GitLab CI/CD değişkenleri) ve onları günlüklerde baskı yapmadan; çok aşamalı dağıtımlar için, boru hatlarının kendi kimlikleriyle aramalarını kullanarak, çevre değişkenleri yoluyla algılamayı düşünün.
- [FONT:0) Kod olarak Infra structure (IaC):[Dönetici:0) Terraform, AWS CloudFormasyon veya Azure Bicep sunucusuz işlevleri dağıtmak için, asla zor kodlanmış sırları IaC şablonlarında kullanma.
Uyum ve Standartlaştırma
Birçok düzenleyici çerçeve (GDPR, SOC 2, PCI-DSS) hassas verilere erişim konusunda katı kontroller gerektirir. Proper secret management bu gereklilikleri sağlayarak karşılamaya yardımcı olur:
- [FONT:0]Sürücük izler:[Dönetici:[Dönetici:0) Gizli yönetim hizmetleri her okuma, yazma ve silme, size tam bir erişim tarihi vermek.
- [FONT:0)Least ayrıcalık uygulama:[Dönetici:[Dönetici:0)IAM politikaları, yalnızca yetkili işlevlerin ve kullanıcıların sırlarına erişebileceğini garanti eder.
- [FONT:0)Encryption:[Döneticiler geri kalanında şifrelenir ve transit olarak tatmin edici veri koruma gereksinimlerine sahiptir.
Gizli adlandırma, rotasyon aralıkları ve inceleme döngüleri için bir şirket çapında politika benimsemek.Üye Olmayanlar:0)OWASP'nin Gizli Yönetimi Hile Belgesi))OWASP Sırları Yönetim Hile Belgesi) ve [[Döneticileri [Döneticileri)[Döneticileri [FONT=)[FLT][/FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=)))))))))))))))
Sonuç: Gizli Güvenli Bir Ağalmaz Bir Mimari İnşa Etmek
Sunucusuz uygulamalardaki sırları yönetmek bir zaman görevi değildir, ancak devam eden bir disiplindir.Ephemeral ve sunucusuz talepleri, asla sırları tutmanıza veya yapılandırmanıza güvenmeyeceğinize dair bilgi sahibi değildir. Bunun yerine, özel gizli yönetim hizmetlerine güvenmek, en az öncelikli erişime güvenmek, otomatik olarak döndürmek ve her erişimi izlemek.
Bu makalede belirtilen en iyi uygulamaları takip ederek – AWS Sırları Yöneticisi, Azure Key Vault veya Google Cloud Secret Manager'ı kullanarak, çevre değişkenlerini yalnızca puanlayıcıları kullanarak; akıllıca bir şekilde bağlayın ve güvenli gizli işlemleri CI/CD'ye entegre edebilirsiniz - her iki güçlü ve güvenli olan sunucusuz uygulamaları yapabilirsiniz.
Daha derin dalışlar için resmi belgelere bakınız:
- [0]AWS Sırları Yönetici Kullanıcı Kılavuzu[Dönem:0]
- [0]) ► ^ af.
- [0]Google Cloud Secret Manager Dokümantasyon[Dönemli:0)[değiştir | kaynağı değiştir]