S3 Erişim Denetimi: Bucket İlkeleri ve ACL'ler
Bucket ilkeleri yazacak, bunları ACL'lerle karşılaştıracak ve güvenli barındırma için genel erişim engelleme ayarlarını yapılandıracaksınız.
S3 Erişim Denetimi: Bucket İlkeleri ve ACL'ler, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
S3 Erişim Denetimine Genel Bakış
S3, birbiriyle örtüşen birden fazla erişim denetimi mekanizması sunar: IAM ilkeleri (kimlik tabanlıdır, asıl varlıkların neler yapabileceğini denetler), bucket ilkeleri (bucket üzerindeki kaynak tabanlı JSON ilkeleri), Erişim Denetimi Listeleri (ACL'ler) (eski nesne/bucket başına izinler) ve S3 Genel Erişimi Engelleme (diğer ilkelerden bağımsız olarak tüm genel erişimi engelleyen hesap veya bucket düzeyinde geçersiz kılma). Günümüzde çoğu kullanım durumu için bucket ilkeleri ile Genel Erişimi Engelleme önerilen yaklaşımdır; ACL'ler eski kabul edilir.
Bucket Politikaları: Kaynak Tabanlı JSON
Bucket politikası, doğrudan S3 bucket'ına eklenen bir JSON belgesidir. Hangi asıl kullanıcıların (IAM kullanıcıları, roller, AWS hesapları, hizmetler veya genel kullanıcılar) hangi kaynaklar (bucket ve/veya belirli anahtar önekleri) üzerinde hangi eylemleri gerçekleştirebileceğini belirtir. Bucket politikaları, IAM rolleri gerektirmeden hesaplar arası erişimi destekler: farklı bir AWS hesabının IAM rolüne, belirli nesnelere doğrudan bucket politikası üzerinden okuma erişimi verebilirsiniz. Her bucket'ın bir politikası olabilir ve maksimum boyut 20 KB'tır.
# Allow a specific IAM role from another account to read objects
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'AWS': 'arn:aws:iam::999999999999:role/PartnerReadRole'
},
'Action': 's3:GetObject',
'Resource': 'arn:aws:s3:::my-bucket/partner-data/*'
}]
}Nesneleri Herkese Açık Olarak Okunabilir Yapma
Herkese açık içerik sunmak için (ör. statik website varlıkları, herkese açık veri kümeleri), nesneleri bir bucket politikası aracılığıyla herkes tarafından okunabilir hâle getirebilirsiniz. Önce bucket düzeyinde Block Public Access'i devre dışı bırakın, ardından Principal: '*' ve Action: s3:GetObject içeren bir bucket politikası ifadesi ekleyin. Block Public Access ayarını devre dışı bırakmak ve bucket politikası Allow iznini birlikte kullanmak gerekir; diğerini kullanmadan yalnızca birini etkinleştirmek işe yaramaz. Tüm nesnelerin herkese açık olmasını kasıtlı olarak istemediğiniz sürece Resource'u her zaman bucket'ın tamamı yerine belirli bir önekle sınırlayın.
# Public read policy for static website assets
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': '*',
'Action': 's3:GetObject',
'Resource': 'arn:aws:s3:::my-website-bucket/public/*'
}]
}S3 Block Public Access Ayarları
S3 Block Public Access, bucket politikalarını ve ACLs'leri geçersiz kılan dört ayarlı bir güvenlik ağıdır: BlockPublicAcls (herkese açık ACLs ayarlama isteklerini reddeder), IgnorePublicAcls (mevcut herkese açık ACLs'leri yok sayar), BlockPublicPolicy (herkese açık erişim veren bucket politikalarını reddeder) ve RestrictPublicBuckets (erişimi herkese açık politikaya göre sınırlar). Dört ayarın tümü varsayılan olarak etkindir. Block Public Access'i hesap düzeyinde de etkinleştirerek, tek tek bucket ayarlarından bağımsız olarak tüm bucket'lar için engelleyebilirsiniz; bu, yanlışlıkla herkese açık hâle getirmeyi önlemek için idealdir.
# Enable all Block Public Access settings on a bucket
aws s3api put-public-access-block \
--bucket my-private-bucket \
--public-access-block-configuration \
BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=trueErişim Kontrol Listeleri (ACLs): Eski Yöntem
S3 ACLs, IAM'den önce kullanılan özgün erişim kontrol mekanizmasıdır. Bir ACL, AWS hesaplarına veya önceden tanımlı gruplara (tüm kullanıcılar, kimliği doğrulanmış AWS kullanıcıları, günlük teslimi) önceden tanımlı izinler (READ, WRITE, FULL_CONTROL) verir. ACLs, bucket düzeyinde ya da tek tek nesne düzeyinde uygulanabilir. AWS artık ACLs'leri devre dışı bırakmanızı (S3 'Bucket Owner Enforced' ayarı, bucket sahibinin tüm nesnelere sahip olmasını sağlayarak ACLs'leri devre dışı bırakır) ve bunun yerine bucket politikaları ile IAM kullanmanızı önerir. ACLs, eski bir kavram olarak SAA-C03 sınavında hâlâ sorulmaktadır.
# Disable ACLs by setting ownership to BucketOwnerEnforced
aws s3api put-bucket-ownership-controls \
--bucket my-bucket \
--ownership-controls '{"Rules":[{"ObjectOwnership":"BucketOwnerEnforced"}]}'CloudFront için Origin Access Control
S3 içeriğini CloudFront üzerinden sunarken bucket'ın gizli kalmasını, ancak CloudFront'un nesneleri alabilmesini istersiniz. Origin Access Identity'nin (OAI) modern alternatifi olan Origin Access Control (OAC) kullanın. OAC, Block Public Access etkin kalırken bucket politikasında s3:GetObject izni verdiğiniz bir CloudFront kimliği oluşturur. Böylece kullanıcılar CloudFront üzerinden geçmek zorundadır (önbellekleme, WAF, HTTPS için) ve bucket'a doğrudan erişemezler; bu, SAA-C03 sınavında sık görülen güvenli bir mimari modelidir.
# Bucket policy granting CloudFront OAC access
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'Service': 'cloudfront.amazonaws.com'
},
'Action': 's3:GetObject',
'Resource': 'arn:aws:s3:::my-bucket/*',
'Condition': {
'StringEquals': {
'AWS:SourceArn': 'arn:aws:cloudfront::123456789012:distribution/EDFDVBD6EXAMPLE'
}
}
}]
}Hesaplar Arası S3 Erişimi
Başka bir AWS hesabına S3 bucket'ınıza erişim vermenin iki yolu vardır. Seçenek 1 — Bucket politikası: dış hesabın ARN'sini Principal olarak ve istenen S3 eylemlerini içeren bir ifade ekleyin. Dış hesabın IAM kullanıcıları/rolleri yine de S3'ü çağırmak için IAM izinlerine ihtiyaç duyar; ayrıca bucket politikası onlara Allow izni vermelidir. Seçenek 2 — Güven politikası olan IAM rolü: hesabınızda, dış hesabın güvendiği bir rol oluşturun; dış hesabın kimlikleri rolü üstlenir ve bucket'ınızın izinlerini alır. Bucket politikası salt okunur senaryolar için daha basittir; roller ise operasyonel erişim için daha uygundur.
Web Uygulamaları için CORS Yapılandırması
Cross-Origin Resource Sharing (CORS), bir etki alanında barındırılan web uygulamasının farklı bir etki alanındaki S3 bucket'ına JavaScript ile getirme istekleri yapmasına olanak tanır. CORS yapılandırması olmadan tarayıcılar bu istekleri güvenlik nedeniyle engeller. Bucket'a izin verilen kaynakları, HTTP yöntemlerini ve üst bilgileri belirten bir CORS yapılandırması eklersiniz. CORS, example.com üzerinde barındırılan bir React SPA'nın görüntüleri veya dosyaları doğrudan bir S3 bucket URL'sinden alması gerektiğinde yaygın olarak kullanılır.
# Apply a CORS configuration
aws s3api put-bucket-cors \
--bucket my-website-bucket \
--cors-configuration '{"CORSRules":[{"AllowedOrigins":["https://example.com"],"AllowedMethods":["GET"],"AllowedHeaders":["*"],"MaxAgeSeconds":3600}]}'Geçici Erişim için Önceden İmzalanmış URL'ler
Önceden imzalanmış URL, herhangi bir bucket veya nesne iznini değiştirmeden gizli bir S3 nesnesine zaman sınırlı erişim (GET veya PUT için) verir. URL, kimlik bilgilerinizi ve sona erme zamanını içerir; URL'ye sahip olan herkes, süresi dolana kadar nesneye erişebilir. Önceden imzalanmış URL'leri şunlar için kullanın: uygulamanızdaki kimliği doğrulanmış kullanıcıların gizli dosyaları indirmesine izin vermek, istemcilerin arka ucunuzdan geçmeden doğrudan S3'e yükleme yapmasını sağlamak veya raporları geçici olarak paylaşmak. Sona erme süresi 1 saniye ile 7 gün arasında olabilir (STS geçici kimlik bilgileri kullanıldığında en fazla 12 saattir).
# Generate a pre-signed GET URL valid for 24 hours
aws s3 presign s3://my-private-bucket/reports/invoice.pdf \
--expires-in 86400
# Generate a pre-signed PUT URL (for client uploads)
aws s3 presign s3://my-private-bucket/uploads/new-file.pdf \
--expires-in 3600 \
--method PUTGüvenlik için Bucket Politikası Koşulları
Bağlama dayalı güvenlik eklemek için bucket politikası koşullarını kullanın. Yaygın modeller şunlardır: aws:SourceIp, erişimi belirli IP aralıklarıyla sınırlar (ör. VPC uç noktaları veya kurumsal ağlar); aws:SecureTransport: true, HTTP üzerinden gelen istekleri reddederek HTTPS kullanımını zorunlu kılar (hassas veri depolayan tüm bucket'lar için iyi bir uygulamadır); s3:x-amz-server-side-encryption, nesnelerin sunucu taraflı şifrelemeyle yüklenmesini zorunlu kılar; aws:PrincipalOrgID ise erişimi AWS kuruluşunuzdaki asıl kullanıcılarla sınırlandırarak verilerin dış hesaplara sızdırılmasını önler.
# Deny non-HTTPS access to the bucket
{
'Effect': 'Deny',
'Principal': '*',
'Action': 's3:*',
'Resource': [
'arn:aws:s3:::my-secure-bucket',
'arn:aws:s3:::my-secure-bucket/*'
],
'Condition': {
'Bool': {'aws:SecureTransport': 'false'}
}
}Gizli Erişim için S3 VPC Uç Noktaları
Varsayılan olarak, gizli bir alt ağdaki EC2 örnekleri S3'e internet üzerinden (NAT ağ geçidi aracılığıyla) erişir; bu durum NAT maliyetlerine neden olur ve trafiği genel internete açar. S3 Gateway Endpoints, ek ücret olmadan ve NAT ağ geçidine ihtiyaç duymadan VPC içinden S3'e gizli bağlantı sağlar. Gateway Endpoint'i yönlendirme tablonuza eklersiniz; S3'e giden trafik otomatik olarak AWS'nin gizli ağı üzerinden yönlendirilir. Erişimi yalnızca uç nokta üzerinden gelen isteklerle sınırlamak için aws:SourceVpce kullanan bucket politikası koşulları da ekleyebilirsiniz.
# Create an S3 gateway endpoint and associate with route tables
aws ec2 create-vpc-endpoint \
--vpc-id vpc-12345678 \
--service-name com.amazonaws.us-east-1.s3 \
--route-table-ids rtb-12345678Hızlı Kontrol
Bu dersteki AWS Solutions Architect (SAA-C03) kavramlarına ilişkin anlayışınızı sınayın.
Ders Özeti
Bu derste şunları öğrendiniz: bucket politikaları, S3'e yönelik hesaplar arası ve hizmet erişimini denetleyen kaynak tabanlı JSON belgeleridir, S3 Block Public Access, yanlışlıkla herkese açık hâle getirmeyi önleyen bir güvenlik geçersiz kılma mekanizmasıdır ve önceden imzalanmış URL'ler, VPC uç noktaları ve CORS yapılandırmaları belirli erişim modellerini güvenli biçimde ele alır. Sırada S3 sürüm oluşturma, MFA Delete ve çoğaltma yer alıyor.
Yapay zeka eğitmeniyle Cloud & IT Cert Prep öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 150
- Dersler
- 600
Sıkça Sorulan Sorular
“S3 Erişim Denetimi: Bucket İlkeleri ve ACL'ler” dersi ücretsiz mi?
Evet — “S3 Erişim Denetimi: Bucket İlkeleri ve ACL'ler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
“S3 Erişim Denetimi: Bucket İlkeleri ve ACL'ler” dersinde ne öğreneceğim?
Bucket ilkeleri yazacak, bunları ACL'lerle karşılaştıracak ve güvenli barındırma için genel erişim engelleme ayarlarını yapılandıracaksınız. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“S3 Erişim Denetimi: Bucket İlkeleri ve ACL'ler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Bucket'lar, Nesneler ve Bölgeler
- S3 Erişim Denetimi: Bucket İlkeleri ve ACL'ler
- Sürümleme, MFA Delete ve Çoğaltma
- Depolama Sınıfları ve Yaşam Döngüsü İlkeleri