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.
. NETBeispiele
Die folgenden Beispiele zeigen Ihnen, wie Sie die verwenden. NETclientseitige Verschlüsselungsbibliothek für DynamoDB zum Schutz der Tabellenelemente in Ihrer Anwendung. Weitere Beispiele (und eigene Beispiele) finden Sie in der. NETBeispiele finden
Die folgenden Beispiele zeigen, wie Sie den konfigurieren. NETclientseitige Verschlüsselungsbibliothek für DynamoDB in einer neuen, nicht aufgefüllten Amazon DynamoDB-Tabelle. Wenn Sie Ihre vorhandenen Amazon DynamoDB-Tabellen für die clientseitige Verschlüsselung konfigurieren möchten, finden Sie weitere Informationen unter. Fügen Sie Version 3.x zu einer vorhandenen Tabelle hinzu
Themen
Verwenden der AWS Low-Level-Datenbankverschlüsselung SDK für DynamoDB API
Das folgende Beispiel zeigt, wie Sie die AWS Low-Level-Datenbankverschlüsselung SDK für DynamoDB API mit einem AWS KMS Schlüsselbund verwenden, um Elemente automatisch clientseitig mit Ihren DynamoDB-Anfragen zu verschlüsseln und zu signieren. PutItem
Sie können jeden unterstützten Schlüsselbund verwenden, wir empfehlen jedoch, wann immer möglich, einen der Schlüsselbunde zu verwenden. AWS KMS
Sehen Sie sich das vollständige Codebeispiel an: .cs BasicPutGetExample
- Schritt 1: Erstellen Sie den Schlüsselbund AWS KMS
-
Im folgenden Beispiel wird
CreateAwsKmsMrkMultiKeyring
ein AWS KMS Schlüsselbund mit einem symmetrischen Verschlüsselungsschlüssel erstellt. KMS DieCreateAwsKmsMrkMultiKeyring
Methode stellt sicher, dass der Schlüsselbund sowohl Schlüssel mit einer Region als auch Schlüssel mit mehreren Regionen korrekt verarbeitet.var matProv = new MaterialProviders(new MaterialProvidersConfig()); var keyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = kmsKeyId }; var kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
- Schritt 2: Konfigurieren Sie Ihre Attributaktionen
-
Das folgende Beispiel definiert ein
attributeActionsOnEncrypt
Wörterbuch, das Beispiele für Attributaktionen für ein Tabellenelement darstellt.Anmerkung
Das folgende Beispiel definiert keine Attribute als
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Wenn SieSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
Attribute angeben, müssen auch die Partitions- und Sortierattribute angegeben werdenSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.var attributeActionsOnEncrypt = new Dictionary<string, CryptoAction> { ["partition_key"] = CryptoAction.SIGN_ONLY, // The partition attribute must be SIGN_ONLY ["sort_key"] = CryptoAction.SIGN_ONLY, // The sort attribute must be SIGN_ONLY ["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN, ["attribute2"] = CryptoAction.SIGN_ONLY, [":attribute3"] = CryptoAction.DO_NOTHING };
- Schritt 3: Definieren Sie, welche Attribute von den Signaturen ausgeschlossen werden
-
Im folgenden Beispiel wird davon ausgegangen, dass alle
DO_NOTHING
Attribute das eindeutige Präfix ":
" haben, und verwendet dieses Präfix, um die zulässigen Attribute ohne Vorzeichen zu definieren. Der Client geht davon aus, dass alle Attributnamen mit dem Präfix ":
" von den Signaturen ausgeschlossen sind. Weitere Informationen finden Sie unter Allowed unsigned attributes.const String unsignAttrPrefix = ":";
- Schritt 4: Definieren Sie die Konfiguration der DynamoDB-Tabellenverschlüsselung
-
Das folgende Beispiel definiert eine
tableConfigs
Map, die die Verschlüsselungskonfiguration für diese DynamoDB-Tabelle darstellt.In diesem Beispiel wird der DynamoDB-Tabellenname als logischer Tabellenname angegeben. Es wird dringend empfohlen, Ihren DynamoDB-Tabellennamen als logischen Tabellennamen anzugeben, wenn Sie Ihre Verschlüsselungskonfiguration zum ersten Mal definieren. Weitere Informationen finden Sie unter Verschlüsselungskonfiguration in AWS Database Encryption SDK for DynamoDB.
Anmerkung
Um durchsuchbare Verschlüsselung oder signierte Beacons zu verwenden, müssen Sie die auch SearchConfigin Ihre Verschlüsselungskonfiguration aufnehmen.
Dictionary<String, DynamoDbTableEncryptionConfig> tableConfigs = new Dictionary<String, DynamoDbTableEncryptionConfig>(); DynamoDbTableEncryptionConfig config = new DynamoDbTableEncryptionConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix }; tableConfigs.Add(ddbTableName, config);
- Schritt 5: Einen neuen AWS SDK DynamoDB-Client erstellen
-
Im folgenden Beispiel wird ein neuer AWS SDK DynamoDB-Client mit dem
TableEncryptionConfigs
aus Schritt 4 erstellt.var ddb = new Client.DynamoDbClient( new DynamoDbTablesEncryptionConfig { TableEncryptionConfigs = tableConfigs });
- Schritt 6: Verschlüsseln und Signieren eines DynamoDB-Tabellenelements
-
Das folgende Beispiel definiert ein
item
Dictionary, das ein Beispieltabellenelement darstellt und das Element in die DynamoDB-Tabelle einfügt. Das Element wird clientseitig verschlüsselt und signiert, bevor es an DynamoDB gesendet wird.var item = new Dictionary<String, AttributeValue> { ["partition_key"] = new AttributeValue("BasicPutGetExample"), ["sort_key"] = new AttributeValue { N = "0" }, ["attribute1"] = new AttributeValue("encrypt and sign me!"), ["attribute2"] = new AttributeValue("sign me!"), [":attribute3"] = new AttributeValue("ignore me!") }; PutItemRequest putRequest = new PutItemRequest { TableName = ddbTableName, Item = item }; PutItemResponse putResponse = await ddb.PutItemAsync(putRequest);
Verwenden Sie die untergeordnete Ebene DynamoDbItemEncryptor
Das folgende Beispiel zeigt, wie Sie die untergeordnete Ebene DynamoDbItemEncryptor
mit einem AWS KMS Schlüsselbund verwenden, um Tabellenelemente direkt zu verschlüsseln und zu signieren. Das DynamoDbItemEncryptor
fügt das Element nicht in Ihre DynamoDB-Tabelle ein.
Sie können jeden unterstützten Schlüsselbund mit dem DynamoDB Enhanced Client verwenden, wir empfehlen jedoch, wann immer möglich, einen der AWS KMS Schlüsselringe zu verwenden.
Anmerkung
Die untergeordnete Ebene unterstützt keine durchsuchbare Verschlüsselung. DynamoDbItemEncryptor Verwenden Sie die AWS Low-Level-Datenbankverschlüsselung SDK für DynamoDB, um eine durchsuchbare Verschlüsselung API zu verwenden.
Sehen Sie sich das vollständige Codebeispiel an: .cs ItemEncryptDecryptExample
- Schritt 1: Erstellen Sie den Schlüsselbund AWS KMS
-
Im folgenden Beispiel wird
CreateAwsKmsMrkMultiKeyring
ein AWS KMS Schlüsselbund mit einem symmetrischen Verschlüsselungsschlüssel erstellt. KMS DieCreateAwsKmsMrkMultiKeyring
Methode stellt sicher, dass der Schlüsselbund sowohl Schlüssel mit einer Region als auch Schlüssel mit mehreren Regionen korrekt verarbeitet.var matProv = new MaterialProviders(new MaterialProvidersConfig()); var keyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = kmsKeyId }; var kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
- Schritt 2: Konfigurieren Sie Ihre Attributaktionen
-
Das folgende Beispiel definiert ein
attributeActionsOnEncrypt
Wörterbuch, das Beispiele für Attributaktionen für ein Tabellenelement darstellt.Anmerkung
Das folgende Beispiel definiert keine Attribute als
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Wenn SieSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
Attribute angeben, müssen auch die Partitions- und Sortierattribute angegeben werdenSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.var attributeActionsOnEncrypt = new Dictionary<String, CryptoAction> { ["partition_key"] = CryptoAction.SIGN_ONLY, // The partition attribute must be SIGN_ONLY ["sort_key"] = CryptoAction.SIGN_ONLY, // The sort attribute must be SIGN_ONLY ["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN, ["attribute2"] = CryptoAction.SIGN_ONLY, [":attribute3"] = CryptoAction.DO_NOTHING };
- Schritt 3: Definieren Sie, welche Attribute von den Signaturen ausgeschlossen werden
-
Im folgenden Beispiel wird davon ausgegangen, dass alle
DO_NOTHING
Attribute das eindeutige Präfix ":
" haben, und verwendet dieses Präfix, um die zulässigen Attribute ohne Vorzeichen zu definieren. Der Client geht davon aus, dass alle Attributnamen mit dem Präfix ":
" von den Signaturen ausgeschlossen sind. Weitere Informationen finden Sie unter Allowed unsigned attributes.String unsignAttrPrefix = ":";
- Schritt 4: Definieren Sie die
DynamoDbItemEncryptor
Konfiguration -
Das folgende Beispiel definiert die Konfiguration für die
DynamoDbItemEncryptor
.In diesem Beispiel wird der DynamoDB-Tabellenname als logischer Tabellenname angegeben. Es wird dringend empfohlen, Ihren DynamoDB-Tabellennamen als logischen Tabellennamen anzugeben, wenn Sie Ihre Verschlüsselungskonfiguration zum ersten Mal definieren. Weitere Informationen finden Sie unter Verschlüsselungskonfiguration in AWS Database Encryption SDK for DynamoDB.
var config = new DynamoDbItemEncryptorConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix };
- Schritt 5: Erstellen Sie das
DynamoDbItemEncryptor
-
Im folgenden Beispiel wird
DynamoDbItemEncryptor
mit demconfig
aus Schritt 4 ein neues erstellt.var itemEncryptor = new DynamoDbItemEncryptor(config);
- Schritt 6: Verschlüsseln und signieren Sie ein Tabellenelement direkt
-
Im folgenden Beispiel wird ein Element direkt verschlüsselt und signiert mit dem.
DynamoDbItemEncryptor
DasDynamoDbItemEncryptor
fügt das Element nicht in Ihre DynamoDB-Tabelle ein.var originalItem = new Dictionary<String, AttributeValue> { ["partition_key"] = new AttributeValue("ItemEncryptDecryptExample"), ["sort_key"] = new AttributeValue { N = "0" }, ["attribute1"] = new AttributeValue("encrypt and sign me!"), ["attribute2"] = new AttributeValue("sign me!"), [":attribute3"] = new AttributeValue("ignore me!") }; var encryptedItem = itemEncryptor.EncryptItem( new EncryptItemInput { PlaintextItem = originalItem } ).EncryptedItem;