S3 공개 ACL 차단 설정 점검

새 공개 ACL을 차단하는 S3 설정을 점검하고 기존 공개 권한도 정리하세요.

설명

S3 버킷에서 공개 ACL을 막지 않으면 ACL 설정 실수로 버킷이나 객체에 의도하지 않은 공개 권한이 부여될 수 있습니다. BlockPublicAcls는 새 공개 ACL을 포함한 요청을 거부하지만 기존 ACL을 제거하지는 않습니다.

실제 공개 접근은 ACL 사용 여부와 다른 보호 설정에 따라 달라집니다. 새 버킷은 기본적으로 ACL이 비활성화되며, IgnorePublicAcls나 계정 수준의 차단도 공개 권한을 무효화할 수 있습니다.

잠재적 영향

  • 공개 읽기 권한이 실제로 적용되면 객체 내용이나 목록이 노출될 수 있습니다.
  • 버킷에 공개 쓰기 권한이 적용되면 원치 않는 객체 생성이나 삭제가 가능할 수 있습니다.

해결 방법

  • 공개 ACL이 필요하지 않으면 PublicAccessBlockConfiguration에 BlockPublicAcls: true를 설정하세요.
  • 기존 공개 ACL도 정리하고 IgnorePublicAcls를 활성화하세요. 비공개 버킷은 나머지 퍼블릭 액세스 차단 옵션과 버킷 정책도 함께 점검하세요.
  • ACL을 비활성화할 때는 필요한 접근 권한을 정책으로 먼저 구성하세요.

예시

다음 예제는 새 공개 ACL 차단 설정을 비교합니다.

변경 전

yaml
Resources:
  Bucket1:
    Type: AWS::S3::Bucket
    Properties:
      PublicAccessBlockConfiguration:
        BlockPublicAcls: false
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true

BlockPublicAcls는 꺼져 있지만 IgnorePublicAcls: true가 공개 ACL 권한을 무시합니다. 이 예제만으로 객체가 공개되었다고 판단할 수는 없습니다.

변경 후

yaml
Resources:
  Bucket1:
    Type: AWS::S3::Bucket
    Properties:
      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true

새 공개 ACL 요청을 차단하고 기존 공개 ACL 권한도 무시합니다. 필요한 애플리케이션 접근이 계속 동작하는지 확인하세요.

참조