Güvenli Mimari Senaryoları
Güvenlik alanı bilginizi pekiştirmek için IAM en az ayrıcalık, şifreleme, VPC yalıtımı ve WAF/Shield hakkındaki senaryo sorularını çözün.
Güvenli Mimari Senaryoları, CoddyKit'te ücretsiz bir AWS Solutions Architect dersidir. Bu, 4 dersinin 1. 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, AWS Solutions Architect öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
Senaryo 1: En Az Yetkili EC2 S3 Erişimi
Senaryo: Bir EC2 bulut sunucusu, belirli bir S3 kovasındaki nesneleri okuması gereken bir web uygulaması çalıştırıyor. Güvenlik ekibi, uzun süreli kimlik bilgilerinin bulut sunucusunda saklanmamasını ve erişimin en az ayrıcalık ilkesine uygun olmasını gerektiriyor. Çözüm: Yalnızca belirli kova ARN’si üzerinde s3:GetObject işlemine izin veren bir IAM rolü oluşturun. Rolü bulut sunucusu profili olarak EC2 bulut sunucusuna ekleyin. Uygulama, geçici kimlik bilgilerini otomatik olarak almak için bulut sunucusu meta veri hizmetini (IMDS) kullanır — saklanan anahtarlara gerek kalmaz.
# IAM policy for least-privilege EC2 -> S3 read
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Action': ['s3:GetObject'],
'Resource': 'arn:aws:s3:::my-app-bucket/*'
}]
}
# Attach role to EC2 instance
aws ec2 associate-iam-instance-profile \
--instance-id i-1234567890abcdef0 \
--iam-instance-profile Name=EC2S3ReadRoleSenaryo 2: RDS Veritabanındaki Verileri Şifreleme
Senaryo: Bir şirket, müşterilere ait PII verilerini bir RDS PostgreSQL veritabanında saklıyor. Uyumluluk ekibi, anahtar kullanımının denetlenebilmesiyle birlikte beklemedeki verilerin şifrelenmesini gerektiriyor. Çözüm: Customer Managed Key (CMK) kullanarak AWS KMS ile RDS şifrelemesini etkinleştirin. CMK, güvenlik ekibinin anahtar döndürmeyi denetlemesine, CloudTrail üzerinden anahtar kullanımını görüntülemesine ve gerektiğinde erişimi iptal etmesine olanak tanır. Not: şifreleme RDS bulut sunucusu oluşturulurken etkinleştirilmelidir — mevcut, şifrelenmemiş bir RDS bulut sunucusunu yerinde şifreleyemezsiniz. Mevcut bir veritabanını şifrelemek için anlık görüntü alın, şifreleme etkin olacak şekilde kopyalayın ve şifrelenmiş anlık görüntüden geri yükleyin.
# Create an encrypted RDS instance
aws rds create-db-instance \
--db-instance-identifier prod-postgres \
--db-instance-class db.t3.medium \
--engine postgres \
--master-username admin \
--master-user-password SecurePass123! \
--storage-encrypted \
--kms-key-id arn:aws:kms:us-east-1:123456789012:key/mrk-abc123 \
--allocated-storage 100Senaryo 3: S3 Kovası — Genel Erişimi Engelleme
Senaryo: Bir geliştirici yanlışlıkla bir S3 kovasını genel erişime açarak müşteri verilerini ifşa etti. Güvenlik ekibi, bir geliştirici denese bile hesaptaki hiçbir S3 kovasının genel erişime açılmamasını istiyor. Çözüm: Hesap düzeyinde S3 Block Public Access özelliğini etkinleştirin. Bu özellik, tek tek ekiplerin yapılandırmasından bağımsız olarak, genel erişim izni veren tüm kova düzeyindeki politikaları veya ACL’leri geçersiz kılar. Uyumluluk dışı kovaları sürekli olarak tespit edip uyarı vermek için bunu bir AWS Config kuralıyla (s3-bucket-public-read-prohibited) birleştirin.
# Block all public access at account level
aws s3control put-public-access-block \
--account-id 123456789012 \
--public-access-block-configuration \
'BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true'
# Deploy Config rule to detect violations
aws configservice put-config-rule \
--config-rule '{"ConfigRuleName": "s3-bucket-public-read-prohibited", "Source": {"Owner": "AWS", "SourceIdentifier": "S3_BUCKET_PUBLIC_READ_PROHIBITED"}}'Senaryo 4: Veritabanı Katmanı için VPC Yalıtımı
Senaryo: Bir şirket, RDS veritabanına yalnızca uygulama sunucularından erişilebilmesini ve internetten erişilememesini istiyor. Çözüm: RDS’yi internet ağ geçidi rotası olmayan bir özel alt ağa yerleştirin. Yalnızca uygulama sunucusu güvenlik grubundan PostgreSQL’in 5432 numaralı portuna gelen trafiğe izin veren bir RDS için güvenlik grubu oluşturun; herhangi bir IP adresi aralığından gelen trafiğe izin vermeyin. Böylece bir uygulama sunucusu ele geçirilse bile saldırgan veritabanına VPC dışından ulaşamaz ve yanal hareket güvenlik grubu kurallarıyla sınırlandırılır.
# Create RDS security group allowing only the app tier SG as source
aws ec2 create-security-group \
--group-name rds-sg \
--description 'RDS security group' \
--vpc-id vpc-abc123
aws ec2 authorize-security-group-ingress \
--group-id sg-rds \
--protocol tcp \
--port 5432 \
--source-group sg-app # app tier security group ID onlySenaryo 5: Veritabanı Kimlik Bilgilerini Döndürme
Senaryo: Uygulama kodunda veritabanı kimlik bilgileri şu anda yapılandırma dosyalarına sabit olarak yazılmış durumda. Güvenlik denetimi bunu kritik bir risk olarak işaretliyor. Çözüm: Kimlik bilgilerini AWS Secrets Manager içinde saklayın ve otomatik döndürmeyi yapılandırın (Secrets Manager, RDS için yerleşik Lambda döndürme işlevlerine sahiptir). Uygulamayı, çalışma zamanında SDK kullanarak kimlik bilgilerini Secrets Manager’dan alacak şekilde güncelleyin. Uygulama, her döndürme işleminde dağıtım gerektirmeden güncel kimlik bilgilerini otomatik olarak alır. Tamamen yönetilen ve sıfır kesintiyle kimlik bilgisi döndürme için RDS gizli anahtar döndürme şablonunu etkinleştirin.
# Store RDS credentials in Secrets Manager
aws secretsmanager create-secret \
--name prod/myapp/rds \
--secret-string '{"username":"admin","password":"OldPass123!","host":"rds-endpoint.amazonaws.com","port":5432}'
# Enable automatic rotation every 30 days
aws secretsmanager rotate-secret \
--secret-id prod/myapp/rds \
--rotation-lambda-arn arn:aws:lambda:us-east-1:123:function:SecretsManagerRDSPostgreSQLRotationSingleUser \
--rotation-rules AutomaticallyAfterDays=30Senaryo 6: Olağandışı API Etkinliğini Tespit Etme
Senaryo: Bir şirket, AWS hesap kimlik bilgilerinin ele geçirilip beklenmeyen konumlardan kullanılıp kullanılmadığını tespit etmek istiyor. Çözüm: Amazon GuardDuty hizmetini tüm Bölgelerde etkinleştirin. GuardDuty, anormallikleri tespit etmek için makine öğrenimini kullanarak CloudTrail olaylarını, VPC Flow Logs kayıtlarını ve DNS günlüklerini analiz eder: alışılmadık coğrafi bölgelerden yapılan API çağrıları, EC2 üzerinde Bitcoin madenciliği örüntüleri, Tor çıkış düğümü iletişimi veya kimlik bilgilerinin dışarı sızdırılmasına ilişkin örüntüler. GuardDuty, güvenlik ekibine SNS üzerinden otomatik olarak bildirim gönderebilen veya destek talebi oluşturabilen EventBridge kurallarını tetikleyebilecek bulgular üretir.
# Enable GuardDuty in a Region
aws guardduty create-detector \
--enable \
--finding-publishing-frequency FIFTEEN_MINUTES
# EventBridge rule to react to GuardDuty HIGH severity findings
aws events put-rule \
--name guardduty-high-severity \
--event-pattern '{
"source": ["aws.guardduty"],
"detail-type": ["GuardDuty Finding"],
"detail": {"severity": [{"numeric": [">=", 7]}]}
}'Senaryo 7: Kötü Amaçlı İstekleri Engellemek için WAF
Senaryo: ALB arkasında çalışan bir web uygulaması SQL enjeksiyonu saldırıları alıyor. Uygulama hemen değiştirilemiyor. Çözüm: AWS WAF’ı ALB ile ilişkilendirin. Önceden oluşturulmuş SQL enjeksiyonu tespitini içeren Yaygın Tehditler için AWS Managed Rules kural grubunu (Core Rule Set + SQL Database kural grubu) dağıtın. WAF, HTTP isteklerini ALB’ye ulaşmadan önce inceler ve saldırı örüntüleriyle eşleşen istekleri engeller — uygulama kodunda değişiklik gerekmez. Güvenlik analizi için WAF günlük kaydını Kinesis Firehose’a da etkinleştirin.
# Create WAF Web ACL with SQL injection protection
aws wafv2 create-web-acl \
--name AppProtection \
--scope REGIONAL \
--default-action Allow={} \
--rules '[{
"Name": "AWSManagedRulesSQLiRuleSet",
"Priority": 1,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesSQLiRuleSet"
}
},
"OverrideAction": {"None": {}},
"VisibilityConfig": {"SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "SQLi"}
}]' \
--region us-east-1Senaryo 8: Hesaplar Arası Assume Role
Senaryo: Merkezi bir güvenlik hesabının, güvenlik denetimleri gerçekleştirmek için AWS Organisation içindeki tüm iş yükü hesaplarına salt okunur erişmesi gerekiyor. Çözüm: Her iş yükü hesabında, güvenlik hesabının (hesap ID’siyle) rolü üstlenmesine izin veren bir güven politikasıyla IAM rolü oluşturun. Salt okunur bir politika ekleyin (örneğin, SecurityAudit AWS yönetilen politikası). Merkezi hesaptaki güvenlik ekibi, her iş yükü hesabındaki rolü geçici olarak üstlenmek için STS AssumeRole kullanır. Bu, en az ayrıcalık ilkesine uygundur — iş yükü hesaplarında kalıcı IAM kullanıcıları oluşturulmaz.
# Trust policy in workload account (allows security account to assume role)
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'AWS': 'arn:aws:iam::SECURITY_ACCOUNT_ID:root'
},
'Action': 'sts:AssumeRole'
}]
}
# From security account: assume role in workload account
aws sts assume-role \
--role-arn arn:aws:iam::WORKLOAD_ACCOUNT_ID:role/SecurityAuditRole \
--role-session-name audit-2024-01Senaryo 9: SCP’lerle İşlemleri Kısıtlama
Senaryo: Bir şirket AWS Organizations kullanıyor ve üretim dışı bir OU’daki hiçbir hesabın pahalı GPU bulut sunucuları başlatmamasını istiyor. Çözüm: GPU bulut sunucusu aileleri (p3, p4, g4, g5) için ec2:RunInstances işlemini reddeden bir Service Control Policy (SCP) oluşturun ve bunu üretim dışı OU’ya ekleyin. SCP’ler, üye hesaplardaki kök kullanıcılar ve Yönetici düzeyindeki IAM kullanıcıları için bile geçerlidir — bunlar, hesaptaki hiçbir kimliğin geçersiz kılamayacağı koruyucu sınırlar gibi çalışır. Bu, geliştirme/sınama hesaplarında yanlışlıkla veya kötü amaçlı biçimde yüksek harcama yapılmasını önler.
# SCP to deny GPU instance types in non-prod OU
{
'Version': '2012-10-17',
'Statement': [{
'Sid': 'DenyGPUInstances',
'Effect': 'Deny',
'Action': 'ec2:RunInstances',
'Resource': 'arn:aws:ec2:*:*:instance/*',
'Condition': {
'StringLike': {
'ec2:InstanceType': ['p3.*', 'p4d.*', 'g4.*', 'g5.*']
}
}
}]
}Senaryo 10: Uyumluluk için Denetim İzi
Senaryo: Bir finansal hizmetler şirketi, tüm AWS API çağrılarının günlüğe kaydedildiğini, değiştirilemez olduğunu ve 7 yıl boyunca saklandığını denetçilere kanıtlamak zorunda. Çözüm: Günlükleri bir günlük kaydı hesabındaki özel bir S3 kovasına gönderen çok bölgeli AWS CloudTrail izi oluşturun. Günlük Dosyası Bütünlüğü Doğrulamasını etkinleştirin (günlüklerin değiştirilmesini tespit eden şifreli özet dosyaları). Günlük kaydı kovasında, 7 yıllık saklama süresine sahip Uyumluluk modunda bir S3 Nesne Kilitleme politikası ayarlayın. Bu, gerekli saklama süresi boyunca günlüklerin kök kullanıcı tarafından bile silinememesini veya değiştirilememesini sağlar.
# Create multi-region trail with integrity validation
aws cloudtrail create-trail \
--name compliance-trail \
--s3-bucket-name central-audit-logs-123 \
--is-multi-region-trail \
--enable-log-file-validation \
--include-global-service-events
aws cloudtrail start-logging --name compliance-trailSenaryo 11: Özel S3 Erişimi için VPC Endpoint
Senaryo: Özel bir VPC içindeki EC2 bulut sunucularının trafiği genel internetten geçmeden S3’e erişmesi gerekiyor. Şu anda bir NAT Gateway kullanılıyor ve NAT Gateway veri işleme ücretleri nedeniyle maliyetler yüksek. Çözüm: Bir S3 Gateway VPC Endpoint oluşturun. Özel alt ağın rota tablosuna, S3 ön ek listesini uç noktaya yönlendiren bir rota girdisi ekleyin. S3’e giden trafik artık tamamen AWS ağ omurgası içinde kalır — NAT Gateway’e veya internet ağ geçidine gerek kalmaz. S3 Gateway Endpoint’leri ücretsizdir (saatlik ve AZ başına ücretlendirilen Interface Endpoint’lerin aksine). Bu ayrıca S3 erişimini genel internet yolundan kaldırarak güvenliği artırır.
# Create S3 Gateway VPC Endpoint
aws ec2 create-vpc-endpoint \
--vpc-id vpc-abc123 \
--service-name com.amazonaws.us-east-1.s3 \
--route-table-ids rtb-private-1a rtb-private-1b
# Result: route table automatically gets a route:
# Destination: pl-63a5400a (S3 prefix list)
# Target: vpce-xyz456 (the Gateway Endpoint)
# EC2 instances now reach S3 privately at no endpoint costHızlı Kontrol
Bu dersteki AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları kapsayan senaryolar üzerinde çalıştınız: kimlik bilgileri gerektirmeyen EC2 erişimi için IAM rolleri ve instance profilleri, veritabanı kimlik bilgilerinin otomatik olarak döndürülmesi için Secrets Manager, kod değişikliği yapmadan enjeksiyon saldırılarını engellemek için AWS WAF ve değiştirilemez uyumluluk günlükleri için CloudTrail ile S3 Object Lock. Sırada dayanıklı ve yüksek kullanılabilirlik sunan mimari senaryolar var.
Sıkça Sorulan Sorular
“Güvenli Mimari Senaryoları” dersi ücretsiz mi?
Evet — “Güvenli Mimari Senaryoları” 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 AWS Solutions Architect kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
“Güvenli Mimari Senaryoları” dersinde ne öğreneceğim?
Güvenlik alanı bilginizi pekiştirmek için IAM en az ayrıcalık, şifreleme, VPC yalıtımı ve WAF/Shield hakkındaki senaryo sorularını çözün. AWS Solutions Architect 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.
AWS Solutions Architect öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AWS Solutions Architect, 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 1. dersidir.
“Güvenli Mimari Senaryoları” 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 AWS Solutions Architect dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AWS Solutions Architect 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
- Güvenli Mimari Senaryoları
- Dayanıklı ve Yüksek Kullanılabilirlikli Mimari Senaryoları
- Yüksek Performanslı ve Maliyet Optimize Edilmiş Senaryolar
- Karma Alanlardan Oluşan Tam Uzunlukta Mini Sınav