Bulut bilişim dünyasının en popüler platformu olan Amazon Web Services (AWS) üzerinde güvenliği sağlamak, günümüz siber tehdit ortamında hayati bir önem taşımaktadır. Hazırladığımız bu kapsamlı AWS Güvenlik Rehberi ile bulut altyapınızı siber saldırılara karşı nasıl zırh gibi koruyacağınızı, kimlik yetkilendirmelerini nasıl optimize edeceğinizi ve sızdırılan kimlik bilgileri (credentials) felaketlerini nasıl önleyeceğinizi adım adım inceleyeceğiz. Özellikle modern mikroservisler ve serverless mimari kullanan sistemlerde, her bir bileşenin yetki sınırlarını doğru çizmek güvenliğin temel taşıdır.
2026 yılı itibarıyla bulut güvenliği standartları, statik şifrelerin ve uzun ömürlü erişim anahtarlarının (Access Keys) tamamen terk edilmesini; bunun yerine dinamik, geçici ve rol tabanlı kimlik doğrulama yöntemlerinin kullanılmasını şart koşmaktadır. Bu rehberde, AWS Identity and Access Management (IAM) servisinin derinliklerine inecek ve güvenli bir AWS mimarisi kurmanın pratik yollarını göreceğiz.
AWS Güvenlik Rehberi: En Az Yetki İlkesi (Least Privilege) Nedir?
Bulut güvenliğinin altın kuralı olan "En Az Yetki İlkesi" (Least Privilege), bir kullanıcının, servisin veya uygulamanın yalnızca görevini yerine getirebilmesi için kesinlikle ihtiyaç duyduğu minimum yetkilere sahip olması anlamına gelir. AWS ortamlarında bu ilkenin ihlal edilmesi, genellikle geniş yetkilere sahip admin hesaplarının veya genel erişime açık (wildcard * içeren) politikaların kullanılmasıyla başlar.
Root Hesabını Kilitlemek
AWS hesabınızı ilk açtığınızda oluşturulan "Root" kullanıcısı, hesap üzerindeki her şeye (faturalandırma dahil) sınırsız erişim hakkına sahiptir. Güvenli bir başlangıç için şu adımları uygulamalısınız:
IAM Kullanıcısı Yerine IAM Rolü Tercih Etmek
Klasik IAM kullanıcıları, kalıcı kullanıcı adı ve şifrelerin yanı sıra, süresi asla dolmayan Access Key ID ve Secret Access Key çiftlerine sahiptir. Bu kimlik bilgilerinin bir geliştiricinin bilgisayarından sızdırılması veya yanlışlıkla GitHub gibi açık kaynak kod depolarına yüklenmesi, AWS hesaplarının ele geçirilmesindeki en yaygın nedendir.
Bunun yerine, AWS kaynaklarına veya dış uygulamalara erişirken IAM Rollerini (IAM Roles) kullanmalısınız. Rollerin kalıcı şifreleri yoktur; bunun yerine AWS Security Token Service (STS) aracılığıyla geçici (genellikle 15 dakika ile 12 saat arasında geçerli) kimlik bilgileri üretirler.
IAM Rolleri ve Geçici Kimlik Bilgileri (Temporary Credentials)
IAM Rolleri, belirli bir kimliğe (kullanıcı, servis veya harici sistem) geçici olarak atanan yetki kümeleridir. Rollerin en büyük avantajı, kimlik bilgilerinin rotasyonuyla (değiştirilmesiyle) sizin uğraşmak zorunda kalmamanızdır. AWS bu süreci arka planda otomatik olarak yönetir.
AWS STS (Security Token Service) Nasıl Çalışır?
Bir uygulama veya servis bir IAM rolünü üstlendiğinde (AssumeRole işlemi), AWS STS servisine bir istek gönderilir. STS, uygulamaya üç adet bilgi döndürür:
AccessKeyId(Geçici erişim anahtarı)SecretAccessKey(Geçici gizli anahtar)SessionToken(Oturum token'ı)
Bu üç bileşen, belirlenen süre dolduğunda otomatik olarak geçersiz hale gelir. Dolayısıyla, bu bilgiler sızdırılsa bile saldırganın erişim süresi son derece kısıtlı olacaktır.
EC2 Instance Profiles ve Lambda Execution Roles
Klasik bir vps sunucu güvenliği yapılandırmasında sunucu içindeki uygulamaların veritabanına veya depolama alanlarına erişmesi için şifreleri sunucu içine gömmek yaygın bir hatadır. AWS EC2 (Elastic Compute Cloud) üzerinde çalışan uygulamalarınız için asla sunucu içine AWS Access Key yazmayın.
Bunun yerine bir EC2 Instance Profile oluşturun ve bu profile ilgili IAM rolünü bağlayın. Sunucunuzda çalışan AWS SDK'ları veya AWS CLI, arka plandaki metadata servisinden (IMDSv2) bu rolün geçici kimlik bilgilerini otomatik olarak çekecektir.
Benzer şekilde, AWS Lambda fonksiyonlarınız için de Lambda Execution Role tanımlayarak fonksiyonun yalnızca ihtiyaç duyduğu kaynaklara (örneğin sadece belirli bir DynamoDB tablosuna okuma yetkisi) erişmesini sağlayın.
Güvenli IAM Politikaları (Policies) Nasıl Yazılır?
IAM politikaları, JSON formatında yazılan ve hangi kaynak üzerinde hangi eylemlere izin verileceğini veya engelleneceğini belirten kurallar bütünüdür. Güvenli bir politika yazarken spesifik eylemleri, kaynakları ve koşulları (Conditions) tanımlamalısınız.
Kötü Politika Örneği (Wildcard Felaketi)
Aşağıdaki politika, uygulamanın tüm S3 sepetlerine (Buckets) her türlü işlemi yapmasına izin verir. Bu, güvenlik açısından büyük bir zafiyettir:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
İyi Politika Örneği (Kısıtlı ve Koşullu Erişim)
Aşağıdaki güvenli politika ise sadece webteknoloji-media isimli S3 sepetine yalnızca nesne okuma (GetObject) ve yazma (PutObject) izni verir. Ayrıca, bu işlemin sadece şirket ofisinin IP adresinden (örnek IP: 192.0.2.0/24) yapılması koşulunu koşar:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::webteknoloji-media/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "192.0.2.0/24"
}
}
}
]
}
Bu politikada görüldüğü gibi, yetki alanı sadece hedef kaynakla sınırlandırılmış ve IP tabanlı ek bir güvenlik katmanı eklenmiştir.
Kimlik Bilgileri (Credentials) Güvenliği ve Secrets Manager Kullanımı
Uygulamalarınızın sadece AWS kaynaklarına değil, üçüncü taraf API'lere, veritabanlarına veya Redis önbellekleme servislerine de erişmesi gerekebilir. Bu harici kimlik bilgilerini kodunuzun içinde veya çevre değişkenlerinde (Environment Variables) düz metin olarak saklamak büyük bir risktir.
AWS Secrets Manager ile Güvenli Saklama ve Otomatik Rotasyon
AWS Secrets Manager, hassas verileri şifrelenmiş olarak saklamanızı ve bu verilerin belirli periyotlarla (örneğin 30 günde bir) otomatik olarak değiştirilmesini sağlar. Secrets Manager entegrasyonu şu şekilde çalışır:
AWS CLI ile Secrets Manager'dan Sır Çekme Örneği
Uygulama sunucunuzda aşağıdaki komutu kullanarak bir sırrı güvenli bir şekilde çekebilirsiniz:
aws secretsmanager get-secret-value --secret-id ProdDatabaseSecret --query SecretString --output text
Bu işlem için sunucunun çalıştığı IAM rolüne yalnızca secretsmanager:GetSecretValue yetkisi verilmesi yeterlidir.
AWS IAM Güvenlik Denetimi ve İzleme Araçları
Altyapınızı kurduktan sonra güvenliğin sürdürülebilir olması için sürekli izleme ve denetim mekanizmaları oluşturmalısınız. AWS, bu süreçleri otomatize etmek için güçlü araçlar sunar.
IAM Kimlik Bilgileri Raporu (Credential Report) Alma
Hesabınızdaki tüm kullanıcıların durumunu, şifrelerinin en son ne zaman değiştirildiğini ve aktif Access Key'lerini görmek için düzenli olarak bir kimlik bilgileri raporu oluşturmalısınız. AWS CLI ile bu raporu şu şekilde üretebilirsiniz:
aws iam generate-credential-report
aws iam get-credential-report --output text --query Content | base64 --decode
Sonuç ve Uygulama Adımları
AWS güvenliği, tek seferlik bir kurulum değil, sürekli devam eden bir süreçtir. Bu rehberde öğrendiklerinizi hayata geçirmek için bugün şu adımları atabilirsiniz:
"Resource": "*" kullanımını minimuma indirin; her politikayı hedef kaynağa göre özelleştirin.Bulut altyapınızın güvenliğini artırmak, hem verilerinizin gizliliğini korur hem de olası bir veri ihlalinin getireceği devasa mali ve prestij kayıplarının önüne geçer.
Yorumlar (0)
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Yorum Yazın