メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

例: クライアント側の暗号化(オプション 1: AWS KMS で管理されたカスタマーマスターキーの使用(AWS SDK for Java))

次の Java コード例では、オブジェクトを Amazon S3 にアップロードします。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)); } }