Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Beispielcode für den DynamoDB Encryption Client für Java
Anmerkung
Unsere clientseitige Verschlüsselungsbibliothek wurde in Database Encryption SDK umbenannt. AWS Das folgende Thema enthält Informationen zu Versionen 1. x —2. x des DynamoDB Encryption Client für Java und Versionen 1. x —3. x des DynamoDB Encryption Client für Python. Weitere Informationen finden Sie unter AWS Database Encryption SDK für DynamoDB-Versionsunterstützung.
Die folgenden Beispiele zeigen Ihnen, wie Sie den DynamoDB Encryption Client für Java verwenden, um DynamoDB-Tabellenelemente in Ihrer Anwendung zu schützen. Weitere Beispiele (und eigene Beispiele) finden Sie im Beispielverzeichnis des aws-database-encryption-sdk-dynamodb-Repositorys
Verwenden des DynamoDBEncryptor
Dieses Beispiel zeigt Ihnen, wie Sie den untergeordneten DynamoDBEncryptor
Sie können jeden kompatiblen Anbieter für kryptografisches Material (CMP) mit dem verwenden. DynamoDBEncryptor
Sehen Sie sich das vollständige Codebeispiel an: AwsKmsEncryptedItem.java
- Schritt 1: Erstellen Sie den Direct KMS Provider
-
Erstellen Sie eine Instanz des AWS KMS Clients mit der angegebenen Region. Verwenden Sie dann die Client-Instanz, um eine Instanz des Direct KMS Providers mit Ihrem bevorzugten zu erstellen AWS KMS key.
In diesem Beispiel wird der Amazon-Ressourcenname (ARN) verwendet, um den zu identifizieren AWS KMS key, aber Sie können jeden gültigen Schlüsselbezeichner verwenden.
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); - Schritt 2: Erstellen Sie ein Element
-
In diesem Beispiel wird a definiert
recordHashMap , das ein Beispieltabellenelement darstellt.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")); - Schritt 3: Erstellen Sie einen DynamoDBEncryptor
-
Erstellen Sie eine Instance von
DynamoDBEncryptormit dem Direct KMS Provider.final DynamoDBEncryptor encryptor = DynamoDBEncryptor.getInstance(cmp); - Schritt 4: Erstellen Sie einen DynamoDB-Verschlüsselungskontext
-
Der DynamoDB-Verschlüsselungskontext enthält Informationen über die Tabellenstruktur und wie sie verschlüsselt und signiert ist.
final String tableName = "testTable"; final EncryptionContext encryptionContext = new EncryptionContext.Builder() .withTableName(tableName) .withHashKeyName(partitionKeyName) .withRangeKeyName(sortKeyName) .build(); - Schritt 5: Erstellen Sie das Attribut-Aktionen-Objekt
-
Attribut-Aktionen bestimmen, welche Attribute des Elements verschlüsselt und signiert sind, welche nur signiert und welche nicht verschlüsselt oder signiert sind.
In Java erstellen Sie zur Angabe von Attributaktionen eine Kombination HashMap aus Attributnamen und
EncryptionFlagsWertepaaren.Der folgende Java-Code erstellt beispielsweise eine,
actionsHashMap die alle Attribute imrecordElement verschlüsselt und signiert, mit Ausnahme der Partitionsschlüssel- und Sortierschlüsselattribute, die signiert, aber nicht verschlüsselt sind, und destestAttributs, das nicht signiert oder verschlüsselt ist.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; } } - Schritt 6: Verschlüsseln und signieren Sie das Element
-
Um das Tabellenelement zu verschlüsseln und zu signieren, rufen Sie die Methode
encryptRecordfür die Instance desDynamoDBEncryptorauf. Geben Sie das Tabellenelement (record), die Attribut-Aktionen (actions) und den Verschlüsselungskontext (encryptionContext) an.final Map<String, AttributeValue> encrypted_record = encryptor.encryptRecord(record, actions, encryptionContext); - Schritt 7: Fügen Sie das Element in die DynamoDB-Tabelle ein
-
Fügen Sie abschließend das verschlüsselte und signierte Element in die DynamoDB-Tabelle ein.
final DynamoDbClient ddb = DynamoDbClient.builder().region(Region.of(region)).build(); ddb.putItem(tableName, encrypted_record);