S3 버킷 정책 연결 누락

필요한 버킷 정책을 올바른 대상에 연결하세요.

설명

버킷 정책에 필요한 접근 제어를 정의했다면 그 정책이 실제 버킷에 연결되어야 합니다. 정책이 없다는 사실만으로 버킷이 공개되는 것은 아니며 IAM 권한과 다른 S3 제어도 함께 적용됩니다.

잠재적 영향

잘못된 버킷 참조는 배포를 실패하게 하거나 의도한 접근 제어가 대상 버킷에 적용되지 않게 할 수 있습니다.

해결 방법

AWS::S3::BucketPolicy의 Bucket에 해당 버킷의 !Ref를 사용하고 정책의 리소스 ARN과 허용 주체도 확인하세요. 정책 내용은 필요한 접근만 허용해야 합니다.

예시

없는 버킷을 참조하는 설정과 올바른 연결을 비교합니다. BucketReaderRole은 별도로 정의한 승인된 역할이며, 버킷 이름은 실제 환경에 맞춰 바꿔야 합니다.

변경 전

yaml
Resources:
  S3Bucket3:
    Type: 'AWS::S3::Bucket'
    Properties:
      BucketName: docexamplebucket1

  SampleBucketPolicy5:
    Type: 'AWS::S3::BucketPolicy'
    Properties:
      Bucket:
        Ref: docexamplebucketfail
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Action:
              - 's3:GetObject'
            Effect: Allow
            Resource: !Sub '${S3Bucket3.Arn}/*'
            Principal:
              AWS: !GetAtt BucketReaderRole.Arn

변경 후

yaml
Resources:
  S3Bucket:
    Type: 'AWS::S3::Bucket'
    Properties:
      BucketName: docexamplebucket

  SampleBucketPolicy:
    Type: AWS::S3::BucketPolicy
    Properties:
      Bucket: !Ref S3Bucket
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Action:
              - 's3:GetObject'
            Effect: Allow
            Resource: !Sub '${S3Bucket.Arn}/*'
            Principal:
              AWS: !GetAtt BucketReaderRole.Arn

참조