모든 새 버킷에 대해 ACL 사용 중지 및 객체 소유권 시행
Amazon S3 버킷에서 ACL을 사용 중지하는 것이 좋습니다. S3 객체 소유권에 대해 버킷 소유자 적용 설정을 적용하여 이 작업을 수행할 수 있습니다. 이 설정을 적용하면 ACL이 사용 중지되고 버킷의 모든 객체를 자동으로 소유하고 완전히 제어할 수 있습니다. 모든 새 버킷이 ACL을 비활성화한 상태로 생성되도록 하려면 다음 섹션에 설명된 대로 AWS Identity and Access Management(IAM) 정책 또는 AWS Organizations 서비스 제어 정책(SCP)을 사용하십시오.
ACL을 사용 중지하지 않고 새 객체에 대해 객체 소유권을 시행하려면 버킷 소유자 기본 설정을 적용합니다. 이 설정을 적용할 때 버킷에 대한 모든 PUT
요청에 bucket-owner-full-control
미리 제공된 ACL을 요구하도록 버킷 정책을 업데이트하는 것이 좋습니다. 다른 계정에서 버킷으로 bucket-owner-full-control
미리 제공된 ACL을 보내도록 클라이언트도 업데이트해야 합니다.
주제
모든 새 버킷에 대해 ACL 사용 중지(버킷 소유자 시행)
다음 예시 IAM 정책은 객체 소유권에 대해 버킷 소유자 적용 설정이 적용되지 않는 한 특정 IAM 사용자 또는 역할에 대해 s3:CreateBucket
권한을 거부합니다. Condition
블록의 키-값 페어는 s3:x-amz-object-ownership
을 키로 지정하고 BucketOwnerEnforced
설정을 값으로 지정합니다. 즉, IAM 사용자는 객체 소유권에 대해 버킷 소유자 적용 설정을 지정하고 ACL을 비활성화하는 경우에만 버킷을 생성할 수 있습니다. 이 정책을 AWS 조직의 경계 SCP로 사용할 수도 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireBucketOwnerFullControl", "Action": "s3:CreateBucket", "Effect": "Deny", "Resource": "*", "Condition": { "StringNotEquals": { "s3:x-amz-object-ownership": "BucketOwnerEnforced" } } } ] }
Amazon S3 PUT
작업에 bucket-owner-full-control 미리 제공된 ACL 요구(버킷 소유자 기본)
객체 소유권에 대해 버킷 소유자 기본 설정을 사용하면 버킷 소유자는 다른 계정이 bucket-owner-full-control
미리 제공된 ACL을 사용하여 버킷에 작성하는 새 객체를 소유하고 완전히 제어할 수 있습니다. 그러나 다른 계정이 bucket-owner-full-control
미리 제공 ACL 없이 버킷에 객체를 작성하는 경우 객체 작성자는 모든 제어 액세스 권한을 유지합니다. 버킷 소유자는 bucket-owner-full-control
미리 제공 ACL을 지정하는 경우에만 쓰기를 허용하는 버킷 정책을 구현할 수 있습니다.
참고
버킷 소유자 적용 설정으로 ACL을 비활성화한 경우 버킷 소유자는 버킷의 모든 객체를 자동으로 소유하고 완전히 제어할 수 있습니다. 버킷 소유자에 대해 객체 소유권을 시행하기 위해 이 섹션을 사용하여 버킷 정책을 업데이트할 필요가 없습니다.
다음 버킷 정책은 객체의 ACL이 111122223333
로 설정된 경우에만
계정이 amzn-s3-demo-bucket
에 객체를 업로드할 수 있도록 지정합니다. bucket-owner-full-control
을 계정으로 바꾸고 111122223333
을 버킷의 이름으로 바꿔야 합니다.amzn-s3-demo-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:::amzn-s3-demo-bucket
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
다음은 AWS Command Line Interface(AWS CLI)를 사용하여 미리 제공된 ACL bucket-owner-full-control
을 포함하는 복사 작업을 수행하는 예입니다.
aws s3 cp
file.txt
s3://amzn-s3-demo-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 리소스에 대한 액세스를 관리하는 연습 단원을 참조하십시오.