메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

예제: 클라이언트측 암호화(옵션 1: AWS KMS 관리형 고객 마스터 키 사용(Java용 AWS SDK))

다음 Java 코드 예제에서는 Amazon S3로 객체를 업로드합니다. 이 예제에서는 AWS KMS 관리형 고객 마스터 키(CMK)를 사용하여 Amazon S3로 업로드하기 전에 클라이언트측 데이터를 암호화합니다. 코드에 CMK ID가 필요합니다.

KMS 관리형 CMK를 사용한 클라이언트측 암호화가 작동하는 방법에 대한 자세한 내용은 옵션 1: AWS KMS 관리형 고객 마스터 키(CMK) 사용을 참조하십시오.

실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Java 코드 예제 테스트를 참조하십시오. 버킷 이름 및 CMK ID를 제공하여 코드를 업데이트해야 합니다.

Copy
import java.io.ByteArrayInputStream; import java.util.Arrays; import junit.framework.Assert; import org.apache.commons.io.IOUtils; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3EncryptionClient; import com.amazonaws.services.s3.model.CryptoConfiguration; import com.amazonaws.services.s3.model.KMSEncryptionMaterialsProvider; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.PutObjectRequest; import com.amazonaws.services.s3.model.S3Object; public class testKMSkeyUploadObject { private static AmazonS3EncryptionClient encryptionClient; public static void main(String[] args) throws Exception { String bucketName = "***bucket name***"; String objectKey = "ExampleKMSEncryptedObject"; String kms_cmk_id = "***AWS KMS customer master key ID***"; KMSEncryptionMaterialsProvider materialProvider = new KMSEncryptionMaterialsProvider(kms_cmk_id); encryptionClient = new AmazonS3EncryptionClient(new ProfileCredentialsProvider(), materialProvider, new CryptoConfiguration().withKmsRegion(Regions.US_EAST_1)) .withRegion(Region.getRegion(Regions.US_EAST_1)); // Upload object using the encryption client. byte[] plaintext = "Hello World, S3 Client-side Encryption Using Asymmetric Master Key!" .getBytes(); System.out.println("plaintext's length: " + plaintext.length); encryptionClient.putObject(new PutObjectRequest(bucketName, objectKey, new ByteArrayInputStream(plaintext), new ObjectMetadata())); // Download the object. S3Object downloadedObject = encryptionClient.getObject(bucketName, objectKey); byte[] decrypted = IOUtils.toByteArray(downloadedObject .getObjectContent()); // Verify same data. Assert.assertTrue(Arrays.equals(plaintext, decrypted)); } }