라벨이 Block Public Access인 게시물 표시

S3 퍼블릭 액세스 차단(Block Public Access)이 객체 공개 설정을 무력화하는 이유

S3에 이미지를 업로드하고 객체 ACL을 'public-read'로 설정했는데도 URL로 접근하면 'Access Denied'가 반환되는 상황은 AWS를 처음 다루는 엔지니어뿐 아니라 경험 있는 팀에서도 자주 마주치는 문제다. 원인은 대부분 하나다 — 버킷 수준의 'Block Public Access' 설정이 객체 ACL보다 상위에서 동작하기 때문 이다. TL;DR — S3 퍼블릭 액세스 차단 문제 요약 확인 항목 예상 상태 실제 차단 원인 객체 ACL public-read 설정됨 Block Public Access가 ACL을 무시함 버킷 Block Public Access 기본값: 모두 활성화 4가지 설정 중 하나라도 켜져 있으면 퍼블릭 접근 차단 버킷 정책 없거나 Allow 없음 ACL 없이 정책만으로 퍼블릭 접근 허용 가능 계정 수준 Block Public Access 기본값: 모두 활성화 버킷 설정보다 상위에서 적용됨 S3 퍼블릭 액세스 제어 계층 구조 이해 S3의 접근 제어는 단일 설정이 아니라 여러 계층이 순서대로 평가되는 구조다. 객체 ACL을 'public-read'로 바꾸는 것은 가장 하위 계층을 건드리는 것이고, 그 위에 버킷 정책, 버킷 Block Public Access, 계정 수준 Block Public Access가 차례로 쌓여 있다. 상위 계층이 'Deny'를 내리면 하위 계층의 'Allow'는 효력이 없다. AWS는 2018년 이후 신규 버킷 생성 시 Block Public Access 4가지 옵션을 모두 활성화한다. 이 기본값은 의도치 않은 데이터 노출을 막기 위한 것이지만, 퍼블릭 접근이 필요한 정적 웹사이트 호스팅이나 공개 이미지 서빙 시나리오에서는 직접 해제해야 한다. gra...