AWS Güvenlik Rehberi: IAM Rolleri ve Credentials Güvenliği Nasıl Sağlanır?

AWS Güvenlik Rehberi: IAM Rolleri ve Credentials Güvenliği Nasıl Sağlanır?

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:

  • Root hesabı için hemen güçlü bir şifre belirleyin ve donanımsal veya yazılımsal Çok Faktörlü Kimlik Doğrulamayı (MFA) aktif edin.
  • Root hesabı için asla bir Access Key (Erişim Anahtarı) oluşturmayın. Eğer varsa, bu anahtarları derhal silin.
  • Günlük yönetimsel işleriniz için AWS IAM Identity Center (eski adıyla AWS SSO) üzerinden ayrı bir yönetici (Administrator) kullanıcısı tanımlayın ve Root hesabını yalnızca faturalandırma yapılandırmaları veya hesap kapatma gibi ekstrem durumlar için saklayın.
  • 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:

    • Veritabanı şifrenizi Secrets Manager'a kaydedersiniz.
    • Uygulamanız başlatılırken veya çalışma anında AWS SDK kullanarak Secrets Manager'dan güncel şifreyi talep eder.
    • AWS Secrets Manager, şifreyi AWS KMS (Key Management Service) ile çözerek uygulamaya güvenli bir şekilde iletir.
    • Secrets Manager, entegre AWS Lambda fonksiyonları aracılığıyla veritabanı şifresini arka planda günceller, böylece uygulamanız kesintiye uğramadan her zaman en güncel ve güvenli şifreyi kullanı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.

    • AWS CloudTrail: Hesabınızda gerçekleştirilen tüm API çağrılarını kaydeder. Hangi IAM kullanıcısının veya rolünün, hangi IP adresinden, ne zaman ve hangi işlemi yaptığını CloudTrail loglarından analiz edebilirsiniz. Şüpheli bir işlem tespit edildiğinde alarm üretmek için CloudTrail'i Amazon CloudWatch ile entegre etmelisiniz.
    • IAM Access Analyzer: Kaynak tabanlı politikalarınızı analiz ederek, dış dünyayla (diğer AWS hesapları veya internet) paylaşılan kaynakları tespit eder. Yanlışlıkla halka açık hale getirilmiş S3 sepetlerini veya KMS anahtarlarını bulmak için mükemmel bir araçtır.
    • AWS Config: AWS kaynaklarınızın yapılandırma geçmişini izler ve belirlediğiniz kurallara uygunluğunu denetler. Örneğin, "MFA aktif olmayan kullanıcıları tespit et" veya "Kullanılmayan IAM rollerini raporla" gibi kurallar tanımlayabilirsiniz.

    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:

  • Root Hesabını Güvenceye Alın: Root hesabınızda MFA'yı aktif edin ve tüm kalıcı Access Key'leri silin.
  • Kalıcı Anahtarları Temizleyin: Geliştiricilerinizin bilgisayarlarında veya sunucularda duran statik AWS Access Key'leri tespit edin ve bunları IAM Rolleri ile değiştirin.
  • Politikaları Daraltın: IAM politikalarınızda "Resource": "*" kullanımını minimuma indirin; her politikayı hedef kaynağa göre özelleştirin.
  • Secrets Manager Entegrasyonu Yapın: Kod tabanınızdaki veritabanı şifrelerini ve API anahtarlarını temizleyerek AWS Secrets Manager'a taşıyın.
  • Denetimi Başlatın: AWS CloudTrail ve IAM Access Analyzer servislerini aktif ederek olağan dışı hareketleri izlemeye başlayın.
  • 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.

    Sıkça Sorulan Sorular

    AWS Access Key sızdırılırsa ne yapılmalıdır?
    Sızdırılan Access Key derhal AWS IAM konsolu veya AWS CLI üzerinden deaktif edilmeli (Inactive) ve ardından tamamen silinmelidir. AWS CloudTrail logları incelenerek sızdırılan anahtarla hangi yetkisiz işlemlerin yapıldığı tespit edilmeli ve tüm etkilenen şifreler/kaynaklar güncellenmelidir.
    IAM Rolü ile IAM Kullanıcısı arasındaki temel fark nedir?
    IAM Kullanıcısı, uzun ömürlü ve kalıcı kimlik bilgilerine (şifre, Access Key) sahip bir kimliği temsil eder. IAM Rolü ise kalıcı kimlik bilgilerine sahip değildir; bunun yerine AWS STS aracılığıyla geçici ve süresi dolan kimlik bilgileri kullanarak güvenli erişim sağlar.
    AWS Secrets Manager kullanmak neden önemlidir?
    Secrets Manager, hassas veritabanı şifrelerini veya API anahtarlarını uygulama kodunun içinde düz metin olarak saklama riskini ortadan kaldırır. Verileri şifreler, merkezi olarak yönetir ve şifrelerin otomatik olarak rotasyona tabi tutulmasını sağlayarak güvenliği üst seviyeye çıkarır.
    WxDigitals
    WxDigitals

    WebTeknoloji.net editör ekibi; web geliştirme, SEO, hosting ve yapay zeka alanlarında üretilen içeriklerin araştırma, test ve yayın süreçlerini yürütür. Tüm incelemeler gerçek kullanım deneyimine, karşılaştırmalar ise resmi dokümantasyon ve güncel fiyatlandırma sayfalarına dayanır.

    Bu içeriği faydalı bulduysanız…

    Haftalık teknoloji & SEO rehberlerimize katılın, 38 maddelik Teknik SEO Kontrol Listesi PDF'ini hediye olarak hemen indirin.

    Yorumlar (0)

    Henüz yorum yapılmamış. İlk yorumu siz yapın!

    Yorum Yazın