S3 객체 읽기 정책에 사용된 와일드카드 주체

모든 주체에 S3 Get 계열 작업을 허용하면 작업, 리소스 범위와 실제 접근 제어에 따라 객체 내용이나 설정 정보가 노출될 수 있습니다.

설명

버킷 정책에서 Principal: "*"에 Get 계열 작업을 허용하면 익명 사용자를 포함한 불특정 주체가 정보를 읽을 수 있습니다. 실제 접근 범위는 작업과 리소스, 정책 조건, 명시적 거부와 Block Public Access 설정에 따라 달라집니다.

잠재적 영향

s3:GetObject는 객체 내용을 읽는 권한입니다. 다른 Get 계열 작업은 버킷이나 객체의 설정을 반환할 수 있으므로 노출되는 정보는 허용한 작업에 따라 구분해야 합니다.

해결 방법

필요한 읽기 작업과 리소스 ARN만 허용하고, Principal을 신뢰할 수 있는 역할 등으로 제한하세요. 공개 접근이 필요하지 않으면 Block Public Access도 활성화하세요.

예시

예제는 객체 읽기 권한을 특정 역할로 제한하는 정책 변경을 보여 줍니다. 버킷 이름과 역할 ARN은 실제 환경의 값으로 바꾸세요. 공개 정책 적용 여부에는 Block Public Access 설정도 영향을 줍니다.

변경 전

yaml
- name: Bucket
  amazon.aws.s3_bucket:
    name: mys3bucket
    state: present
    policy:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Action: s3:GetObject
          Resource: "arn:aws:s3:::mys3bucket/*"
          Principal: "*"

변경 후

yaml
- name: Bucket
  amazon.aws.s3_bucket:
    name: mys3bucket
    state: present
    policy:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Action: s3:GetObject
          Resource: "arn:aws:s3:::mys3bucket/*"
          Principal:
            AWS: "arn:aws:iam::123456789012:role/S3Reader"

참조