버킷 정책 또는 객체 ACL을 사용하여 Amazon S3 객체에 퍼블릭 읽기 액세스 권한을 부여할 때 발생하는 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

버킷 정책 또는 객체 액세스 제어 목록(ACL)을 사용하여 Amazon Simple Storage Service(Amazon S3) 버킷의 객체에 대한 퍼블릭 읽기 액세스 권한을 부여하려고 합니다. 그런데 권한 부족 또는 액세스 거부 오류가 발생합니다.

간략한 설명

다음 버킷 정책을 사용하여 버킷의 객체에 퍼블릭 읽기 액세스 권한을 부여한다고 가정해 보겠습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::example-bucket/*"
            ]
        }
    ]
}

다음과 같은 이유로 권한 부족 또는 액세스 거부 오류가 발생할 수 있습니다.

  • Amazon S3 버킷의 버킷 정책을 업데이트하거나 만들 수 있는 s3:PutBucketPolicy 권한이 없음
  • 객체의 ACL을 수정할 수 있는 s3:PutObjectAcl 권한이 없음
  • S3 버킷 정책 또는 객체의 ACL이 S3 퍼블릭 액세스 차단 설정과 충돌함

해결 방법

필요한 권한 부여

사용하는 AWS ID 및 액세스 관리(IAM) 사용자 또는 역할에 다음 권한이 있는지 확인합니다.

  • S3 버킷에 대한 버킷 정책을 만들거나 업데이트할 수 있는 s3:PutBucketPolicy
  • 퍼블릭 읽기 액세스 권한을 부여하기 위해 객체의 ACL을 업데이트할 s3:PutObjectAcl

퍼블릭 액세스 차단 설정 업데이트

기본적으로 모든 Amazon S3 리소스(예: 버킷, 객체, 관련 하위 리소스)는 비공개이며 퍼블릭 액세스를 허용하지 않습니다. 액세스 포인트, 버킷 및 계정에 대한 퍼블릭 액세스 차단 설정은 Amazon S3 리소스에 대한 퍼블릭 액세스를 관리하는 데 도움이 됩니다. 이러한 설정은 S3 버킷 정책 및 객체 ACL을 재정의하므로 해당 리소스에 대한 퍼블릭 액세스를 제한할 수 있습니다. 구성한 버킷 정책 또는 객체 ACL이 퍼블릭 액세스 차단 설정과 충돌하는 경우에는 퍼블릭 읽기 액세스 권한을 부여하는 버킷 정책을 만들 수 없습니다. 또한 S3는 퍼블릭 읽기 액세스 권한을 부여하기 위해 버킷 정책 또는 객체 ACL을 수정할 수 있는 권한을 거부합니다.

Amazon S3 퍼블릭 액세스 차단은 버킷과 객체에 대한 퍼블릭 액세스를 차단하는 네 가지 설정을 제공합니다. 이러한 설정은 독립적이며 어떤 조합으로도 사용할 수 있습니다.

  • BlockPublicAcls - 새 ACL을 사용하여 부여된 퍼블릭 액세스 차단: Amazon S3는 새로 추가된 버킷 또는 객체에 적용하는 퍼블릭 액세스 권한을 차단합니다. 또한 S3는 기존 버킷 및 객체에 대한 새로운 퍼블릭 액세스 ACL 생성을 거부합니다. 이 설정은 ACL을 사용하는 S3 리소스에 대한 퍼블릭 액세스를 허용하는 기존 권한을 변경하지 않습니다.
  • **IgnorePublicAcls - ACL을 사용하여 부여된 퍼블릭 액세스 차단:**Amazon S3는 버킷과 객체에 대한 퍼블릭 액세스 권한을 부여하는 모든 ACL을 무시합니다.
  • **BlockPublicolicy - 새 퍼블릭 버킷 또는 액세스 포인트 정책을 사용하여 부여된 퍼블릭 액세스 권한 차단:**Amazon S3는 버킷과 객체에 대한 퍼블릭 액세스를 허용하는 액세스 포인트 정책과 새 버킷의 사용을 차단합니다. 이 설정은 S3 리소스에 대한 퍼블릭 액세스를 허용하는 기존 정책을 변경하지 않습니다.
  • **RestrictPublicBukets - 퍼블릭 버킷 또는 액세스 포인트 정책을 사용하여 부여된 퍼블릭 및 크로스 계정 액세스 권한 차단:**Amazon S3는 버킷과 객체에 대한 퍼블릭 액세스를 부여하는 정책을 통해 버킷 또는 액세스 포인트에 대한 퍼블릭 및 크로스 계정 액세스를 무시합니다.

자세한 내용은 Amazon S3 퍼블릭 액세스 차단 - 계정 및 버킷을 위한 또 다른 보호 계층을 참조하세요.

사용 사례에 따라 S3 퍼블릭 액세스 차단 설정을 업데이트해야 합니다.

참고:

  • ACL을 사용하여 객체에 퍼블릭 읽기 액세스 권한을 부여하려면 다음과 같은 퍼블릭 액세스 차단 설정을 끄세요.
  • S3 버킷 정책을 사용하여 객체에 퍼블릭 읽기 액세스 권한을 부여하는 경우 다음과 같은 퍼블릭 액세스 차단 설정을 해제합니다.
  • 버킷 ACL 또는 객체 ACL을 사용하여 S3 객체 소유권버킷 소유자 적용으로 설정된 버킷에 대한 퍼블릭 읽기 액세스 권한을 부여할 수는 없습니다. 이 경우 정책을 사용하여 버킷과 버킷의 객체에 대한 액세스 권한을 부여해야 합니다. ACL 설정 또는 업데이트 요청이 실패하고 AccessControlListNotSupported 오류 메시지가 표시됩니다. ACL 읽기 요청은 계속 지원됩니다.

계정의 모든 S3 버킷에 대해 퍼블릭 액세스 차단 설정을 켜면 버킷 및 객체가 퍼블릭이 아님메시지가 표시됩니다. 자세한 내용은 계정의 퍼블릭 액세스 차단 설정 구성을 참조하세요.

중요: 객체에 퍼블릭 읽기 액세스 권한을 부여하면 인터넷에 있는 어떤 사용자든 이러한 객체에 액세스할 수 있습니다. 이를 원하는 것이 아니라면 S3 버킷에 공개적으로 액세스할 수 없는지 확인하세요. 자세한 내용은 Amazon S3 보안 모범 사례를 참조하세요.

관련 정보

내 Amazon S3 버킷의 일부 객체에 퍼블릭 읽기 액세스 권한을 부여하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 일 년 전