버킷 정책을 사용한 Amazon S3 버킷 액세스 관리 - AWS SDK for Java 1.x

곧 출시될 end-of-support AWS SDK for Java (v1) 버전을 발표했습니다. AWS SDK for Java V2로 마이그레이션하실 것을 권장합니다. 마이그레이션 날짜, 추가 세부 정보 및 방법에 대한 자세한 내용은 링크된 공지 사항을 참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

버킷 정책을 사용한 Amazon S3 버킷 액세스 관리

버킷 정책을 설정하거나 가져오거나 삭제하여 Amazon S3 버킷에 대한 액세스를 관리할 수 있습니다.

버킷 정책 설정

다음과 같은 방법으로 특정 S3 버킷에 대한 버킷 정책을 설정할 수 있습니다.

  • AmazonS3 클라이언트의 setBucketPolicy를 호출하고 이 메서드에 SetBucketPolicyRequest 지정

  • 버킷 이름과 정책 텍스트(JSON 형식)를 사용하는 setBucketPolicy 오버로드를 사용하여 정책을 직접 설정

가져오기

import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.policy.Policy; import com.amazonaws.auth.policy.Principal;

코드

s3.setBucketPolicy(bucket_name, policy_text); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Policy 클래스를 사용하여 정책 생성 또는 검사

setBucketPolicy에 버킷 정책을 제공하려는 경우 다음을 수행합니다.

  • 정책을 JSON 형식 텍스트 문자열로 직접 지정

  • Policy 클래스를 사용하여 정책 빌드

Policy 클래스를 사용하면 텍스트 문자열에 대한 올바른 형식 지정에 대해 걱정할 필요가 없습니다. Policy 클래스에서 JSON 정책 텍스트를 가져오려면 toJson 메서드를 사용합니다.

가져오기

import com.amazonaws.auth.policy.Resource; import com.amazonaws.auth.policy.Statement; import com.amazonaws.auth.policy.actions.S3Actions; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;

코드

new Statement(Statement.Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new Resource( "{region-arn}s3:::" + bucket_name + "/*"))); return bucket_policy.toJson();

Policy 클래스는 전달된 JSON 문자열을 사용하여 정책을 빌드할 수 있는 fromJson 메서드도 제공합니다. 이 메서드는 해당 텍스트를 유효한 정책 구조로 변환할 수 있는지 검사하며, 정책 텍스트가 유효하지 않은 경우 실패하고 IllegalArgumentException가 발생합니다.

Policy bucket_policy = null; try { bucket_policy = Policy.fromJson(file_text.toString()); } catch (IllegalArgumentException e) { System.out.format("Invalid policy text in file: \"%s\"", policy_file); System.out.println(e.getMessage()); }

이 기술을 사용하여 파일이나 기타 수단에서 읽어온 정책을 사전 검사할 수 있습니다.

GitHub의 전체 예제를 참조하십시오.

버킷 정책 가져오기

Amazon S3 버킷에 대한 정책을 가져오려면 AmazonS3 클라이언트의 getBucketPolicy 메서드를 호출하고 정책을 가져올 버킷의 이름을 이 메서드에 전달합니다.

가져오기

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;

코드

try { BucketPolicy bucket_policy = s3.getBucketPolicy(bucket_name); policy_text = bucket_policy.getPolicyText(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

이름이 지정된 버킷이 없거나, 해당 버킷에 대한 액세스 권한이 없거나, 버킷 정책이 없는 경우 AmazonServiceException이 발생합니다.

GitHub의 전체 예제를 참조하십시오.

버킷 정책 삭제

버킷 정책을 삭제하려면 AmazonS3 클라이언트의 deleteBucketPolicy를 호출하고 이 메서드에 버킷 이름을 제공합니다.

가져오기

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;

코드

try { s3.deleteBucketPolicy(bucket_name); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

버킷에 정책이 아직 없더라도 이 메서드는 성공합니다. 존재하지 않는 버킷 이름을 지정하거나 해당 버킷에 대한 액세스 권한이 없는 경우 AmazonServiceException이 발생합니다.

GitHub의 전체 예제를 참조하십시오.

추가 정보