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.
Verwenden des 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.
In diesem Thema werden einige Funktionen des DynamoDB Encryption Client in Java erklärt, die in anderen Programmiersprachenimplementierungen möglicherweise nicht zu finden sind.
Einzelheiten zur Programmierung mit dem DynamoDB Encryption Client finden Sie in den Java-Beispielen, den Beispielen im aws-dynamodb-encryption-java repository on GitHub und im Javadoc
Artikelverschlüsseler: DynamoDBEncryptor
Der DynamoDB Encryption Client in Java hat einen Elementverschlüsseler: den DynamoDBEncryptor auf niedrigerer Ebene
Attributaktionen in Java
Attribut-Aktionen bestimmen, welche Attributwerte verschlüsselt und signiert, welche nur signiert und welche ignoriert werden.
Wichtig
Nachdem Sie die Attributaktionen zum Verschlüsseln der Tabellenelemente verwendet haben, kann das Hinzufügen oder Entfernen von Attributen zu oder aus Ihrem Datenmodell einen Signaturvalidierungsfehler verursachen, der ein Entschlüsseln Ihrer Daten verhindert. Eine detaillierte Beschreibung finden Sie unter Ändern Ihres Datenmodells.
Um Attributaktionen anzugeben, wenn Sie den DynamoDBEncryptorHashMap-Objekt, in dem Attributnamen und die angegebenen Aktionen durch die Name-Wert-Paare repräsentiert werden.
Die gültigen Werte für die Attribut-Aktionen sind unter im Aufzählungstyp EncryptionFlags definiert. Sie können ENCRYPT und SIGN gemeinsam oder SIGN alleine verwenden, oder beides weglassen. Wenn Sie den DynamoDB Encryption Client jedoch ENCRYPT alleine verwenden, gibt er einen Fehler aus. Ein Attribut, das Sie nicht signieren, können Sie nicht verschlüsseln.
ENCRYPT SIGN
Warnung
Verschlüsseln Sie die primären Schlüsselattribute nicht. Sie müssen im Klartext bleiben, damit DynamoDB das Element finden kann, ohne einen vollständigen Tabellenscan ausführen zu müssen.
Wenn Sie einen Primärschlüssel im Verschlüsselungskontext angeben und dann ENCRYPT in der Attributaktion für eines der Primärschlüsselattribute angeben, löst der DynamoDB Encryption Client eine Ausnahme aus.
Der folgende Java-Code erstellt beispielsweise eine actions HashMap , die alle Attribute im Element verschlüsselt und signiert. record Ausnahmen sind die Partitionsschlüssel- und Sortierschlüsselattribute, die zwar signiert, aber nicht verschlüsselt sind, sowie das test-Attribut, das weder signiert noch 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: // no break; falls through to next case case sortKeyName: // Partition and sort keys must not be encrypted, but should be signed actions.put(attributeName, signOnly); break; case "test": // Don't encrypt or sign break; default: // Encrypt and sign everything else actions.put(attributeName, encryptAndSign); break; } }
Wenn Sie dann die encryptRecordDynamoDBEncryptor aufrufen, geben Sie die Map als Wert des Parameters attributeFlags an. Der folgende Aufruf von encryptRecord beispielsweise verwendet die actions-Map.
// Encrypt the plaintext record final Map<String, AttributeValue> encrypted_record = encryptor.encryptRecord(record, actions, encryptionContext);
Überschreiben von Tabellennamen
Im DynamoDB Encryption Client ist der Name der DynamoDB-Tabelle ein Element des DynamoDB-Verschlüsselungskontextes, das an die Verschlüsselungs - und Entschlüsselungsmethoden übergeben wird. Wenn Sie Tabellenelemente verschlüsseln oder signieren, ist der DynamoDB-Verschlüsselungskontext, einschließlich des Tabellennamens, kryptografisch an den Chiffretext gebunden. Wenn der DynamoDB-Verschlüsselungskontext, der an die Entschlüsselungsmethode übergeben wird, nicht mit dem DynamoDB-Verschlüsselungskontext übereinstimmt, der an die Verschlüsselungsmethode übergeben wurde, schlägt der Entschlüsselungsvorgang fehl.
Gelegentlich ändert sich der Name einer Tabelle, z. B. wenn Sie eine Tabelle sichern oder eine zeitpunktbezogene Wiederherstellung durchführen. Wenn Sie die Signatur dieser Elemente entschlüsseln oder überprüfen, müssen Sie denselben DynamoDB-Verschlüsselungskontext übergeben, der zum Verschlüsseln und Signieren der Elemente verwendet wurde, einschließlich des ursprünglichen Tabellennamens. Der aktuelle Tabellenname wird nicht benötigt.
Wenn Sie den verwendenDynamoDBEncryptor, stellen Sie den DynamoDB-Verschlüsselungskontext manuell zusammen. Verwenden Sie daher nicht die Operatoren zum Überschreiben von Tabellennamen, wenn Sie die verwenden. DynamoDBEncryptor Erstellen Sie stattdessen einen Verschlüsselungskontext mit dem ursprünglichen Tabellennamen und senden Sie ihn an die Entschlüsselungsmethode.