İçeriğe geç
Muhammet Şafak
en
Soran: Doruk Cevaplandı:

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.

  1. 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.
  2. Trust policy’si dar scope’lu bir IAM role oluştur. Role’ün trust policy’sinde sub koş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.
  3. 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ü.
  4. 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.

Etiketler: #ci-cd#güvenlik#altyapı
Paylaş:

Yorumlar

Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.

Diğer Sorular

Tüm sorular

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi