Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh Java
Pustaka enkripsi sisi klien kami diubah namanya menjadi Enkripsi AWS Database. SDK Panduan pengembang ini masih memberikan informasi tentang Klien Enkripsi DynamoDB. |
Contoh berikut menunjukkan cara menggunakan pustaka enkripsi sisi klien Java untuk DynamoDB untuk melindungi item tabel dalam aplikasi Anda. Anda dapat menemukan lebih banyak contoh (dan berkontribusi sendiri) di contoh Java
Contoh berikut menunjukkan cara mengonfigurasi pustaka enkripsi sisi klien Java untuk DynamoDB dalam tabel Amazon DynamoDB baru yang tidak terisi. Jika Anda ingin mengonfigurasi tabel Amazon DynamoDB yang ada untuk enkripsi sisi klien, lihat. Tambahkan versi 3.x ke tabel yang ada
Topik
Menggunakan klien yang disempurnakan DynamoDB
Contoh berikut menunjukkan cara menggunakan DynamoDB Enhanced Client DynamoDbEncryptionInterceptor
dan dengan keyring untuk mengenkripsi item tabel DynamoDB AWS KMS sebagai bagian dari panggilan DynamoDB Anda. API
Anda dapat menggunakan keyring apa pun yang didukung dengan DynamoDB Enhanced Client, tetapi sebaiknya gunakan salah AWS KMS satu gantungan kunci bila memungkinkan.
catatan
DynamoDB Enhanced Client tidak mendukung enkripsi yang dapat dicari. Gunakan DynamoDbEncryptionInterceptor
dengan API DynamoDB tingkat rendah untuk menggunakan enkripsi yang dapat dicari.
Lihat contoh kode lengkapnya: EnhancedPutGetExample.java
- Langkah 1: Buat AWS KMS keyring
-
Contoh berikut digunakan
CreateAwsKmsMrkMultiKeyring
untuk membuat AWS KMS keyring dengan kunci enkripsi KMS simetris.CreateAwsKmsMrkMultiKeyring
Metode ini memastikan bahwa keyring akan menangani tombol Single-region dan Multi-region dengan benar.final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); final CreateAwsKmsMrkMultiKeyringInput keyringInput = CreateAwsKmsMrkMultiKeyringInput.builder() .generator(kmsKeyId) .build(); final IKeyring kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
- Langkah 2: Buat skema tabel dari kelas data beranotasi
-
Contoh berikut menggunakan kelas data beranotasi untuk membuat.
TableSchema
Contoh ini mengasumsikan bahwa kelas data beranotasi dan tindakan atribut didefinisikan menggunakan .java. SimpleClass
Untuk panduan selengkapnya tentang anotasi tindakan atribut Anda, lihat. Gunakan kelas data beranotasi catatan
Enkripsi AWS Database SDK tidak mendukung anotasi pada atribut bersarang.
final TableSchema<SimpleClass> schemaOnEncrypt = TableSchema.fromBean(SimpleClass.class);
- Langkah 3: Tentukan atribut mana yang dikecualikan dari tanda tangan
-
Contoh berikut mengasumsikan bahwa semua
DO_NOTHING
atribut berbagi awalan yang berbeda ":
“, dan menggunakan awalan untuk menentukan atribut unsigned yang diizinkan. Klien mengasumsikan bahwa nama atribut apa pun dengan awalan ":
" dikecualikan dari tanda tangan. Untuk informasi selengkapnya, lihat Allowed unsigned attributes.final String unsignedAttrPrefix = ":";
- Langkah 4: Buat konfigurasi enkripsi
-
Contoh berikut mendefinisikan
tableConfigs
Peta yang mewakili konfigurasi enkripsi untuk tabel DynamoDB.Contoh ini menentukan nama tabel DynamoDB sebagai nama tabel logis. Kami sangat menyarankan untuk menentukan nama tabel DynamoDB Anda sebagai nama tabel logis saat Anda pertama kali menentukan konfigurasi enkripsi Anda. Untuk informasi selengkapnya, lihat Konfigurasi enkripsi dalam Enkripsi AWS Database SDK untuk DynamoDB.
catatan
Untuk menggunakan enkripsi yang dapat dicari atau suar yang ditandatangani, Anda juga harus menyertakan SearchConfigdalam konfigurasi enkripsi Anda.
final Map<String, DynamoDbEnhancedTableEncryptionConfig> tableConfigs = new HashMap<>(); tableConfigs.put(ddbTableName, DynamoDbEnhancedTableEncryptionConfig.builder() .logicalTableName(ddbTableName) .keyring(kmsKeyring) .allowedUnsignedAttributePrefix(unsignedAttrPrefix) .schemaOnEncrypt(tableSchema) .build());
- Langkah 5: Membuat
DynamoDbEncryptionInterceptor
-
Contoh berikut membuat yang baru
DynamoDbEncryptionInterceptor
dengantableConfigs
dari Langkah 4.final DynamoDbEncryptionInterceptor interceptor = DynamoDbEnhancedClientEncryption.CreateDynamoDbEncryptionInterceptor( CreateDynamoDbEncryptionInterceptorInput.builder() .tableEncryptionConfigs(tableConfigs) .build() );
- Langkah 6: Buat klien AWS SDK DynamoDB baru
-
Contoh berikut membuat klien AWS SDK DynamoDB baru menggunakan
interceptor
dari Langkah 5.final DynamoDbClient ddb = DynamoDbClient.builder() .overrideConfiguration( ClientOverrideConfiguration.builder() .addExecutionInterceptor(interceptor) .build()) .build();
- Langkah 7: Buat DynamoDB Enhanced Client dan buat tabel
-
Contoh berikut menciptakan DynamoDB Enhanced Client menggunakan klien AWS SDK DynamoDB dibuat pada Langkah 6 dan membuat tabel menggunakan kelas data beranotasi.
final DynamoDbEnhancedClient enhancedClient = DynamoDbEnhancedClient.builder() .dynamoDbClient(ddb) .build(); final DynamoDbTable<SimpleClass> table = enhancedClient.table(ddbTableName, tableSchema);
- Langkah 8: Enkripsi dan tandatangani item tabel
-
Contoh berikut menempatkan item ke dalam tabel DynamoDB menggunakan DynamoDB Enhanced Client. Item dienkripsi dan ditandatangani sisi klien sebelum dikirim ke DynamoDB.
final SimpleClass item = new SimpleClass(); item.setPartitionKey("EnhancedPutGetExample"); item.setSortKey(0); item.setAttribute1("encrypt and sign me!"); item.setAttribute2("sign me!"); item.setAttribute3("ignore me!"); table.putItem(item);
Menggunakan DynamoDB tingkat rendah API
Anda dapat menggunakan keyring apa pun yang didukung, tetapi kami sarankan menggunakan salah satu AWS KMS gantungan kunci jika memungkinkan.
Lihat contoh kode lengkapnya: BasicPutGetExample.java
- Langkah 1: Buat AWS KMS keyring
-
Contoh berikut digunakan
CreateAwsKmsMrkMultiKeyring
untuk membuat AWS KMS keyring dengan kunci enkripsi KMS simetris.CreateAwsKmsMrkMultiKeyring
Metode ini memastikan bahwa keyring akan menangani tombol Single-region dan Multi-region dengan benar.final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); final CreateAwsKmsMrkMultiKeyringInput keyringInput = CreateAwsKmsMrkMultiKeyringInput.builder() .generator(kmsKeyId) .build(); final IKeyring kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
- Langkah 2: Konfigurasikan tindakan atribut Anda
-
Contoh berikut mendefinisikan
attributeActionsOnEncrypt
Peta yang mewakili tindakan atribut sampel untuk item tabel.catatan
Contoh berikut tidak mendefinisikan atribut apa pun sebagai
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Jika Anda menentukanSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
atribut apa pun, maka atribut partisi dan sortir juga harusSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.final Map<String, CryptoAction> attributeActionsOnEncrypt = new HashMap<>(); // The partition attribute must be SIGN_ONLY attributeActionsOnEncrypt.put("partition_key", CryptoAction.SIGN_ONLY); // The sort attribute must be SIGN_ONLY attributeActionsOnEncrypt.put("sort_key", CryptoAction.SIGN_ONLY); attributeActionsOnEncrypt.put("attribute1", CryptoAction.ENCRYPT_AND_SIGN); attributeActionsOnEncrypt.put("attribute2", CryptoAction.SIGN_ONLY); attributeActionsOnEncrypt.put(":attribute3", CryptoAction.DO_NOTHING);
- Langkah 3: Tentukan atribut mana yang dikecualikan dari tanda tangan
-
Contoh berikut mengasumsikan bahwa semua
DO_NOTHING
atribut berbagi awalan yang berbeda ":
“, dan menggunakan awalan untuk menentukan atribut unsigned yang diizinkan. Klien mengasumsikan bahwa nama atribut apa pun dengan awalan ":
" dikecualikan dari tanda tangan. Untuk informasi selengkapnya, lihat Allowed unsigned attributes.final String unsignedAttrPrefix = ":";
- Langkah 4: Tentukan konfigurasi enkripsi tabel DynamoDB
-
Contoh berikut mendefinisikan
tableConfigs
Peta yang mewakili konfigurasi enkripsi untuk tabel DynamoDB ini.Contoh ini menentukan nama tabel DynamoDB sebagai nama tabel logis. Kami sangat menyarankan untuk menentukan nama tabel DynamoDB Anda sebagai nama tabel logis saat Anda pertama kali menentukan konfigurasi enkripsi Anda. Untuk informasi selengkapnya, lihat Konfigurasi enkripsi dalam Enkripsi AWS Database SDK untuk DynamoDB.
catatan
Untuk menggunakan enkripsi yang dapat dicari atau suar yang ditandatangani, Anda juga harus menyertakan SearchConfigdalam konfigurasi enkripsi Anda.
final Map<String, DynamoDbTableEncryptionConfig> tableConfigs = new HashMap<>(); final DynamoDbTableEncryptionConfig config = DynamoDbTableEncryptionConfig.builder() .logicalTableName(ddbTableName) .partitionKeyName("partition_key") .sortKeyName("sort_key") .attributeActionsOnEncrypt(attributeActionsOnEncrypt) .keyring(kmsKeyring) .allowedUnsignedAttributePrefix(unsignedAttrPrefix) .build(); tableConfigs.put(ddbTableName, config);
- Langkah 5: Buat
DynamoDbEncryptionInterceptor
-
Contoh berikut menciptakan
DynamoDbEncryptionInterceptor
menggunakantableConfigs
dari Langkah 4.DynamoDbEncryptionInterceptor interceptor = DynamoDbEncryptionInterceptor.builder() .config(DynamoDbTablesEncryptionConfig.builder() .tableEncryptionConfigs(tableConfigs) .build()) .build();
- Langkah 6: Buat klien AWS SDK DynamoDB baru
-
Contoh berikut membuat klien AWS SDK DynamoDB baru menggunakan
interceptor
dari Langkah 5.final DynamoDbClient ddb = DynamoDbClient.builder() .overrideConfiguration( ClientOverrideConfiguration.builder() .addExecutionInterceptor(interceptor) .build()) .build();
- Langkah 7: Enkripsi dan tandatangani item tabel DynamoDB
-
Contoh berikut mendefinisikan
item
Peta yang mewakili item tabel sampel dan menempatkan item dalam tabel DynamoDB. Item dienkripsi dan ditandatangani sisi klien sebelum dikirim ke DynamoDB.final HashMap<String, AttributeValue> item = new HashMap<>(); item.put("partition_key", AttributeValue.builder().s("BasicPutGetExample").build()); item.put("sort_key", AttributeValue.builder().n("0").build()); item.put("attribute1", AttributeValue.builder().s("encrypt and sign me!").build()); item.put("attribute2", AttributeValue.builder().s("sign me!").build()); item.put(":attribute3", AttributeValue.builder().s("ignore me!").build()); final PutItemRequest putRequest = PutItemRequest.builder() .tableName(ddbTableName) .item(item) .build(); final PutItemResponse putResponse = ddb.putItem(putRequest);
Menggunakan level yang lebih rendah DynamoDbItemEncryptor
Contoh berikut menunjukkan cara menggunakan level yang lebih rendah DynamoDbItemEncryptor
dengan AWS KMS keyring untuk langsung mengenkripsi dan menandatangani item tabel. DynamoDbItemEncryptor
Itu tidak menempatkan item di tabel DynamoDB Anda.
Anda dapat menggunakan keyring apa pun yang didukung dengan DynamoDB Enhanced Client, tetapi sebaiknya gunakan salah AWS KMS satu gantungan kunci bila memungkinkan.
catatan
Tingkat yang lebih rendah DynamoDbItemEncryptor
tidak mendukung enkripsi yang dapat dicari. Gunakan DynamoDbEncryptionInterceptor
dengan API DynamoDB tingkat rendah untuk menggunakan enkripsi yang dapat dicari.
Lihat contoh kode lengkapnya: ItemEncryptDecryptExample.java
- Langkah 1: Buat AWS KMS keyring
-
Contoh berikut digunakan
CreateAwsKmsMrkMultiKeyring
untuk membuat AWS KMS keyring dengan kunci enkripsi KMS simetris.CreateAwsKmsMrkMultiKeyring
Metode ini memastikan bahwa keyring akan menangani tombol Single-region dan Multi-region dengan benar.final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); final CreateAwsKmsMrkMultiKeyringInput keyringInput = CreateAwsKmsMrkMultiKeyringInput.builder() .generator(kmsKeyId) .build(); final IKeyring kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
- Langkah 2: Konfigurasikan tindakan atribut Anda
-
Contoh berikut mendefinisikan
attributeActionsOnEncrypt
Peta yang mewakili tindakan atribut sampel untuk item tabel.catatan
Contoh berikut tidak mendefinisikan atribut apa pun sebagai
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Jika Anda menentukanSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
atribut apa pun, maka atribut partisi dan sortir juga harusSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.final Map<String, CryptoAction> attributeActionsOnEncrypt = new HashMap<>(); // The partition attribute must be SIGN_ONLY attributeActionsOnEncrypt.put("partition_key", CryptoAction.SIGN_ONLY); // The sort attribute must be SIGN_ONLY attributeActionsOnEncrypt.put("sort_key", CryptoAction.SIGN_ONLY); attributeActionsOnEncrypt.put("attribute1", CryptoAction.ENCRYPT_AND_SIGN); attributeActionsOnEncrypt.put("attribute2", CryptoAction.SIGN_ONLY); attributeActionsOnEncrypt.put(":attribute3", CryptoAction.DO_NOTHING);
- Langkah 3: Tentukan atribut mana yang dikecualikan dari tanda tangan
-
Contoh berikut mengasumsikan bahwa semua
DO_NOTHING
atribut berbagi awalan yang berbeda ":
“, dan menggunakan awalan untuk menentukan atribut unsigned yang diizinkan. Klien mengasumsikan bahwa nama atribut apa pun dengan awalan ":
" dikecualikan dari tanda tangan. Untuk informasi selengkapnya, lihat Allowed unsigned attributes.final String unsignedAttrPrefix = ":";
- Langkah 4: Tentukan
DynamoDbItemEncryptor
konfigurasi -
Contoh berikut mendefinisikan konfigurasi untuk.
DynamoDbItemEncryptor
Contoh ini menentukan nama tabel DynamoDB sebagai nama tabel logis. Kami sangat menyarankan untuk menentukan nama tabel DynamoDB Anda sebagai nama tabel logis saat Anda pertama kali menentukan konfigurasi enkripsi Anda. Untuk informasi selengkapnya, lihat Konfigurasi enkripsi dalam Enkripsi AWS Database SDK untuk DynamoDB.
final DynamoDbItemEncryptorConfig config = DynamoDbItemEncryptorConfig.builder() .logicalTableName(ddbTableName) .partitionKeyName("partition_key") .sortKeyName("sort_key") .attributeActionsOnEncrypt(attributeActionsOnEncrypt) .keyring(kmsKeyring) .allowedUnsignedAttributePrefix(unsignedAttrPrefix) .build();
- Langkah 5: Buat
DynamoDbItemEncryptor
-
Contoh berikut membuat baru
DynamoDbItemEncryptor
menggunakanconfig
dari Langkah 4.final DynamoDbItemEncryptor itemEncryptor = DynamoDbItemEncryptor.builder() .DynamoDbItemEncryptorConfig(config) .build();
- Langkah 6: Langsung mengenkripsi dan menandatangani item tabel
-
Contoh berikut langsung mengenkripsi dan menandatangani item menggunakan.
DynamoDbItemEncryptor
DynamoDbItemEncryptor
Itu tidak menempatkan item di tabel DynamoDB Anda.final Map<String, AttributeValue> originalItem = new HashMap<>(); originalItem.put("partition_key", AttributeValue.builder().s("ItemEncryptDecryptExample").build()); originalItem.put("sort_key", AttributeValue.builder().n("0").build()); originalItem.put("attribute1", AttributeValue.builder().s("encrypt and sign me!").build()); originalItem.put("attribute2", AttributeValue.builder().s("sign me!").build()); originalItem.put(":attribute3", AttributeValue.builder().s("ignore me!").build()); final Map<String, AttributeValue> encryptedItem = itemEncryptor.EncryptItem( EncryptItemInput.builder() .plaintextItem(originalItem) .build() ).encryptedItem();