Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh kode untuk DynamoDB Encryption Client untuk Java
catatan
Pustaka enkripsi sisi klien kami diubah namanya menjadi AWS Database Encryption SDK. Topik berikut memberikan informasi tentang versi 1. x —2. x dari DynamoDB Encryption Client untuk Java dan versi 1. x —3. x dari Klien Enkripsi DynamoDB untuk Python. Untuk informasi selengkapnya, lihat SDK Enkripsi AWS Database untuk dukungan versi DynamoDB.
Contoh berikut menunjukkan cara menggunakan DynamoDB Encryption Client untuk Java guna melindungi item tabel DynamoDB dalam aplikasi Anda. Anda dapat menemukan lebih banyak contoh (dan berkontribusi sendiri) di direktori examples
Menggunakan DynamoDBEncryptor
Contoh ini menunjukkan cara menggunakan DynamoDBEncryptor
Anda dapat menggunakan penyedia bahan kriptografi yang kompatibel (CMP) dengan. DynamoDBEncryptor
Lihat contoh kode lengkapnya: AwsKmsEncryptedItem.java
- Langkah 1: Buat Penyedia KMS Langsung
-
Buat instance AWS KMS klien dengan wilayah yang ditentukan. Kemudian, gunakan instance klien untuk membuat instance Penyedia KMS Langsung dengan pilihan AWS KMS key Anda.
Contoh ini menggunakan Amazon Resource Name (ARN) untuk mengidentifikasi AWS KMS key, tetapi Anda dapat menggunakan pengidentifikasi kunci yang valid.
final String keyArn = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; final String region = "us-west-2"; final KmsClient kms = KmsClient.builder().region(Region.of(region)).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms,keyArn); - Langkah 2: Buat item
-
Contoh ini mendefinisikan
recordHashMap yang mewakili item tabel sampel.final String partitionKeyName = "partition_attribute"; final String sortKeyName = "sort_attribute"; final Map<String, AttributeValue> record = new HashMap<>(); record.put(partitionKeyName, new AttributeValue().withS("value1")); record.put(sortKeyName, new AttributeValue().withN("55")); record.put("example", new AttributeValue().withS("data")); record.put("numbers", new AttributeValue().withN("99")); record.put("binary", new AttributeValue().withB(ByteBuffer.wrap(new byte[]{0x00, 0x01, 0x02}))); record.put("test", new AttributeValue().withS("test-value")); - Langkah 3: Buat DynamoDBEncryptor
-
Buat instans
DynamoDBEncryptordengan Penyedia KMS Langsung.final DynamoDBEncryptor encryptor = DynamoDBEncryptor.getInstance(cmp); - Langkah 4: Buat konteks enkripsi DynamoDB
-
Konteks enkripsi DynamoDB berisi informasi tentang struktur tabel dan bagaimana tabel itu dienkripsi dan ditandatangani.
final String tableName = "testTable"; final EncryptionContext encryptionContext = new EncryptionContext.Builder() .withTableName(tableName) .withHashKeyName(partitionKeyName) .withRangeKeyName(sortKeyName) .build(); - Langkah 5: Buat objek tindakan atribut
-
Tindakan atribut menentukan mana atribut item yang dienkripsi dan ditandatangani, mana yang hanya ditandatangani, dan mana yang tidak dienkripsi dan ditandatangani.
Di Java, untuk menentukan tindakan atribut, Anda membuat HashMap nama atribut dan pasangan
EncryptionFlagsnilai.Misalnya, kode Java berikut membuat
actionsHashMap yang mengenkripsi dan menandatangani semua atribut dalamrecorditem, kecuali untuk kunci partisi dan atribut kunci sortir, yang ditandatangani, tetapi tidak dienkripsi, dantestatribut, yang tidak ditandatangani atau dienkripsi.final EnumSet<EncryptionFlags> signOnly = EnumSet.of(EncryptionFlags.SIGN); final EnumSet<EncryptionFlags> encryptAndSign = EnumSet.of(EncryptionFlags.ENCRYPT, EncryptionFlags.SIGN); final Map<String, Set<EncryptionFlags>> actions = new HashMap<>(); for (final String attributeName : record.keySet()) { switch (attributeName) { case partitionKeyName: // fall through to the next case case sortKeyName: // Partition and sort keys must not be encrypted, but should be signed actions.put(attributeName, signOnly); break; case "test": // Neither encrypted nor signed break; default: // Encrypt and sign all other attributes actions.put(attributeName, encryptAndSign); break; } } - Langkah 6: Enkripsi dan tanda tangani item
-
Untuk mengenkripsi dan menandatangani item tabel, panggil metode
encryptRecordpada instansDynamoDBEncryptor. Tentukan item tabel (record), tindakan atribut (actions), dan konteks enkripsi (encryptionContext).final Map<String, AttributeValue> encrypted_record = encryptor.encryptRecord(record, actions, encryptionContext); - Langkah 7: Masukkan item ke dalam tabel DynamoDB
-
Akhirnya, letakkan item yang dienkripsi dan ditandatangani ke dalam tabel DynamoDB.
final DynamoDbClient ddb = DynamoDbClient.builder().region(Region.of(region)).build(); ddb.putItem(tableName, encrypted_record);