Amazon S3enkripsi sisi klien denganAWSKunci terkelola KMS - AWS SDK for Java 1.x

AWS SDK for Java 1.x telah memasuki mode pemeliharaan pada 31 Juli 2024, dan akan mencapai end-of-supportpada 31 Desember 2025. Kami menyarankan Anda bermigrasi ke AWS SDK for Java 2.xuntuk terus menerima fitur baru, peningkatan ketersediaan, dan pembaruan keamanan.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Amazon S3enkripsi sisi klien denganAWSKunci terkelola KMS

Contoh berikut menggunakanAmazons3EncryptionClientV2Builderkelas untuk membuatAmazon S3enkripsi di sisi klien diaktifkan. Setelah dikonfigurasi, objek apa pun yang Anda unggahAmazon S3menggunakan klien ini akan dienkripsi. Setiap benda yang Anda dapatkan dariAmazon S3menggunakan klien ini secara otomatis didekripsi.

catatan

Contoh berikut menunjukkan cara menggunakanAmazon S3enkripsi sisi klien denganAWSKMS kunci yang dikelola. Untuk mempelajari cara menggunakan enkripsi dengan kunci Anda sendiri, lihatAmazon S3enkripsi sisi klien.

Anda dapat memilih dari dua mode enkripsi saat mengaktifkan sisi klienAmazon S3enkripsi: ketat dikonfirmasi atau diautentikasi. Bagian berikut menunjukkan cara mengaktifkan setiap jenis. Untuk mempelajari algoritma yang digunakan setiap mode, lihatCryptoModedefinisi.

Impor yang diperlukan

Impor kelas berikut untuk contoh-contoh ini.

Impor

import com.amazonaws.ClientConfiguration; import com.amazonaws.regions.Regions; import com.amazonaws.services.kms.AWSKMS; import com.amazonaws.services.kms.AWSKMSClientBuilder; import com.amazonaws.services.kms.model.GenerateDataKeyRequest; import com.amazonaws.services.kms.model.GenerateDataKeyResult; import com.amazonaws.services.s3.AmazonS3EncryptionClientV2Builder; import com.amazonaws.services.s3.AmazonS3EncryptionV2; import com.amazonaws.services.s3.model.CryptoConfigurationV2; import com.amazonaws.services.s3.model.CryptoMode; import com.amazonaws.services.s3.model.EncryptionMaterials; import com.amazonaws.services.s3.model.KMSEncryptionMaterialsProvider;

enkripsi terautentikasi

Enkripsi otentikasi yang ketat adalah mode default jika tidakCryptoModeditentukan.

Untuk secara eksplisit mengaktifkan mode ini, tentukanStrictAuthenticatedEncryptionvalue dalamwithCryptoConfigurationmetode.

catatan

Untuk menggunakan enkripsi otentikasi sisi klien, Anda harus menyertakan yang terbaruGoyang Puri jarfile di classpath aplikasi Anda.

Kode

AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.StrictAuthenticatedEncryption))) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build(); s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the {console}"); System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3));

PanggilputObjectMetode pada metodeAmazon S3enkripsi klien untuk meng-upload objek.

Kode

s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the {console}");

Anda dapat mengambil objek menggunakan klien yang sama. Contoh ini memanggilgetObjectAsStringmetode untuk mengambil string yang disimpan.

Kode

System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3));

Mode enkripsi terautentik

Saat Anda menggunakanAuthenticatedEncryptionmode, algoritma pembungkus kunci ditingkatkan diterapkan selama enkripsi. Saat mendekripsi dalam mode ini, algoritma dapat memverifikasi integritas objek yang didekripsi dan membuang pengecualian jika cek gagal. Untuk detail lebih lanjut tentang cara kerja enkripsi terautentikasi, lihatAmazon S3Enkripsi terautentikasi sisi klienposting blog.

catatan

Untuk menggunakan enkripsi otentikasi sisi klien, Anda harus menyertakan yang terbaruGoyang Puri jarfile di classpath aplikasi Anda.

Untuk mengaktifkan mode ini, tentukanAuthenticatedEncryptionvalue dalamwithCryptoConfigurationmetode.

Kode

AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.AuthenticatedEncryption))) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build();

MengonfigurasiAWS KMSklien

ParameterAmazon S3enkripsi klien menciptakanAWS KMSklien secara default, kecuali salah satu secara eksplisit ditentukan.

Untuk mengatur wilayah untuk ini dibuat secara otomatisAWS KMSklien, mengaturawsKmsRegion.

Kode

Region kmsRegion = Region.getRegion(Regions.AP_NORTHEAST_1); AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withAwsKmsRegion(kmsRegion)) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build();

Atau, Anda dapat menggunakan sendiriAWS KMSklien untuk menginisialisasi klien enkripsi.

Kode

AWSKMS kmsClient = AWSKMSClientBuilder.standard() .withRegion(Regions.US_WEST_2); .build(); AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withKmsClient(kmsClient) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.AuthenticatedEncryption))) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build();