AWS Resource Policy ve SCP Farkı Nedir? Güvenlik Açısından Bilmen Gerekenler

AWS Resource Policy ve SCP Farkı Nedir? Güvenlik Açısından Bilmen Gerekenler

Giriş

AWS'de izinler sadece "kullanıcıya ne verdim" sorusuyla bitmiyor. Aynı anda "bu kaynağa kim dokunabilir" ve "organizasyon olarak neyi yasakladım" soruları da var. Bu üç katman karıştığında en pahalı hatalar çıkıyor.

Rubrik'in 2026 analizine göre herkese açık S3 bucket'ların %21'i hassas veri içeriyordu https://unavatar.webp.se/www.rubrik.com?wRubrik. Qualys'in 2025 raporu ise S3 yanlış yapılandırmalarının bulut veri ihlallerinin %80'inden fazlasını oluşturduğunu söylüyor https://unavatar.webp.se/securecodereviews.com?wSecureCodeReviews.

Bu yazı, resource-based policy ve Service Control Policy'yi güvenlik çerçevesinden, karşılaştırmalı ve pratik örneklerle anlatıyor.

TL;DR
  • Resource policy kaynağa eklenir, Principal zorunludur, "*" yazımı bucket'ı internete açar.
  • SCP izin vermez, sadece üst sınır çizer, root dahil herkesi etkiler.
  • Verizon DBIR 2025'e göre ihlallerin %30'u üçüncü taraf kaynaklı, iki kat artış var.

Identity-based policy ile resource-based policy arasındaki fark nedir?

İlk soru basit görünür ama etkisi büyük. Qualys'in 2025 raporuna göre S3 yanlış yapılandırmaları bulut veri ihlallerinin %80'inden fazlasını oluşturdu https://unavatar.webp.se/securecodereviews.com?wSecureCodeReviews. Bu hataların çoğu identity izni ile resource izninin nasıl kesiştiğini anlamamaktan kaynaklanıyor.

Identity-based policy "bu kullanıcı ne yapabilir" diye sorar. IAM kullanıcı, grup veya role eklenir. Resource-based policy ise "bu kaynağa kim erişebilir" diye sorar ve doğrudan S3 bucket, Lambda, KMS gibi kaynağa eklenir. AWS dokümantasyonu Principal alanının resource policy'lerde zorunlu olduğunu net belirtiyor https://unavatar.webp.se/docs.aws.amazon.com?wAWS Docs.

Aynı hesapta iki politika birlikte değerlendirilir. Deny varsa istek hemen reddedilir. Deny yoksa ve en az birinde Allow varsa izin verilir. Hepsi bu.

ÖzellikIdentity-basedResource-based
Nereye eklenirIAM User/Role/GroupS3, Lambda, KMS, SNS
SoruBu kimlik ne yapabilirBu kaynağa kim erişebilir
PrincipalGerekmezZorunludur
Public erişimVeremezVerebilir
Citation Capsule

AWS değerlendirme mantığına göre aynı hesap içindeki isteklerde identity ve resource policy'ler birlikte çalışır. Birinde explicit Deny varsa diğerindeki Allow önemsiz hale gelir. Çapraz hesap erişiminde ise hem kaynak hem kimlik tarafında ayrı ayrı Allow gerekir, aksi halde erişim başarısız olur.

Resource policy ne zaman public erişime neden olur ve güvenlik riski nedir?

Public erişim tek satırda gizlidir. Rubrik'in 2026 analizinde herkese açık bucket'ların %21'inde hassas veri bulundu https://unavatar.webp.se/www.rubrik.com?wRubrik. Bu oran "Principal": "*" ile {"AWS":"*"} arasındaki farkın göz ardı edildiğini gösteriyor.

Bu fark gerçekten bu kadar önemli mi? Evet. "*" anonim dahil herkes demek. {"AWS":"*"} sadece AWS kimliği doğrulanmış kullanıcılar demek.

S3 Public Policy Örneğijson
{
  "Statement": [
    {
      "Sid": "PublicRead",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::bucket-name/*"
    }
  ]
}

Censys 2023 taramasında 7.640 potansiyel bucket buldu, 49'u tamamen açık, 1.235'i anonim okumaya izin veriyordu https://unavatar.webp.se/censys.com?wCensys.

UNIQUE INSIGHT: Çoğu ekip "Principal": "*" yazıp sonra Condition eklemeyi unutuyor. Güvenli desen, "*" ile başlayıp aws:PrincipalOrgID ile daraltmaktır. Bu, public görünüp aslında organizasyonla sınırlı kalır.

Kontrol komutları:

AWS CLIbash
aws s3api get-bucket-policy-status --bucket <name>
aws s3 ls s3://<name> --no-sign-request
mermaid
Loading Mermaid...

Lambda ve KMS gibi servislerde resource policy nasıl çalışır?

Kaynak politikaları sadece S3 ile sınırlı değil. Trend Micro'nun 2020-2021 verisinde S3 "block public access" kuralı %68,97 oranında yanlış yapılandırılmıştı https://unavatar.webp.se/www.trendmicro.com?wTrend Micro. Lambda ve KMS'te benzer hatalar fonksiyonun kim tarafından çağrılabileceğini belirliyor.

Lambda'da resource policy, "kim InvokeFunction yapabilir" sorusunu cevaplar.

Lambda Resource Policyjson
{
  "Sid": "OrgOnlyInvoke",
  "Effect": "Allow",
  "Principal": "*",
  "Action": "lambda:InvokeFunction",
  "Resource": "arn:aws:lambda:eu-west-1:123456789012:function:my-func",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalOrgID": "o-abc123"
    }
  }
}

KMS key policy'lerde de Principal zorunlu. Key'i kim kullanabilir, hangi hesap şifre çözebilir, hepsi orada tanımlanır. Yanlış yazım, verinin kilitli kalmasına veya herkese açılmasına neden olur.

SCP nedir ve neden izin vermez?

SCP'ler organizasyon seviyesinde çalışır. Verizon DBIR 2025, ihlallerin %30'unun üçüncü taraf yazılım ve hizmetlerden kaynaklandığını, bunun bir önceki yıla göre iki kat arttığını buldu https://unavatar.webp.se/cycode.com?wCycode. Bu artış merkezi guardrail ihtiyacını açıklıyor.

SCP izin vermez. Sadece maksimum sınırı çizer. Eylül 2025 güncellemesiyle tam IAM politika dili desteği geldi https://unavatar.webp.se/aws.amazon.com?wAWS Security Blog.

Temel kurallar:

  • Kapsam: root dahil herkes
  • Kota: root, OU, hesap başına en fazla 5 SCP
  • Varsayılan: FullAWSAccess
mermaid
Loading Mermaid...

SCP reddettiğinde hata mesajı net olur:

Access Denied Errortext
An error occurred (AccessDeniedException) when calling the DeleteDetector operation: User is not authorized to perform: guardduty:DeleteDetector because of an explicit deny in a service control policy

ORIGINAL DATA: Trend Micro verisinde AWS CloudTrail yapılandırma değişiklikleri kuralı %100 oranında yanlış yapılandırılmış olarak tespit edildi. Bu, loglamanın kapalı kalması demek.

Citation Capsule

AWS Security Blog, SCP'leri birleştirerek kota sorununu aşmayı öneriyor. Her SCP 5.120 byte ile sınırlı. Whitespace'leri silmek, wildcard kullanmak ve aynı Effect'e sahip action'ları tek statement'ta toplamak politika boyutunu küçültür ve yönetimi kolaylaştırır.

Politika türleri birlikte nasıl değerlendirilir ve sık hatalar nelerdir?

Üç katman birlikte düşünülmediğinde hata kaçınılmaz. Trend Micro'ya göre bulut güvenlik sorunlarının %65 ila %70'i yanlış yapılandırmadan kaynaklanıyor https://unavatar.webp.se/www.trendmicro.com?wTrend Micro. Peki bu oran neden düşmüyor?

Çünkü ekipler genelde sadece IAM'e bakıyor. Oysa değerlendirme sırası şöyle: önce SCP, sonra identity ve resource. Birinde Deny varsa biter.

Sık hatalar:

  • Bucket policy'de "Principal": "*" bırakmak
  • SCP'de Allow'ı her seviyeye koymamak (SCP'de Allow kalıtımla gelmez)
  • Permissions Boundary'yi unutmak: Bu da kullanıcı/rol için maksimum sınır çizer, SCP gibi izin vermez.

Verizon DBIR 2025 ayrıca zafiyet sömürüsünün en yaygın ikinci vektör (%20) olduğunu, saldırganların ortalama 5 günde kitlesel sömürüye geçtiğini, yamaların ise 32-38 gün sürdüğünü belirtiyor https://unavatar.webp.se/cycode.com?wCycode.

Sıkça Sorulan Sorular (FAQ)

Resource policy ile IAM policy çakışırsa hangisi kazanır?

Aynı hesapta ikisi de değerlendirilir. Birinde explicit Deny varsa erişim reddedilir, Deny yoksa ve en az birinde Allow varsa izin verilir. Çapraz hesapta ise hem identity hem resource tarafında Allow gerekir. Qualys 2025'e göre S3 hatalarının %80'inden fazlası bu kesişimi yanlış anlamaktan kaynaklanıyor.

SCP neden root kullanıcısını da engeller?

SCP hesap düzeyinde maksimum izin sınırıdır ve tasarım gereği root dahil tüm principal'ları kapsar. Bu, güvenlik ihlali durumunda bile önemli servislerin kapatılmasını engellemek için kullanılır. Verizon DBIR 2025'te üçüncü taraf kaynaklı ihlallerin %30'a çıkması bu tür merkezi kontrolleri zorunlu kılıyor.

Principal: * ile {AWS: *} arasındaki fark nedir?

"Principal": "*" anonim erişim dahil tam public demektir ve Rubrik'in 2026'da tespit ettiği %21 hassas veri sızıntısının ana nedenidir. {"AWS": "*"} ise sadece AWS kimliği doğrulanmış kullanıcılara izin verir. Censys'in bulduğu 1.235 anonim okunabilir bucket bu ayrımın göz ardı edildiğini gösteriyor.

New story coming soon
AWS IAM policy yapısı nasıl çalışır?

Comments

Loading comments...