

# 모든 새 버킷에 대해 ACL 사용 중지 및 객체 소유권 시행
<a name="ensure-object-ownership"></a>

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을 보내도록 클라이언트도 업데이트해야 합니다.

**Topics**
+ [모든 새 버킷에 대해 ACL 사용 중지(버킷 소유자 시행)](#object-ownership-requiring-bucket-owner-enforced)
+ [Amazon S3 `PUT` 작업에 bucket-owner-full-control 미리 제공된 ACL 요구(버킷 소유자 기본)](#ensure-object-ownership-bucket-policy)

## 모든 새 버킷에 대해 ACL 사용 중지(버킷 소유자 시행)
<a name="object-ownership-requiring-bucket-owner-enforced"></a>

다음 예시 IAM 정책은 객체 소유권에 대해 버킷 소유자 적용 설정이 적용되지 않는 한 특정 IAM 사용자 또는 역할에 대해 `s3:CreateBucket` 권한을 거부합니다. `Condition` 블록의 키-값 페어는 `s3:x-amz-object-ownership`을 키로 지정하고 `BucketOwnerEnforced` 설정을 값으로 지정합니다. 즉, IAM 사용자는 객체 소유권에 대해 버킷 소유자 적용 설정을 지정하고 ACL을 비활성화하는 경우에만 버킷을 생성할 수 있습니다. 이 정책을 AWS 조직의 경계 SCP로 사용할 수도 있습니다.

------
#### [ JSON ]

****  

```
{
    "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 요구(버킷 소유자 기본)
<a name="ensure-object-ownership-bucket-policy"></a>

객체 소유권에 대해 버킷 소유자 기본 설정을 사용하면 버킷 소유자는 다른 계정이 `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`*을 버킷의 이름으로 바꿔야 합니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "OnlyAllowWritesToMyBucketWithBucketOwnerFullControl",
         "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 리소스에 대한 액세스를 관리하는 연습](example-walkthroughs-managing-access.md) 단원을 참조하십시오.