S3 객체 소유권을 사용하여 업로드된 객체의 소유권 제어 - Amazon Simple Storage Service

S3 객체 소유권을 사용하여 업로드된 객체의 소유권 제어

S3 객체 소유권은 버킷에 업로드되는 새 객체의 소유권을 제어하는 데 사용할 수 있는 Amazon S3 버킷 설정입니다. 기본적으로 다른 AWS 계정이 버킷에 객체를 업로드하면 객체는 업로드한 계정의 소유로 유지됩니다. S3 객체 소유권을 사용하면 bucket-owner-full-control 미리 준비된 ACL(액세스 제어 목록)을 포함하여 다른 계정에서 작성한 새 객체를 버킷 소유자가 자동으로 소유하게 되며, 그러면 버킷 소유자는 객체에 대한 모든 권한을 갖게 됩니다.

서로 다른 계정의 여러 사용자와 팀이 버킷에 쓰기 및 버킷에서 읽기를 수행할 수 있는 공유 데이터 스토어를 만들고 버킷의 새 객체 소유권을 표준화할 수 있습니다. 버킷 소유자는 버킷 정책과 같은 리소스 기반 정책을 통해 이러한 객체에 대한 액세스를 공유하고 관리할 수 있습니다. S3 객체 소유권은 기존 객체에 영향을 주지 않습니다.

S3 객체 소유권에는 두 가지 설정이 있습니다.

  • 객체 작성자(Object writer) – 업로드한 계정이 객체를 소유합니다.

  • 버킷 소유자로 기본 설정(Bucket owner preferred) – 객체가 표준 ACL bucket-owner-full-control을 포함하여 업로드되는 경우 버킷 소유자가 객체를 소유하게 됩니다. 이 설정 및 표준 ACL이 없으면 객체가 업로드된 후 업로드한 계정의 소유로 유지됩니다. 객체 소유권 적용에 대한 자세한 내용은 새 객체의 소유권을 얻으려면 어떻게 해야 합니까? 단원을 참조하세요.

S3 객체 소유권 설정

이 단원에서는 S3 객체 소유권을 활성화하는 방법에 대한 예를 제공합니다. 코드를 작성하지 않고도 권한을 관리하는 UI를 제공하는 AWS Management Console을 사용할 수 있습니다.

S3 객체 소유권을 AWS Management Console에서 선호하는 버킷 소유자로 설정

S3 객체 소유권을 사용하면 bucket-owner-full-control 정식 ACL(액세스 제어 목록)을 포함하여 다른 AWS 계정이 버킷에 업로드하는 새 객체의 소유권을 얻을 수 있습니다. 이 단원에서는 콘솔을 사용하여 객체 소유권을 설정하는 방법을 설명합니다.

S3 버킷에서 선호하는 버킷 소유자로 객체 소유권 설정

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷 목록에서 S3 객체 소유권을 활성화할 버킷의 이름을 선택합니다.

  3. [Permissions] 탭을 선택합니다.

  4. 객체 소유권에서 편집을 선택합니다.

  5. 버킷 소유자로 기본 설정(Bucket owner preferred)을 선택한 다음 저장(Save)을 선택합니다.

위의 단계를 수행하면 bucket-owner-full-control 표준 ACL을 포함해 다른 계정에서 작성한 모든 새 객체의 소유권을 얻게 됩니다. 객체 소유권 적용에 대한 자세한 내용은 새 객체의 소유권을 얻으려면 어떻게 해야 합니까? 섹션을 참조하세요.

새 객체의 소유권을 얻으려면 어떻게 해야 합니까?

S3 객체 소유권을 기본 버킷 소유자로 설정했으면 버킷 정책을 추가하여 모든 Amazon S3 PUT 작업에 bucket-owner-full-control 미리 준비된 ACL을 포함하도록 할 수 있습니다. 이 ACL은 버킷 소유자에게 새 객체에 대한 모든 권한을 부여합니다. S3 객체 소유권 설정을 사용하면 객체 소유권을 버킷 소유자에게 이전합니다. 업로드하는 사용자가 업로드 시 ACL 요구 사항을 충족하지 못하면 요청이 실패합니다. 이를 통해 버킷 소유자는 버킷의 새로 업로드된 모든 객체에 대해 일관된 객체 소유권을 적용할 수 있습니다.

다음 버킷 정책은 객체의 ACL이 111122223333로 설정된 경우에만 DOC-EXAMPLE-BUCKET 계정이 bucket-owner-full-control에 객체를 업로드할 수 있도록 지정합니다. 111122223333을(를) 실제 계정으로 대체하고 DOC-EXAMPLE-BUCKET을(를) 실제 버킷의 이름으로 대체해야 합니다.

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

다음은 bucket-owner-full-control(AWS Command Line Interface)를 사용하여 표준 ACL AWS CLI을 포함하는 복사 작업을 수행하는 예입니다.

aws s3 cp file.txt s3://DOC-EXAMPLE-BUCKET --acl bucket-owner-full-control

클라이언트에 bucket-owner-full-control 미리 준비된 ACL이 포함되어 있지 않으면 작업이 실패하고 업로드하는 사용자에게 다음 오류가 표시됩니다.

An error occurred (AccessDenied) when calling the PutObject operation: Access Denied(PutObject 작업을 호출할 때 오류(AccessDenied) 발생: 액세스 거부됨).

참고

업로드 후 클라이언트에서 객체에 액세스해야 하는 경우 업로드하는 계정에 추가 권한을 부여해야 합니다. 계정에 리소스에 대한 액세스 권한을 부여하는 방법은 예제 안내: Amazon S3 리소스에 대한 액세스 관리 단원을 참조하세요.

Amazon S3 복제와 함께 S3 객체 소유권 사용

S3 객체 소유권은 Amazon S3 복제의 동작을 변경하지 않습니다. 복제에서는 기본적으로 소스 객체 소유자가 복제본도 소유합니다. 소스 버킷과 대상 버킷을 서로 다른 AWS 계정이 소유한 경우 복제본 소유권을 변경하는 선택적 구성 설정을 추가할 수 있습니다.

복제된 객체의 소유권을 대상 버킷 소유자에게 이전하려면 Amazon S3 복제 소유자 재정의 옵션을 사용할 수 있습니다. 복제본의 소유권 전송에 대한 자세한 내용은 복제본 소유자 변경 단원을 참조하세요.