디렉터리 버킷 정책 관리

디렉터리 버킷 정책 관리 (Managing directory bucket policies)

Amazon S3 콘솔, AWS SDK, AWS CLI로 Amazon S3 디렉터리 버킷의 버킷 정책을 추가·삭제·업데이트·조회할 수 있어요. 자세한 내용은 다음 항목을 참고해요. 지원되는 AWS Identity and Access Management(IAM) 작업에 대한 자세한 내용은 "리전 엔드포인트 API 연산을 IAM으로 인가하기"를 참고해요. 디렉터리 버킷의 예제 버킷 정책은 "디렉터리 버킷 예제 버킷 정책"을 참고해요.

출처: 문서

본문

  • 버킷 정책 추가
  • 버킷 정책 보기
  • 버킷 정책 삭제

버킷 정책 추가 (Adding a bucket policy)

디렉터리 버킷에 버킷 정책을 추가하려면 Amazon S3 콘솔, AWS SDK 또는 AWS CLI를 사용할 수 있어요.

버킷 정책을 만들거나 편집하려면

  1. AWS Management Console에 로그인하고 Amazon S3 콘솔(https://console.aws.amazon.com/s3/)을 열어요.
  2. 왼쪽 탐색 창에서 Directory buckets(디렉터리 버킷)을 선택해요.
  3. Directory buckets 목록에서 정책을 추가할 버킷의 이름을 선택해요.
  4. Permissions(권한) 탭을 선택해요.
  5. Bucket policy(버킷 정책) 아래에서 Edit(편집)을 선택해요. Edit bucket policy 페이지가 나타나요.
  6. 정책을 자동으로 생성하려면 Policy generator(정책 생성기)를 선택해요. Policy generator를 선택하면 AWS Policy Generator가 새 창에서 열려요. AWS Policy Generator를 사용하고 싶지 않다면 Policy 섹션에서 JSON 문을 추가하거나 편집할 수 있어요. AWS Policy Generator 페이지에서 Select Type of Policy(정책 유형 선택)에 S3 Bucket Policy를 선택해요. 제공된 필드에 정보를 입력해 문을 추가한 다음 Add Statement(문 추가)를 선택해요. 추가할 문의 수만큼 이 단계를 반복해요. 이 필드에 대한 자세한 내용은 IAM User Guide의 "IAM JSON 정책 요소 참조"를 참고해요.

    참고: 편의를 위해 Edit bucket policy 페이지는 Policy 텍스트 필드 위에 현재 버킷의 Bucket ARN(Amazon Resource Name)을 표시해요. 이 ARN을 복사해 AWS Policy Generator 페이지의 문에서 사용할 수 있어요. 문 추가를 마친 뒤 Generate Policy(정책 생성)를 선택해요. 생성된 정책 텍스트를 복사하고 Close(닫기)를 선택한 뒤 Amazon S3 콘솔의 Edit bucket policy 페이지로 돌아가요.

  7. Policy 상자에서 기존 정책을 편집하거나 AWS Policy Generator의 버킷 정책을 붙여 넣어요. 정책을 저장하기 전에 보안 경고, 오류, 일반 경고, 제안을 해결해야 해요.

    참고: 버킷 정책은 20KB로 제한돼요.

  8. Save changes(변경 사항 저장)를 선택하면 Permissions 탭으로 돌아가요.

SDK for Java 2.x

이 예제는 AWS SDK for Java 2.x로 버킷 정책을 설정하는 방법(PutBucketPolicy)을 보여 줘요.

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로 디렉터리 버킷에 버킷 정책을 추가하는 방법을 보여 줘요. 이 명령을 사용하려면 사용자 입력 자리 표시자를 자신의 정보로 바꿔요.

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

bucket_policy.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를 참고해요.

버킷 정책 보기 (Viewing a bucket policy)

디렉터리 버킷의 버킷 정책을 보려면 다음 예제를 사용해요.

이 예제는 AWS CLI로 디렉터리 버킷에 연결된 버킷 정책을 보는 방법을 보여 줘요. 이 명령을 사용하려면 사용자 입력 자리 표시자를 자신의 정보로 바꿔요.

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

자세한 내용은 AWS Command Line Interface의 get-bucket-policy를 참고해요.

버킷 정책 삭제 (Deleting a bucket policy)

디렉터리 버킷의 버킷 정책을 삭제하려면 다음 예제를 사용해요.

SDK for Java 2.x

이 예제는 AWS SDK for Java 2.x로 버킷 정책을 삭제하는 방법(DeleteBucketPolicy)을 보여 줘요.

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로 디렉터리 버킷의 버킷 정책을 삭제하는 방법을 보여 줘요. 이 명령을 사용하려면 사용자 입력 자리 표시자를 자신의 정보로 바꿔요.

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

자세한 내용은 AWS Command Line Interface의 delete-bucket-policy를 참고해요.

더 알아보기 (Learn more)