모든 새 버킷에 대해 ACL 사용 중지 및 객체 소유권 시행 - Amazon Simple Storage Service

모든 새 버킷에 대해 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로 설정된 경우에만 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" } } } ] }

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

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 리소스에 대한 액세스 관리 단원을 참조하십시오.