Serverless fonksiyonlarda API anahtarları, veritabanı bağlantı dizileri veya üçüncü taraf servis kimlik bilgileri gibi hassas verilerin yönetimi, AWS Parameter Store veya Azure Key Vault gibi merkezi hizmetlerle yapılmalıdır. Bu yöntem, güvenliği artırır ve kodunuzu ortamdan bağımsız hale getirir. Aşağıda her iki platformda secret (gizli) yönetiminin nasıl yapılandırılacağını, karşılaştırmalarını ve sık yapılan hataları bulacaksınız.
Neden Merkezi Secret Yönetimi?
Sunucusuz mimarilerde işlevler (functions) kısa ömürlüdür ve birden çok ortamda (development, staging, production) çalışır. Secret'ları doğrudan kod veya çevresel değişkenlerde saklamak güvenlik riski oluşturur. Merkezi bir yapı sayesinde:
- Secret'lar şifrelenmiş olarak saklanır ve erişim kontrolleri uygulanır.
- Döndürme (rotation) ve izleme kolaylaşır.
- Kod değiştirmeden farklı ortamlarda farklı secret'lar kullanılabilir.
Önemli: Secret'ları kod içinde düz metin olarak gömmek, güvenlik ihlallerine davetiye çıkarmaktır. Her zaman merkezi bir yönetim hizmeti kullanın.
AWS Parameter Store Kullanımı
AWS Systems Manager Parameter Store, AWS Lambda için doğal bir secret yönetim seçeneğidir. Standart ve gelişmiş (advanced) parametreler sunar. Lambda fonksiyonunuzdan bir parametreye erişmek için aşağıdaki adımları izleyin:
- Parametre Oluşturma: AWS Management Console'dan Systems Manager > Parameter Store > Create parameter. Ad (ör. /myapp/db_password), tip (SecureString) ve değeri girin. İsteğe bağlı KMS anahtarı ile şifreleyin.
- IAM Rolüne İzin Ekleme: Lambda fonksiyonunun IAM rolüne
ssm:GetParametervessm:GetParameterseylemlerini ekleyin. SecureString için ayrıcakms:Decryptizni gereklidir. - Fonksiyon Kodunda Erişim: Python örneği:
import boto3; ssm = boto3.client('ssm'); param = ssm.get_parameter(Name='/myapp/db_password', WithDecryption=True)['Parameter']['Value'].
Bu yaklaşım, soğuk başlatma sırasında hafif bir gecikme ekler. Daha hızlı erişim için parametreyi önbelleğe alabilir veya ortam değişkeni olarak da kullanabilirsiniz. Ancak ortam değişkenleri statiktir ve döndürme durumunda güncellenmez. Bu nedenle dinamik secret'lar için Parameter Store tercih edilmelidir. AWS Lambda Soğuk Başlatma Sürelerini Azaltma Yöntemleri yazımızda performansı nasıl optimize edebileceğinizi bulabilirsiniz.
Azure Key Vault Kullanımı
Azure Functions için resmi secret yönetim aracı Azure Key Vault'tur. Key Vault, gizli anahtarlar, sertifikalar ve parolalar için güvenli bir depolama sunar. Azure Functions ile entegrasyonu şu şekildedir:
- Key Vault Oluşturma: Azure portal > Key Vault > Create. Erişim politikasıyla fonksiyonunuzun yönetilen kimliğine (managed identity) Get ve List izinleri verin.
- Yönetilen Kimlik Ayarlama: Function App > Identity > System assigned > On. Ardından Key Vault erişim politikasına bu kimliği ekleyin.
- Fonksiyonda Kullanma: Secret'a erişmek için
Azure.IdentityveAzure.Security.KeyVault.SecretsNuGet paketlerini ekleyin. C# örneği:var client = new SecretClient(new Uri("https://myvault.vault.azure.net"), new DefaultAzureCredential()); SecretResponse secret = client.GetSecret("mySecret"); var value = secret.Value.Value;.
Alternatif olarak, Key Vault referanslarını uygulama ayarlarında @Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mySecret/) biçiminde kullanarak daha temiz bir yöntem elde edebilirsiniz. Bu sayede kodunuzda hiçbir secret referansı görünmez.
Karşılaştırma Tablosu
| Özellik | AWS Parameter Store | Azure Key Vault |
|---|---|---|
| Şifreleme | İsteğe bağlı KMS ile SecureString | Zorunlu HSM destekli şifreleme |
| Fiyatlandırma | Standart parametreler ücretsiz (10.000 adet), gelişmiş ücretli | İlk 10.000 işlem ücretsiz; sonrası işlem başına ücret |
| Döndürme | Manuel veya Lambda ile otomatik; yerleşik desteği yok | Yerleşik otomatik döndürme (belirli sertifikalar için) |
| Entegrasyon | AWS SDK ile, Lambda için doğal | Azure SDK, yönetilen kimlik, App Service referansları |
| Kota Sınırı | 10.000 parametre (standart), 100.000 (gelişmiş) | Sınırsız secret, ancak işlem limitleri var |
En İyi Uygulamalar ve Sık Yapılan Hatalar
Her iki platformda da secret yönetiminde dikkat edilmesi gereken noktalar:
- En Az Yetki Prensibi: IAM politikalarında yalnızca ihtiyaç duyulan secret'lara erişim izni verin. Gereksiz yere tüm secret listesini okumaya izin vermeyin.
- Secret Döndürme: Periyodik olarak secret'ları değiştirin. AWS'de bu manuel veya Lambda ile otomatize edilebilir; Azure'da Key Vault'un sertifika otomatik döndürme özelliği vardır. Parolalar için Azure Event Grid ile otomasyon kurun.
- İzleme ve Denetim: Her iki hizmet de secret erişimlerini loglar. AWS CloudTrail ve Azure Monitor ile anormal erişim kalıplarını tespit edin. Zero Trust Mimarisi içinde secret yönetimi kritik bir bileşendir.
- Önbelleğe Alma: Performans için secret'ları fonksiyon başına bir kez okuyup önbelleğe alın, ancak döndürme durumunda güncellendiğinden emin olun. Önbellek süresini ihtiyaca göre ayarlayın.
Not: Soğuk başlatma sırasında secret çekme işlemi gecikmeye neden olabilir. Bunu azaltmak için soğuk başlatma karşılaştırmamızdaki yöntemleri inceleyin.
Sonuç
Secret yönetimi, sunucusuz uygulamaların güvenlik ve yönetilebilirlik açısından kritik bir parçasıdır. AWS Parameter Store ve Azure Key Vault, her iki bulut platformunda da benzer işlevler sunar. Seçim, mevcut ekosisteminize, fiyatlandırma modelinize ve otomasyon gereksinimlerinize bağlıdır. Küçük projeler için Parameter Store'un ücretsiz katmanı yeterli olabilir; kurumsal düzeyde ise Key Vault'un gelişmiş güvenlik ve döndürme özellikleri öne çıkar. Her durumda, secret'ları asla kod içinde düz metin olarak saklamayın ve erişim kontrollerini sıkı tutun.
Sık Sorulan Sorular
AWS Parameter Store ve Azure Key Vault arasındaki temel fark nedir?
AWS Parameter Store, AWS ortamında daha basit ve ucuz bir seçenek sunarken, Azure Key Vault daha gelişmiş şifreleme (HSM desteği) ve otomatik sertifika döndürme gibi kurumsal özellikler sunar. Fiyatlandırma modelleri de farklıdır; Parameter Store'un standart parametreleri ücretsizdir, Key Vault ise işlem başına ücretlendirilir.
Serverless fonksiyonlarda secret'ları nasıl güvenli bir şekilde saklayabilirim?
Secret'ları kod içine gömmek yerine AWS Parameter Store veya Azure Key Vault gibi merkezi bir yapı kullanın. Bu hizmetler verileri şifreler, erişim kontrolleri sağlar ve döndürme işlemlerini kolaylaştırır. Ayrıca IAM veya yönetilen kimliklerle en az yetki prensibini uygulayın.
Soğuk başlatma sırasında secret erişimi performansı nasıl etkiler?
Her secret çağrısı bir ağ gecikmesi ekler. Bunu azaltmak için secret değerlerini fonksiyon başlatılırken bir kez okuyup global bir değişkende önbelleğe alabilirsiniz. Ancak önbellek süresini secret döndürme periyoduna göre ayarlamalısınız.
AWS Lambda'da IAM rolleriyle Parameter Store'a erişim nasıl sağlanır?
Lambda fonksiyonunun IAM rolüne ssm:GetParameter ve ssm:GetParameters eylemleri için izin ekleyin. SecureString parametreleri için ayrıca kms:Decrypt izni gereklidir. İzinleri yalnızca gerekli parametrelere (ARN'lerle) kısıtlayarak en az yetki prensibini uygulayın.
Azure Functions'ta Key Vault referansları nasıl kullanılır?
Azure Functions uygulama ayarlarında @Microsoft.KeyVault(SecretUri=...) sözdizimini kullanarak Key Vault secret'larına doğrudan başvurabilirsiniz. Bu sayede kodda hiçbir secret görünmez ve yönetilen kimlik üzerinden güvenli erişim sağlanır.






