Mit dem. NETclientseitige Verschlüsselungsbibliothek für DynamoDB - AWS Datenbankverschlüsselung SDK

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.

Mit dem. NETclientseitige Verschlüsselungsbibliothek für DynamoDB

In diesem Thema werden einige der Funktionen und Hilfsklassen in Version 3 erklärt. x der. NETclientseitige Verschlüsselungsbibliothek für DynamoDB.

Einzelheiten zur Programmierung mit dem. NETClientseitige Verschlüsselungsbibliothek für DynamoDB, siehe. NETBeispiele finden Sie im -dynamodb-Repository unter aws-database-encryption-sdk. GitHub

Elementverschlüssler

Im Kern ist AWS Database Encryption SDK for DynamoDB ein Elementverschlüsseler. Sie können Version 3 verwenden. x der. NETclientseitige Verschlüsselungsbibliothek für DynamoDB zum Verschlüsseln, Signieren, Überprüfen und Entschlüsseln Ihrer DynamoDB-Tabellenelemente auf folgende Weise.

Die AWS Low-Level-Datenbankverschlüsselung SDK für DynamoDB API

Sie können Ihre Tabellenverschlüsselungskonfiguration verwenden, um einen DynamoDB-Client zu erstellen, der Elemente automatisch clientseitig mit Ihren DynamoDB-Anfragen verschlüsselt und signiert. PutItem Sie können diesen Client direkt verwenden, oder Sie können ein Dokumentmodell oder ein Objektpersistenzmodell erstellen.

Sie müssen die AWS Low-Level-Datenbankverschlüsselung SDK für DynamoDB verwenden, um durchsuchbare Verschlüsselung verwenden API zu können.

Die unterste Ebene DynamoDbItemEncryptor

Die untergeordnete Ebene verschlüsselt und signiert oder entschlüsselt und verifiziert Ihre Tabellenelemente DynamoDbItemEncryptor direkt, ohne DynamoDB aufzurufen. Es stellt keine DynamoDB PutItem oder GetItem Anfragen. Sie können beispielsweise die untergeordnete Ebene verwenden, DynamoDbItemEncryptor um ein DynamoDB-Element, das Sie bereits abgerufen haben, direkt zu entschlüsseln und zu verifizieren. Wenn Sie die untergeordnete Ebene verwendenDynamoDbItemEncryptor, empfehlen wir die Verwendung des Low-Level-Programmiermodells, das für die Kommunikation mit AWS SDK for .NET DynamoDB vorgesehen ist.

Die untergeordnete Ebene unterstützt keine durchsuchbare VerschlüsselungDynamoDbItemEncryptor.

Attributaktionen in der AWS Datenbankverschlüsselung SDK für DynamoDB

Attributaktionen bestimmen, welche Attributwerte verschlüsselt und signiert werden, welche nur signiert sind, welche signiert und in den Verschlüsselungskontext aufgenommen werden und welche ignoriert werden.

Um Attributaktionen mit dem zu spezifizieren. NETClient, definieren Sie Attributaktionen manuell mithilfe eines Objektmodells. Geben Sie Ihre Attributaktionen an, indem Sie ein Dictionary Objekt erstellen, in dem die Name-Wert-Paare für Attributnamen und die angegebenen Aktionen stehen.

Geben Sie ENCRYPT_AND_SIGN an, dass ein Attribut verschlüsselt und signiert werden soll. Geben Sie SIGN_ONLY an, dass ein Attribut signiert, aber nicht verschlüsselt werden soll. Geben Sie SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT an, dass ein Attribut signiert und in den Verschlüsselungskontext aufgenommen werden soll. Sie können ein Attribut nicht verschlüsseln, ohne es auch zu signieren. Geben Sie DO_NOTHING an, ob ein Attribut ignoriert werden soll.

Die Partitions- und Sortierattribute müssen entweder SIGN_ONLY oder lautenSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT. Wenn Sie Attribute als definierenSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, müssen dies auch die Partitions- und Sortierattribute seinSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT.

Anmerkung

Nachdem Sie Ihre Attributaktionen definiert haben, müssen Sie definieren, welche Attribute von den Signaturen ausgeschlossen werden. Um das future Hinzufügen neuer Attribute ohne Vorzeichen zu vereinfachen, empfehlen wir, ein eindeutiges Präfix (wie ":„) zu wählen, um Ihre vorzeichenlosen Attribute zu identifizieren. Nehmen Sie dieses Präfix in den Attributnamen für alle Attribute auf, die Sie bei der Definition Ihres DynamoDB-Schemas und Ihrer Attributaktionen markiert DO_NOTHING haben.

Das folgende Objektmodell zeigt, wie SieENCRYPT_AND_SIGN, SIGN_ONLYSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, und DO_NOTHING Attributaktionen mit dem angeben. NETKunde. In diesem Beispiel wird das Präfix ":" verwendet, um DO_NOTHING Attribute zu identifizieren.

Anmerkung

Um die SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT kryptografische Aktion verwenden zu können, müssen Sie Version 3.3 oder höher von AWS Database Encryption SDK verwenden. Stellen Sie die neue Version für alle Lesegeräte bereit, bevor Sie Ihr Datenmodell so aktualisieren, dass es diese enthältSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT.

var attributeActionsOnEncrypt = new Dictionary<string, CryptoAction> { ["partition_key"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, // The partition attribute must be signed ["sort_key"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, // The sort attribute must be signed ["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN, ["attribute2"] = CryptoAction.SIGN_ONLY, ["attribute3"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, [":attribute4"] = CryptoAction.DO_NOTHING };

Verschlüsselungskonfiguration in AWS Database Encryption SDK for DynamoDB

Wenn Sie AWS Database Encryption verwendenSDK, müssen Sie explizit eine Verschlüsselungskonfiguration für Ihre DynamoDB-Tabelle definieren. Die in Ihrer Verschlüsselungskonfiguration erforderlichen Werte hängen davon ab, ob Sie Ihre Attributaktionen manuell oder mit einer annotierten Datenklasse definiert haben.

Der folgende Ausschnitt definiert eine DynamoDB-Tabellenverschlüsselungskonfiguration unter Verwendung der AWS Low-Level-Datenbankverschlüsselung SDK für DynamoDB API und zulässige unsignierte Attribute, die durch ein eindeutiges Präfix definiert sind.

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, // Optional: SearchConfig only required if you use beacons Search = new SearchConfig { WriteVersion = 1, // MUST be 1 Versions = beaconVersions } }; tableConfigs.Add(ddbTableName, config);
Logischer Tabellenname

Ein logischer Tabellenname für Ihre DynamoDB-Tabelle.

Der logische Tabellenname ist kryptografisch an alle in der Tabelle gespeicherten Daten gebunden, um DynamoDB-Wiederherstellungsvorgänge zu vereinfachen. Es wird dringend empfohlen, Ihren DynamoDB-Tabellennamen als logischen Tabellennamen anzugeben, wenn Sie Ihre Verschlüsselungskonfiguration zum ersten Mal definieren. Sie müssen immer denselben logischen Tabellennamen angeben. Damit die Entschlüsselung erfolgreich ist, muss der Name der logischen Tabelle mit dem Namen übereinstimmen, der bei der Verschlüsselung angegeben wurde. Falls sich Ihr DynamoDB-Tabellenname nach dem Wiederherstellen Ihrer DynamoDB-Tabelle aus einer Sicherung ändert, stellt der logische Tabellenname sicher, dass der Entschlüsselungsvorgang die Tabelle weiterhin erkennt.

Zulässige Attribute ohne Vorzeichen

Die DO_NOTHING in Ihren Attributaktionen markierten Attribute.

Die zulässigen Attribute ohne Vorzeichen teilen dem Client mit, welche Attribute von den Signaturen ausgeschlossen sind. Der Client geht davon aus, dass alle anderen Attribute in der Signatur enthalten sind. Beim Entschlüsseln eines Datensatzes bestimmt der Client dann anhand der von Ihnen angegebenen zulässigen Attribute ohne Vorzeichen, welche er überprüfen muss und welche ignoriert werden sollen. Sie können kein Attribut aus Ihren zulässigen Attributen ohne Vorzeichen entfernen.

Sie können die zulässigen Attribute ohne Vorzeichen explizit definieren, indem Sie ein Array erstellen, das alle Ihre DO_NOTHING Attribute auflistet. Sie können bei der Benennung Ihrer DO_NOTHING Attribute auch ein eindeutiges Präfix angeben und das Präfix verwenden, um dem Client mitzuteilen, welche Attribute vorzeichenlos sind. Wir empfehlen dringend, ein eindeutiges Präfix anzugeben, da dies das Hinzufügen eines neuen DO_NOTHING Attributs in der future vereinfacht. Weitere Informationen finden Sie unter Aktualisierung Ihres Datenmodells.

Wenn Sie kein Präfix für alle DO_NOTHING Attribute angeben, können Sie ein allowedUnsignedAttributes Array konfigurieren, das explizit alle Attribute auflistet, von denen der Client erwarten sollte, dass sie nicht signiert sind, wenn er sie bei der Entschlüsselung findet. Sie sollten Ihre erlaubten vorzeichenlosen Attribute nur dann explizit definieren, wenn dies unbedingt erforderlich ist.

Suchkonfiguration (optional)

Das SearchConfig definiert die Beacon-Version.

Der SearchConfig muss angegeben werden, um durchsuchbare Verschlüsselung oder signierte Beacons verwenden zu können.

Algorithm Suite (optional)

Die algorithmSuiteId definiert, welche Algorithmus-Suite die AWS Datenbankverschlüsselung SDK verwendet.

Sofern Sie nicht explizit eine alternative Algorithmus-Suite angeben, SDK verwendet AWS Database Encryption die Standard-Algorithmus-Suite. Die Standard-Algorithmus-Suite verwendet den GCM Algorithmus AES - mit Schlüsselableitung, digitalen Signaturen und Schlüsselzusage. Obwohl die Standard-Algorithmus-Suite wahrscheinlich für die meisten Anwendungen geeignet ist, können Sie auch eine alternative Algorithmussuite wählen. Einige Vertrauensmodelle würden beispielsweise durch eine Algorithmus-Suite ohne digitale Signaturen erfüllt. Hinweise zu den Algorithmus-Suites, die AWS Database Encryption SDK unterstützt, finden Sie unterUnterstützte Algorithmus-Suiten in der AWS Datenbankverschlüsselung SDK.

Um die AESGCMAlgorithmus-Suite ohne ECDSA digitale Signaturen auszuwählen, nehmen Sie den folgenden Ausschnitt in Ihre Tabellenverschlüsselungskonfiguration auf.

AlgorithmSuiteId = DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384

Elemente mit der Datenbankverschlüsselung AWS aktualisieren SDK

Die AWS Datenbankverschlüsselung SDK unterstützt ddb: nicht UpdateItem für Elemente, die verschlüsselte oder signierte Attribute enthalten. Um ein verschlüsseltes oder signiertes Attribut zu aktualisieren, müssen Sie ddb: verwenden. PutItem Wenn Sie in Ihrer PutItem Anfrage denselben Primärschlüssel wie ein vorhandenes Element angeben, ersetzt das neue Element das vorhandene Element vollständig. Sie können ihn auch verwenden CLOBBER, um alle Attribute beim Speichern zu löschen und zu ersetzen, nachdem Sie Ihre Artikel aktualisiert haben.