AWS 보안 사고의 상당수는 S3에서 시작된다. 2017년부터 2022년까지 공개된 데이터 유출 사건의 약 35%가 잘못 설정된 S3 버킷과 관련이 있었다. Verizon, Twitch, Toyota, GoDaddy — 이름만 들어도 아는 기업들이 S3 설정 실수로 수천만 건의 개인정보를 노출했다. 이 day에서는 S3 보안 모델의 계층 구조를 이해하고, 암호화 방식의 기술적 차이를 파고들며, 실무에서 흔히 발생하는 함정을 짚는다.
S3에 대한 요청은 다음 순서로 평가된다. 하나라도 Deny가 있으면 최종 거부다.
요청 도착
↓
① 계정 수준 Block Public Access → Deny면 즉시 거부
↓
② 버킷 수준 Block Public Access → Deny면 즉시 거부
↓
③ 명시적 Deny (버킷 정책, SCP, IAM 정책) → Deny면 즉시 거부
↓
④ IAM 정책 Allow + 버킷 정책 Allow → 허용
또는 리소스 기반 정책만 있는 경우 → 허용
↓
⑤ ACL (Bucket Owner Enforced면 무시됨)
↓
기본 거부
이 구조에서 가장 강력한 것은 Block Public Access다. 버킷 정책에서 "Principal": "*" (퍼블릭)로 허용했더라도 Block Public Access가 활성화되어 있으면 퍼블릭 접근이 차단된다.