

# 디렉터리 버킷 정책 관리
<a name="directory-bucket-bucket-policy"></a>

Amazon S3 콘솔, AWS SDK, AWS CLI를 사용하여 Amazon S3 디렉터리 버킷에 대한 버킷 정책을 추가, 삭제, 업데이트 및 조회할 수 있습니다. 자세한 내용은 다음 항목을 참조하세요. 지원되는 AWS Identity and Access Management(IAM) 작업에 대한 자세한 내용은 [IAM을 사용한 리전 엔드포인트 API 권한 부여](s3-express-security-iam.md) 섹션을 참조하세요. 디렉터리 버킷에 대한 버킷 정책의 예는 [디렉터리 버킷에 대한 버킷 정책 예제](s3-express-security-iam-example-bucket-policies.md) 섹션을 참조하세요.

**Topics**
+ [버킷 정책 추가](#directory-bucket-bucket-policy-add)
+ [버킷 정책 보기](#directory-bucket-bucket-policy-view)
+ [버킷 정책 삭제](#directory-bucket-bucket-policy-delete)

## 버킷 정책 추가
<a name="directory-bucket-bucket-policy-add"></a>

Amazon S3 콘솔, AWS SDK 또는 AWS CLI를 사용하여 디렉터리 버킷에 버킷 정책을 추가할 수 있습니다.

### S3 콘솔 사용
<a name="directory-bucket-bucket-policy-add-console"></a>

**버킷 정책 생성 또는 편집**

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

1. 왼쪽 탐색 창에서 **디렉터리 버킷**을 선택합니다.

1. **디렉터리 버킷** 목록에서 정책을 추가할 버킷의 이름을 선택합니다.

1. **권한** 탭을 선택합니다.

1. **버킷 정책**에서 **편집**을 선택합니다. **버킷 정책 편집** 페이지가 나타납니다.

1. 정책을 자동으로 생성하려면 **정책 생성기**를 선택합니다.

   **정책 생성기**를 선택하면 AWS 정책 생성기가 새 창에서 열립니다.

   AWS 정책 생성기를 사용하지 않으려면 **정책** 섹션에서 JSON 문을 추가하거나 편집할 수 있습니다.

   1. **AWS 정책 생성기** 페이지의 **Select Type of Policy**(정책 유형 선택)에 **S3 Bucket Policy**(S3 버킷 정책)를 선택합니다.

   1. 제공된 필드에 정보를 입력하여 명령문을 추가한 다음 **명령문 추가(Add Statement)**를 선택합니다. 문을 추가하려는 만큼 이 단계를 반복합니다. 이러한 필드에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM JSON 정책 요소 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)를 참조하십시오.
**참고**  
편의를 위해 **버킷 정책 편집** 페이지의 **정책** 텍스트 필드 위에 현재 버킷의 **버킷 ARN**(Amazon 리소스 이름)이 표시됩니다. **AWS 정책 생성기** 페이지의 명령문에 사용하기 위해 이 ARN을 복사할 수 있습니다.

   1. 명령문 추가를 마친 후 **정책 생성(Generate Policy)**을 선택합니다.

   1. 생성된 정책 텍스트를 복사하고 **닫기(Close)**를 선택하고 Amazon S3 콘솔의 **버킷 정책 편집(Edit bucket policy)** 페이지로 돌아갑니다.

1. **정책** 상자에서 기존 정책을 편집하거나 AWS 정책 생성기에서 버킷 정책을 붙여 넣습니다. 정책을 저장하기 전에 보안 경고, 오류, 일반 경고 및 제안 사항을 해결해야 합니다.
**참고**  
버킷 정책은 크기가 20KB로 제한됩니다.

1. **변경 사항 저장**을 선택하면 **권한** 탭으로 돌아갑니다.

### AWS SDK 사용
<a name="directory-bucket-bucket-policy-add-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  
`PutBucketPolicy` AWS SDK for Java 2.x   

```
public static void setBucketPolicy(S3Client s3Client, String bucketName, String policyText) {
     
       //sample policy text
       /**
        * policy_statement = {
         *         'Version': '2012-10-17',
         *         'Statement': [
         *             {
         *                 'Sid': 'AdminPolicy',
         *                 'Effect': 'Allow',
         *                 'Principal': {
         *                     "AWS": "111122223333"
         *                 },
         *                 'Action': 's3express:*',
         *                 'Resource': 'arn:aws:s3express:region:111122223333:bucket/bucket-base-name--zone-id--x-s3'
         *             }
         *         ]
         *     }
         */
         System.out.println("Setting policy:");
         System.out.println("----");
         System.out.println(policyText);
         System.out.println("----");
         System.out.format("On Amazon S3 bucket: \"%s\"\n", bucketName);
         
         try {
             PutBucketPolicyRequest policyReq = PutBucketPolicyRequest.builder()
                     .bucket(bucketName)
                     .policy(policyText)
                     .build();
             s3Client.putBucketPolicy(policyReq);
             System.out.println("Done!");
         }    
         
         catch (S3Exception e) {
             System.err.println(e.awsErrorDetails().errorMessage());
             System.exit(1);
         }
    }
```

------

### AWS CLI 사용
<a name="directory-bucket-delete-cli"></a>

이 예시는 AWS CLI를 사용하여 디렉터리 버킷에 버킷 정책을 추가하는 방법을 보여 줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3api put-bucket-policy --bucket bucket-base-name--zone-id--x-s3 --policy file://bucket_policy.json
```

bucket\$1policy.json:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AdminPolicy",
            "Effect": "Allow",
            "Principal": {
                "AWS": "111122223333"
            },
            "Action": "s3express*",
            "Resource": "arn:aws:s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3"
        }
    ]
}
```

------

자세한 내용은 AWS Command Line Interface의 [put-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-policy.html)를 참조하세요.

## 버킷 정책 보기
<a name="directory-bucket-bucket-policy-view"></a>

다음 예시를 사용하여 디렉터리 버킷의 버킷 정책을 확인합니다.

### AWS CLI 사용
<a name="directory-bucket-bucket-policy-view-cli"></a>

이 예시는 AWS CLI를 사용하여 디렉터리 버킷에 연결된 버킷 정책을 확인하는 방법을 보여 줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3api get-bucket-policy --bucket bucket-base-name--zone-id--x-s3
```

자세한 내용은 AWS Command Line Interface의 [get-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-policy.html)를 참조하세요.

## 버킷 정책 삭제
<a name="directory-bucket-bucket-policy-delete"></a>

다음 예시를 사용하여 디렉터리 버킷의 버킷 정책을 삭제합니다.

### AWS SDK 사용
<a name="directory-bucket-bucket-policy-delete-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  
`DeleteBucketPolicy` AWS SDK for Java 2.x   

```
public static void deleteBucketPolicy(S3Client s3Client, String bucketName) {
      try {
          DeleteBucketPolicyRequest deleteBucketPolicyRequest = DeleteBucketPolicyRequest
                  .builder()
                  .bucket(bucketName)
                  .build()
          s3Client.deleteBucketPolicy(deleteBucketPolicyRequest);
          System.out.println("Successfully deleted bucket policy");
      }
      
      catch (S3Exception e) {
          System.err.println(e.awsErrorDetails().errorMessage());
          System.exit(1);
      }
```

------

### AWS CLI 사용
<a name="directory-bucket-delete-cli"></a>

이 예시는 AWS CLI를 사용하여 디렉터리 버킷의 버킷 정책을 삭제하는 방법을 보여 줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3api delete-bucket-policy --bucket bucket-base-name--zone-id--x-s3
```

자세한 내용은 AWS Command Line Interface의 [delete-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket-policy.html)를 참조하세요.