다른 AWS 계정이 내 Amazon S3 버킷에 객체를 업로드할 때 객체에 대한 전체 제어 권한을 내게 부여하도록 요구하려면 어떻게 해야 하나요?

2분 분량
0

다른 AWS 계정의 사용자가 내 Amazon Simple Storage Service(S3) 버킷에 객체를 업로드할 수 있도록 허용하려고 합니다. 하지만 사용자가 해당 객체에 대한 전체 제어 권한을 내게 부여하도록 요구하고 싶습니다.

해결 방법

사용자가 버킷에 객체를 업로드할 경우, bucket-owner-full-control 액세스 제어 목록(ACL)을 포함하도록 요구하는 버킷 정책을 추가합니다.

예를 들어, 이 버킷 정책은 객체의 ACL이 bucket-owner-full-control로 설정된 경우에만 ExampleUserDOC-EXAMPLE-BUCKET에 객체를 업로드할 수 있도록 지정합니다.

{
  "Id": "Policy1541018284691",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1541018283275",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control"
        }
      },
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/ExampleUser"
        ]
      }
    }
  ]
}

이 버킷 정책을 추가한 후 사용자는 다음 예와 같이 업로드 요청의 일환으로 필수 ACL을 포함해야 합니다.

aws s3 cp example.jpg s3://DOC-EXAMPLE-BUCKET --acl bucket-owner-full-control

사용자가 업로드 요청의 ACL 요구 사항을 충족하지 못하면 다음과 같은 오류 메시지가 표시됩니다.

"An error occurred (AccessDenied) when calling the PutObject operation: Access Denied"

다른 계정이 소유한 버킷 내 객체의 경우 객체 소유자가 put-object-acl 명령을 실행하여 사용자에게 객체에 대한 제어권을 부여할 수 있습니다.

aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key example.jpg --acl bucket-owner-full-control

bucket-owner-full-control ACL은 버킷 소유자에게 다른 계정이 업로드한 객체에 대한 전체 액세스 권한을 부여합니다. 하지만 이 ACL만으로 객체의 소유권이 부여되는 것은 아닙니다. bucket-owner-full-control ACL을 사용하여 업로드하는 객체의 소유권을 자동으로 가져오려면 S3 객체 소유권을 버킷 소유자 선호로 설정하세요. S3 객체 소유권을 업데이트하면 버킷 소유자가 bucket-owner-full-control로 업로드되는 모든 새 객체를 자동으로 소유합니다.

관련 정보

다른 AWS 계정에서 Amazon S3 버킷에 업로드한 객체에 액세스할 수 없는 이유는 무엇인가요?

미리 준비된 ACL을 사용한 버킷 관리

IAM 자습서: IAM 역할을 사용하여 AWS 계정 전체에 대한 액세스 위임

ACL 권한 및 액세스 정책 권한 매핑

AWS 공식
AWS 공식업데이트됨 6달 전
댓글 없음

관련 콘텐츠