Konfigurieren Sie eine bestehende DynamoDB-Tabelle für die Verwendung von AWS Database Encryption SDK for 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.

Konfigurieren Sie eine bestehende DynamoDB-Tabelle für die Verwendung von AWS Database Encryption SDK for DynamoDB

Mit Version 3. x der. NETclientseitige Verschlüsselungsbibliothek für DynamoDB. Sie können Ihre vorhandenen Amazon DynamoDB-Tabellen für die clientseitige Verschlüsselung konfigurieren. Dieses Thema enthält Anleitungen zu den drei Schritten, die Sie ausführen müssen, um Version 3 hinzuzufügen. x zu einer vorhandenen, gefüllten DynamoDB-Tabelle.

Schritt 1: Bereiten Sie das Lesen und Schreiben verschlüsselter Elemente vor

Gehen Sie wie folgt vor, um Ihren AWS Database Encryption SDK Client darauf vorzubereiten, verschlüsselte Elemente zu lesen und zu schreiben. Nachdem Sie die folgenden Änderungen vorgenommen haben, liest und schreibt Ihr Client weiterhin Klartext-Elemente. Neue Elemente, die in die Tabelle geschrieben werden, werden nicht verschlüsselt oder signiert, aber es kann verschlüsselte Elemente entschlüsseln, sobald sie erscheinen. Diese Änderungen bereiten den Client darauf vor, mit der Verschlüsselung neuer Elemente zu beginnen. Die folgenden Änderungen müssen auf jedem Lesegerät installiert werden, bevor Sie mit dem nächsten Schritt fortfahren.

1. Definieren Sie Ihre Attributaktionen

Erstellen Sie ein Objektmodell, um zu definieren, welche Attributwerte verschlüsselt und signiert werden, welche nur signiert und welche ignoriert werden.

Standardmäßig sind Primärschlüsselattribute signiert, aber nicht verschlüsselt (SIGN_ONLY), und alle anderen Attribute sind verschlüsselt und signiert (ENCRYPT_AND_SIGN).

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 das 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. Weitere Informationen finden Sie unter Attributaktionen in der AWS Datenbankverschlüsselung SDK für DynamoDB.

Anmerkung

Wenn Sie SIGN_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 };
2. 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 = ":";
3. Erstellen Sie einen Schlüsselbund

Im folgenden Beispiel wird ein AWS KMS Schlüsselbund erstellt. Der AWS KMS Schlüsselbund verwendet symmetrische oder asymmetrische Verschlüsselung, um Datenschlüssel RSA AWS KMS keys zu generieren, zu verschlüsseln und zu entschlüsseln.

In diesem Beispiel wird ein Schlüsselbund CreateMrkMultiKeyring mit einem symmetrischen AWS KMS Verschlüsselungsschlüssel erstellt. KMS Die CreateAwsKmsMrkMultiKeyring 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);
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.

Sie müssen FORCE_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT als Klartext-Override angeben. Diese Richtlinie liest und schreibt weiterhin Klartext-Elemente, liest verschlüsselte Elemente und bereitet den Client darauf vor, verschlüsselte Elemente zu schreiben.

Weitere Hinweise zu den Werten, die in der Konfiguration der Tabellenverschlüsselung enthalten sind, finden Sie unterVerschlüsselungskonfiguration in AWS Database Encryption SDK for DynamoDB.

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, PlaintextOverride = FORCE_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT }; tableConfigs.Add(ddbTableName, config);
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 2: Schreiben Sie verschlüsselte und signierte Elemente

Aktualisieren Sie die Klartext-Richtlinie in Ihrer Tabellenverschlüsselungskonfiguration, damit der Client verschlüsselte und signierte Elemente schreiben kann. Nachdem Sie die folgende Änderung implementiert haben, verschlüsselt und signiert der Client neue Elemente auf der Grundlage der Attributaktionen, die Sie in Schritt 1 konfiguriert haben. Der Client kann Klartext-Elemente sowie verschlüsselte und signierte Elemente lesen.

Bevor Sie mit Schritt 3 fortfahren, müssen Sie alle vorhandenen Klartextelemente in Ihrer Tabelle verschlüsseln und signieren. Es gibt keine einzelne Metrik oder Abfrage, die Sie ausführen können, um Ihre vorhandenen Klartextelemente schnell zu verschlüsseln. Verwenden Sie den Prozess, der für Ihr System am sinnvollsten ist. Sie könnten beispielsweise einen asynchronen Prozess verwenden, der die Tabelle langsam scannt und dann die Elemente mithilfe der von Ihnen definierten Attributaktionen und der Verschlüsselungskonfiguration neu schreibt. Um die Klartext-Elemente in Ihrer Tabelle zu identifizieren, empfehlen wir, nach allen Elementen zu suchen, die nicht die aws_dbe_foot Attribute aws_dbe_head und enthalten, die die AWS Datenbankverschlüsselung den Elementen SDK hinzufügt, wenn sie verschlüsselt und signiert sind.

Im folgenden Beispiel wird die Konfiguration der Tabellenverschlüsselung aus Schritt 1 aktualisiert. Sie müssen die Klartext-Override mit FORBID_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT aktualisieren. Diese Richtlinie liest weiterhin Klartext-Elemente, liest und schreibt aber auch verschlüsselte Elemente. Erstellen Sie einen neuen AWS SDK DynamoDB-Client mit dem aktualisierten. TableEncryptionConfigs

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, PlaintextOverride = FORBID_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT }; tableConfigs.Add(ddbTableName, config);

Schritt 3: Nur verschlüsselte und signierte Elemente lesen

Nachdem Sie alle Ihre Elemente verschlüsselt und signiert haben, aktualisieren Sie die Klartext-Überschreibung in Ihrer Tabellenverschlüsselungskonfiguration, sodass der Client nur verschlüsselte und signierte Elemente lesen und schreiben kann. Nachdem Sie die folgende Änderung implementiert haben, verschlüsselt und signiert der Client neue Elemente auf der Grundlage der Attributaktionen, die Sie in Schritt 1 konfiguriert haben. Der Client kann nur verschlüsselte und signierte Elemente lesen.

Im folgenden Beispiel wird die Konfiguration der Tabellenverschlüsselung aus Schritt 2 aktualisiert. Sie können entweder die Klartext-Override mit der Klartext-Richtlinie aktualisieren FORBID_WRITE_PLAINTEXT_FORBID_READ_PLAINTEXT oder die Klartext-Richtlinie aus Ihrer Konfiguration entfernen. Der Client liest und schreibt standardmäßig nur verschlüsselte und signierte Elemente. Erstellen Sie einen neuen AWS SDK DynamoDB-Client mit dem aktualisierten. TableEncryptionConfigs

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: you can also remove the plaintext policy from your configuration PlaintextOverride = FORBID_WRITE_PLAINTEXT_FORBID_READ_PLAINTEXT }; tableConfigs.Add(ddbTableName, config);