설명
S3의 BlockPublicPolicy는 공개로 판단되는 버킷 정책을 새로 저장하는 요청을 거부하는 보호 설정입니다. 비활성화되어 있어도 그 자체가 데이터를 공개하지는 않습니다. 새 버킷에는 퍼블릭 액세스 차단이 기본 적용되며, 템플릿에 설정이 없다는 이유만으로 실제 보호가 꺼졌다고 판단할 수 없습니다.
버킷과 계정 등 적용되는 차단 설정 중 더 엄격한 설정이 우선합니다. BlockPublicPolicy를 켜도 이미 저장된 정책이 삭제되지는 않으므로 현재 권한도 점검해야 합니다.
잠재적 영향
공개가 필요 없는 버킷에서 공개 정책의 저장을 막지 않으면, 이후 잘못된 정책 변경으로 객체가 외부에 노출될 위험이 커질 수 있습니다. 실제 노출 범위는 정책의 작업과 리소스, 다른 접근 제어에 달려 있습니다.
해결 방법
- 비공개 버킷에는 퍼블릭 액세스 차단의 네 옵션을 모두 명시적으로 활성화하세요.
- 현재 버킷 정책과 ACL의 공개 권한도 제거하고 계정 수준의 설정을 확인하세요.
- 의도적인 공개 서비스는 필요한 범위와 대체 구성을 검토하세요. 차단 변경이 정상 서비스나 필요한 교차 계정 접근을 중단하지 않는지 시험하세요.
예시
두 예제는 같은 버킷의 차단 설정을 비교합니다. 공개 정책이나 ACL은 별도로 부여되는 권한이며, 이 설정만으로 객체가 공개되는 것은 아닙니다.
변경 전
yaml
Resources:
Bucket13:
Type: AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: false
BlockPublicPolicy: false
IgnorePublicAcls: false
RestrictPublicBuckets: true
BlockPublicPolicy가 꺼져 있지만 RestrictPublicBuckets는 켜져 있습니다. 두 옵션은 역할이 다르며, 실제 적용되는 계정 수준 보호도 함께 확인해야 합니다.
변경 후
yaml
Resources:
Bucket13:
Type: AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true
네 가지 차단 옵션을 모두 켭니다. 기존 정책과 ACL을 삭제하는 조치는 아니므로 불필요한 공개 허용도 정리하고 필요한 접근을 검증하세요.