AWS IAM Nedir ve Bulut Güvenliğinde Neden İlk Savunma Hattıdır?
Geleneksel Çevrenin (Perimeter) Ölümü
Geleneksel şirket içi (on-premise) ağlarda güvenlik, güvenlik duvarları (firewall) ile tanımlanırdı. Güvenlik duvarının içindeyse güvenilirdiniz, dışındaysa engellenirdiniz.
Ancak bulut bilişimde yeni güvenlik sınırı kimliktir (identity). AWS Identity and Access Management (IAM), bulut kaynaklarınıza tam olarak kimin (veya neyin) erişebileceğini belirler. Yanlış yapılandırılmış tek bir IAM politikası (policy), ağ güvenlik duvarlarını tamamen aşarak müşteri verileriyle dolu bir S3 klasörünü (bucket) herkese açık hale getirebilir.
AWS IAM Nedir?
AWS IAM, AWS kaynaklarına erişimi güvenli bir şekilde kontrol etmenize yardımcı olan bir web servisidir. AWS hesabınızda yapılan her API çağrısı için şu üç temel soruyu yanıtlar:
- İsteği kim yapıyor? (Authentication - Kimlik Doğrulama)
- Hangi eylemi gerçekleştirmeye çalışıyorlar?
- Bu eylemi söz konusu kaynak üzerinde yapmaya izinleri var mı? (Authorization - Yetkilendirme)
AWS IAM'in Temel Bileşenleri
Bulut güvenliğinde uzmanlaşmak için IAM'in temel yapı taşlarını anlamalısınız:
1. IAM Kullanıcıları (Users) ve Grupları (Groups)
Kullanıcılar, bireyleri veya servisleri temsil eder. Gruplar ise kullanıcı koleksiyonlarıdır. En iyi uygulama: Politikalari asla doğrudan kullanıcılara atamayın. Bunun yerine kullanıcıları gruplara atayın ve yetkileri bu gruplara verin.
2. IAM Rolleri (Roles)
Roller geçici olarak üstlenilir (AssumeRole). Kullanıcıların aksine, rollerin uzun vadeli kimlik bilgileri (parola veya erişim anahtarı) yoktur. Hesaplar arası (cross-account) güvenli erişimin ve EC2/Lambda gibi servislerin temel taşıdır.
3. IAM Politikaları (Policies)
Politikalar, yetkileri tanımlayan JSON belgeleridir. AWS kaynaklarına erişimi açıkça verir veya reddederler.
En Az Ayrıcalık (Least Privilege) Politikası Örneği:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::eresus-guvenli-bucket/*"]
}
]
}
IAM Neden İlk Savunma Hattınızdır?
1. Granüler Kontrol (En Az Ayrıcalık Prensibi)
IAM, En Az Ayrıcalık Prensibi'ni (PoLP) uygulamanıza olanak tanır. Ele geçirilmiş bir geliştirici bilgisayarı, yalnızca o geliştiricinin dokunmasına izin verilen kaynaklara erişebilir — bu da hesabın tamamen ele geçirilmesini önler.
2. Kontrol Düzlemini (Control Plane) Korumak
Bulut ihlalleri nadiren işletim sistemi düzeyinde bir exploit ile başlar. Çoğunlukla sızdırılmış API anahtarlarıyla başlarlar. Saldırganlar bu anahtarları AWS Kontrol Düzlemi üzerinden ortamı keşfetmek (enumeration) için kullanır. Sızdırılmış bir anahtar ile altyapının tamamen yok edilmesi arasında duran tek engel IAM'dir.
3. Kalıcı Anahtarlar Yerine Geçici Kimlik Bilgileri
IAM Rolleri ve AWS STS (Security Token Service) sayesinde, kaynaklar geçici ve dönen kimlik bilgileri talep edebilir. Bir saldırgan geçici bir token çalsa bile, bu token dakikalar veya saatler içinde kullanılamaz hale gelir.
Kaçınılması Gereken 3 Kritik IAM Hatası
Eresus Security olarak gerçekleştirdiğimiz bulut sızma testlerinde sıklıkla şu üç ölümcül IAM yapılandırma hatasıyla karşılaşıyoruz:
- Joker Karakterler Kullanmak (
"Action": "*"): Kolaylık olsun diye*kullanmak, bir kimliğin tüm veritabanını silmek veya kendine admin yetkisi vermek dahil her şeyi yapmasına izin verir. - Aşırı İzin Veren Trust Politikaları: Herhangi bir AWS hesabının
sts:AssumeRolearacılığıyla bir rolü üstlenmesine izin vermek. - Hardcode Edilmiş Kalıcı Anahtarlar: IAM Kullanıcı Erişim Anahtarlarını (Access Keys) GitHub'da veya Lambda fonksiyonlarının içine gömülü (hardcoded) olarak saklamak.
Sonuç
IAM'de ustalaşmadan bir AWS ortamının güvenliğini sağlayamazsınız. Uygulama kodunuzun ne kadar sağlam olduğunun bir önemi yoktur; eğer IAM politikalarınız * üzerinde s3:GetObject izni veriyorsa, verileriniz zaten çalınmıştır.
Eresus Security olarak Bulut Güvenlik İncelemeleri ve Saldırı Yüzeyi Yönetimi alanlarında uzmanız. IAM duruşunuzdan emin değilseniz, kapsamlı bir bulut sızma testi planlamak için bizimle iletişime geçin.