AWS’te en sık görülen güvenlik borcu, bir zamanlar “geçici olarak” oluşturulmuş IAM kullanıcılarıdır. Anahtarları hiç dönmemiştir, nerede kullanıldıkları belgelenmemiştir ve silinmeleri korkutucudur.
Önce envanter
Kimlik bilgisi raporu, hesabınızdaki tüm kullanıcıların anahtar yaşını tek CSV’de verir:
aws iam generate-credential-report
aws iam get-credential-report --query Content --output text | base64 -d > kimlik-raporu.csv
access_key_1_last_used_date sütunu kritiktir. Hiç kullanılmamış anahtarlar en kolay silinenlerdir.
Kullanılanları izleyin
Bir anahtarın nerede kullanıldığını CloudTrail söyler:
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=AccessKeyId,AttributeValue=AKIA... \
--max-results 25 \
--query "Events[].{Zaman:EventTime, Olay:EventName, Kaynak:SourceIPAddress}" --output table
Kaynak IP size hangi sunucunun veya hangi ofisin kullandığını söyler. Bu, “bu anahtarı kim kullanıyor” sorusunun tek güvenilir cevabıdır.
Geçiş sırası
- EC2 üzerindeki kullanımlar → instance profile (rol). En kolay kazanç.
- CI/CD boru hatları → OIDC federasyonu. GitHub Actions ve GitLab için anahtarsız erişim standarttır.
- İnsan kullanıcıları → IAM Identity Center üzerinden geçici kimlik bilgisi.
- Kalan gerçek istisnalar → 90 günlük döndürme takvimi ve belgelenmiş sahip.
Devre dışı bırakın, silmeyin
aws iam update-access-key --user-name eski-kullanici \
--access-key-id AKIA... --status Inactive
Bir şey kırılırsa tek komutla geri alırsınız. 30 gün sessizlik sonrası silin.
Doğrulama adımı
Anahtarı pasife aldıktan sonra CloudTrail’de errorCode = AuthFailure kayıtlarını bir hafta izleyin. Hiç kayıt yoksa anahtar gerçekten ölüdür. Kayıt varsa hangi sistemin kullandığını bulmuşsunuz demektir — bu, tahmin etmekten çok daha iyi bir sonuç.