CI/CD'de OIDC ve IAM Role ile şifresiz (secretless) AWS erişimini nasıl kurarım?
GitHub Secrets'taki uzun ömürlü AWS anahtarlarını silip repo ve branch'e scope'lu bir IAM role'ü OIDC ile üstlenin; bulut dışı secret'ı runtime'da çekin.
Sor Bakalım
Yazılım mimarisi, kariyer, PHP, Go ve geliştirme süreçleri üzerine merak ettiklerini sor; cevapları burada herkese açık paylaşıyorum. (Sayfa 4/8)
Aklına takılan ne varsa çekinme. Sorular bana ulaşır; uygun olanları cevaplayıp bu sayfada yayınlarım. E-postan kesinlikle yayınlanmaz.
GitHub Secrets'taki uzun ömürlü AWS anahtarlarını silip repo ve branch'e scope'lu bir IAM role'ü OIDC ile üstlenin; bulut dışı secret'ı runtime'da çekin.
Kolonu nullable ekleyip backfill'i ayrı throttle'lı bir adıma alın, migration'ı deploy'dan ayrı bir aşamada koşturun, eskiyi sonraki release'te düşürün.
Symlink'i çevirdikten sonra PHP-FPM'i graceful reload edin (restart değil); Octane'deyseniz worker'lar için octane:reload şart, opcache_reset isteğe bağlı.
Build araçlarını builder aşamasında bırakın: final aşama Go için distroless ya da scratch, PHP için fpm-alpine olsun; container'ı non-root çalıştırın.
Uzun ömürlü dalları kaldırıp değişiklikleri küçük parçalar hâlinde main'e alın, bitmemiş işi kapalı bir flag arkasında tutun ve biten flag'i temizleyin.
Tag push'unda tetiklenen tek bir workflow cross-compile edip Release'i yayımlasın, homebrew_casks: bloğu tap'i güncellesin; tap için ayrı bir PAT şart.
Anahtarı .env'den çıkarıp KMS ya da Vault'ta tutun ve envelope encryption kullanın; kimlik ve kart verisinde mümkünse tokenization tercih edin.
Runner'ı kaydol-çalış-yok ol modeline geçirip job'ları unprivileged çalıştırın; Docker soketini vermeyin ve fork PR'larını bu runner'da hiç koşturmayın.
Versiyonlu, şifreli bir S3 backend'e geçip DynamoDB lock tablosu ekleyin (deprecated ama çalışır), state'i ortam başına ayırın, apply'ı CI'dan koşturun.
Periyodik base backup alıp WAL'ı sürekli S3'e arşivleyin, recovery_target_time ile hatalı ifadenin saniyeler öncesine dönün ve restore'u prova edin.