“Bütün kovaları kapatın” talimatı doğru ama uygulanışı çoğu zaman yanlış: hesap düzeyinde Block Public Access açılır ve ertesi gün birkaç uygulama çalışmaz hâle gelir.
Önce hangi kovalar açık?
for k in $(aws s3api list-buckets --query "Buckets[].Name" --output text); do
durum=$(aws s3api get-public-access-block --bucket "$k" \
--query "PublicAccessBlockConfiguration.BlockPublicAcls" --output text 2>/dev/null || echo "YOK")
echo "$k -> $durum"
done
YOK veya False dönenler incelenecek listedir.
Sonra gerçekten genel mi?
Bir kovanın genel erişim engeli olmaması, genel olduğu anlamına gelmez. IAM Access Analyzer bunu kesin söyler:
aws accessanalyzer create-analyzer --analyzer-name hesap-analiz --type ACCOUNT
aws accessanalyzer list-findings --analyzer-arn <arn> \
--query "findings[?resourceType=='AWS::S3::Bucket'].{Kova:resource, Durum:status}" --output table
Kapatma sırası
- Kova düzeyinde açın, hesap düzeyinde değil. Böylece etki alanı dar kalır.
- Statik site sunan kovalar için genel erişim yerine CloudFront + Origin Access Control kullanın; kova özel kalır, dağıtım genel olur.
- Hepsi geçtikten sonra hesap düzeyinde açın ki yeni kovalar varsayılan olarak kapalı gelsin.
aws s3api put-public-access-block --bucket kova-adi \
--public-access-block-configuration \
"BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"
Doğrulama adımı
Kapattıktan sonra kimliksiz bir istekle deneyin:
curl -s -o /dev/null -w "%{http_code}\n" https://kova-adi.s3.amazonaws.com/test.txt
403 beklenen sonuçtur. 200 alıyorsanız kova politikası hâlâ genel erişime izin veriyordur — Block Public Access, kova politikasındaki açık izni her zaman geçersiz kılmaz; politikayı da okuyun.