CI/CD'de OIDC ve IAM Role ile şifresiz (secretless) AWS erişimini nasıl kurarım?
Soru
GitHub Actions workflow'larımızda AWS erişim anahtarları ve üretim DB şifreleri gerekiyor. Bunları repoya koymak büyük açık; GitHub Secrets bir yere kadar çözüyor ama anahtar rotasyonu ve merkezi takip zor. Pipeline'ımızın AWS IAM Role'leri ve OIDC kullanarak şifresiz (secretless) şekilde AWS kaynaklarına erişmesini nasıl sağlarım?
Cevap
Kısa cevap: GitHub Secrets’taki uzun ömürlü AWS anahtarları tam olarak yok etmen gereken şey — sızar, rotasyonu zordur, sürekli açık duran kalıcı kimliklerdir. OIDC bunları ortadan kaldırır.
Asıl mesele: kalıcı bir anahtarı bir yerde saklamak yerine, her çalışmada anlık üretilen geçici bir kimlik kullanmak.
- GitHub Actions’ı AWS IAM’de OIDC identity provider olarak tanımla. Bu, AWS’in GitHub’ın imzaladığı token’lara güvenmesini sağlar. Artık AWS, “bu workflow gerçekten senin repondan mı geliyor?” sorusunu kriptografik olarak doğrulayabilir.
- Trust policy’si dar scope’lu bir IAM role oluştur. Role’ün trust policy’sinde
subkoşulunu belirli repo + branch + environment’a sabitle. Böylece bir fork ya da rastgele bir PR bu role’ü üstlenemez; sadece senin tanımladığın kaynak alabilir. - Workflow runtime’da geçici STS credential alır. Çalışma anında, kısa ömürlü GitHub OIDC token’ını AWS STS ile takas eder; dakikalar içinde geçersiz olan geçici credential’lar üretir. Hiçbir yerde saklanan kalıcı secret yok — sızsa bile çok kısa ömürlü.
- Least privilege + prod için environment koruması uygula. Role’ü minimum yetkiyle sınırla. Prod erişimi için GitHub Environments + zorunlu reviewer kullan. Aynı yaklaşım her bulutta var: GCP ve Azure’da da Workload Identity Federation aynı işi görür.
Sonuç: Ben olsam AWS için OIDC + dar scope’lu IAM role kurardım — sıfır saklanan anahtar, sıkı trust koşulları, prod’da environment koruması. Bulut dışı secret’lar (DB şifresi gibi) için bunları GitHub Secrets’a koymak yerine runtime’da bir secrets manager’dan çek. Kural net: standing credential’ı imkânsız kılmak için kimliği anlık ve kısa ömürlü üret.
Yorumlar
Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.