설명
RestrictPublicBuckets는 공개 정책이 있는 S3 버킷의 접근을 AWS 서비스 주체와 버킷 소유 계정의 권한 있는 사용자로 제한합니다. 이 보호가 적용되지 않으면 공개 정책이 허용한 외부 접근이 가능할 수 있습니다. 실제 접근에는 계정 수준의 차단 등 다른 제어도 적용됩니다.
이 설정은 공개 정책 자체를 삭제하지 않습니다. 공개로 분류된 정책에서는 특정 외부 계정에 대한 별도 허용도 차단될 수 있으므로 필요한 계정 간 연동을 확인해야 합니다.
잠재적 영향
- 공개 정책이 객체 읽기를 허용하면 의도하지 않은 사용자에게 데이터가 노출될 수 있습니다.
- 공개 쓰기나 삭제 권한까지 부여하면 데이터 변경이나 손실로 이어질 수 있습니다.
해결 방법
- 비공개 버킷에는
PublicAccessBlockConfiguration.RestrictPublicBuckets: true를 설정하세요. - 불필요한 공개 정책 문장을 제거하고 필요한 계정과 역할만 지정하세요. 변경 후 필요한 서비스 및 계정 간 접근을 확인하세요.
BlockPublicPolicy와 ACL 차단 옵션도 함께 검토하세요. 새 공개 정책을 거부하는 설정만으로 기존 공개 정책의 접근이 제거되지는 않습니다.
예시
다음은 같은 버킷의 퍼블릭 액세스 차단 설정을 비교한 예제입니다.
변경 전
yaml
Resources:
Bucket13:
Type: AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: false
BlockPublicPolicy: true
IgnorePublicAcls: false
RestrictPublicBuckets: false
기존 공개 정책에 따른 접근을 RestrictPublicBuckets로 제한하지 않습니다. 계정 수준의 차단 등은 여전히 적용되며, 이 설정만으로 실제 공개 정책이 존재한다고 판단할 수는 없습니다.
변경 후
yaml
Resources:
Bucket13:
Type: AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true
공개 정책이 있을 때 접근을 제한하고 다른 공개 차단도 활성화합니다. 필요한 외부 계정 접근을 유지하려면 정책에서 공개 권한을 제거하고 해당 계정의 권한을 명확히 구성하세요.