

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.

# Aktualisierung Ihres Datenmodells
<a name="ddb-update-data-model"></a>


****  

|  | 
| --- |
| Unsere clientseitige Verschlüsselungsbibliothek wurde in Database Encryption SDK umbenannt. AWS Dieses Entwicklerhandbuch enthält weiterhin Informationen zum [DynamoDB Encryption Client](legacy-dynamodb-encryption-client.md). | 

Wenn Sie das AWS Database Encryption SDK für DynamoDB konfigurieren, geben Sie [Attributaktionen](concepts.md#crypt-actions) an. Beim Verschlüsseln identifiziert das AWS Database Encryption SDK anhand der Attributaktionen, welche Attribute verschlüsselt und signiert, welche Attribute signiert (aber nicht verschlüsselt) und welche ignoriert werden sollen. Sie definieren auch [zulässige unsignierte Attribute](ddb-java-using.md#allowed-unauth), um dem Client explizit mitzuteilen, welche Attribute von den Signaturen ausgeschlossen sind. Beim Entschlüsseln verwendet das AWS Database Encryption SDK die erlaubten unsignierten Attribute, die Sie definiert haben, um zu identifizieren, welche Attribute nicht in den Signaturen enthalten sind. Attributaktionen werden nicht im verschlüsselten Element gespeichert und das AWS Database Encryption SDK aktualisiert Ihre Attributaktionen nicht automatisch.

Wählen Sie Ihre Attributaktionen sorgfältig aus. Verwenden Sie im Zweifelsfall **Verschlüsseln und signieren**. Nachdem Sie das AWS Database Encryption SDK zum Schutz Ihrer Elemente verwendet haben, können Sie ein `ENCRYPT_AND_SIGN` vorhandenes oder `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` -Attribut nicht mehr in ändern`DO_NOTHING`. `SIGN_ONLY` Sie können jedoch ohne Bedenken die folgenden Änderungen vornehmen.
+ [Fügen Sie neue `ENCRYPT_AND_SIGN``SIGN_ONLY`, und `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribute hinzu](#ddb-add-auth-attribute)
+ [Entfernen Sie vorhandene Attribute](#ddb-remove-attribute)
+ [Ändern Sie ein vorhandenes `ENCRYPT_AND_SIGN` Attribut in `SIGN_ONLY` oder `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`](#ddb-encrypt-to-sign)
+ [Ändern Sie ein vorhandenes `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribut `SIGN_ONLY` oder `ENCRYPT_AND_SIGN`](#ddb-sign-to-encrypt)
+ [Fügen Sie ein neues `DO_NOTHING` Attribut hinzu](#ddb-add-unauth-attribute)
+ [Ändern Sie ein vorhandenes `SIGN_ONLY` Attribut in `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`](#ddb-signOnly-to-signInclude)
+ [Ändern Sie ein vorhandenes `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribut in `SIGN_ONLY`](#ddb-signInclude-to-signOnly)

**Überlegungen zur durchsuchbaren Verschlüsselung**  
Bevor Sie Ihr Datenmodell aktualisieren, sollten Sie sorgfältig überlegen, wie sich Ihre Aktualisierungen auf [Beacons](beacons.md) auswirken könnten, die Sie anhand der Attribute erstellt haben. Nachdem Sie mit einem Beacon neue Datensätze geschrieben haben, können Sie die Konfiguration des Beacons nicht mehr aktualisieren. Sie können die Attributaktionen, die den Attributen zugeordnet sind, die Sie zum Aufbau von Beacons verwendet haben, nicht aktualisieren. Wenn Sie ein vorhandenes Attribut und den zugehörigen Beacon entfernen, können Sie mit diesem Beacon keine vorhandenen Datensätze abfragen. Sie können neue Beacons für neue Felder erstellen, die Sie Ihrem Datensatz hinzufügen, aber Sie können bestehende Beacons nicht so aktualisieren, dass sie das neue Feld aufnehmen.

**Überlegungen zu Attributen `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`**  
Standardmäßig sind die Partitions- und Sortierschlüssel das einzige Attribut, das im Verschlüsselungskontext enthalten ist. Sie könnten erwägen, zusätzliche Felder zu definieren, `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` damit der Anbieter der Branch-Schlüssel-ID für Ihren [AWS KMS hierarchischen Schlüsselbund](use-hierarchical-keyring.md) ermitteln kann, welcher Filialschlüssel für die Entschlüsselung aus dem Verschlüsselungskontext erforderlich ist. Weitere Informationen finden Sie unter Lieferant für die [Filialschlüssel-ID](use-hierarchical-keyring.md#branch-key-id-supplier). Wenn Sie `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribute angeben, müssen auch die Partitions- und Sortierattribute angegeben werden`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.

**Anmerkung**  
Um die `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` kryptografische Aktion verwenden zu können, müssen Sie Version 3.3 oder höher des AWS Database Encryption SDK verwenden. Stellen Sie die neue Version für alle Lesegeräte bereit, bevor [Sie Ihr Datenmodell so aktualisieren](#ddb-update-data-model), dass es diese enthält`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.

## Fügen Sie neue `ENCRYPT_AND_SIGN``SIGN_ONLY`, und `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribute hinzu
<a name="ddb-add-auth-attribute"></a>

Um ein neues `ENCRYPT_AND_SIGN``SIGN_ONLY`, oder `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribut hinzuzufügen, definieren Sie das neue Attribut in Ihren Attributaktionen.

Sie können ein vorhandenes `DO_NOTHING` Attribut nicht entfernen und es als`ENCRYPT_AND_SIGN`,`SIGN_ONLY`, `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` -Attribut wieder hinzufügen.

**Verwenden einer Datenklasse mit Anmerkungen**  
Wenn Sie Ihre Attributaktionen mit a definiert haben`TableSchema`, fügen Sie das neue Attribut Ihrer annotierten Datenklasse hinzu. Wenn Sie keine Attributaktions-Anmerkung für das neue Attribut angeben, verschlüsselt und signiert der Client das neue Attribut standardmäßig (es sei denn, das Attribut ist Teil des Primärschlüssels). Wenn Sie nur das neue Attribut signieren möchten, müssen Sie das neue Attribut mit der `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` Anmerkung `@DynamoDBEncryptionSignOnly` oder hinzufügen.

**Verwenden Sie ein Objektmodell**  
Wenn Sie Ihre Attributaktionen manuell definiert haben, fügen Sie das neue Attribut zu den Attributaktionen in Ihrem Objektmodell hinzu und geben Sie `ENCRYPT_AND_SIGN``SIGN_ONLY`, oder `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` als Attributaktion an.

## Entfernen Sie vorhandene Attribute
<a name="ddb-remove-attribute"></a>

Wenn Sie entscheiden, dass Sie ein Attribut nicht mehr benötigen, können Sie das Schreiben von Daten in dieses Attribut beenden oder es formell aus Ihren Attributaktionen entfernen. Wenn Sie aufhören, neue Daten in ein Attribut zu schreiben, wird das Attribut weiterhin in Ihren Attributaktionen angezeigt. Dies kann hilfreich sein, wenn Sie das Attribut in future erneut verwenden müssen. Wenn Sie das Attribut formal aus Ihren Attributaktionen entfernen, wird es nicht aus Ihrem Datensatz entfernt. Ihr Datensatz wird weiterhin Elemente enthalten, die dieses Attribut enthalten.

Um ein vorhandenes`ENCRYPT_AND_SIGN`, `SIGN_ONLY``SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, oder `DO_NOTHING` Attribut formell zu entfernen, aktualisieren Sie Ihre Attributaktionen.

Wenn Sie ein `DO_NOTHING` Attribut entfernen, dürfen Sie dieses Attribut nicht aus Ihren [zulässigen Attributen ohne Vorzeichen](ddb-java-using.md#allowed-unauth) entfernen. Auch wenn Sie keine neuen Werte mehr in dieses Attribut schreiben, muss der Client trotzdem wissen, dass das Attribut vorzeichenlos ist, um vorhandene Elemente lesen zu können, die das Attribut enthalten.

**Verwenden einer Datenklasse mit Anmerkungen**  
Wenn Sie Ihre Attributaktionen mit a definiert haben`TableSchema`, entfernen Sie das Attribut aus Ihrer annotierten Datenklasse.

**Verwenden Sie ein Objektmodell**  
Wenn Sie Ihre Attributaktionen manuell definiert haben, entfernen Sie das Attribut aus den Attributaktionen in Ihrem Objektmodell.

## Ändern Sie ein vorhandenes `ENCRYPT_AND_SIGN` Attribut in `SIGN_ONLY` oder `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`
<a name="ddb-encrypt-to-sign"></a>

Um ein vorhandenes `ENCRYPT_AND_SIGN` Attribut in `SIGN_ONLY` oder zu ändern`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, müssen Sie Ihre Attributaktionen aktualisieren. Nachdem Sie das Update bereitgestellt haben, kann der Client vorhandene Werte, die in das Attribut geschrieben wurden, verifizieren und entschlüsseln, signiert jedoch nur neue Werte, die in das Attribut geschrieben wurden.

**Anmerkung**  
Überlegen Sie sich sorgfältig Ihre Sicherheitsanforderungen, bevor Sie ein vorhandenes `ENCRYPT_AND_SIGN` Attribut in `SIGN_ONLY` oder `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` ändern. Jedes Attribut, das vertrauliche Daten speichern kann, sollte verschlüsselt werden.

**Verwendung einer annotierten Datenklasse**  
Wenn Sie Ihre Attributaktionen mit einem definiert haben`TableSchema`, aktualisieren Sie das vorhandene Attribut, sodass die `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` Anmerkung `@DynamoDBEncryptionSignOnly` oder in Ihre annotierte Datenklasse aufgenommen wird.

**Verwenden Sie ein Objektmodell**  
Wenn Sie Ihre Attributaktionen manuell definiert haben, aktualisieren Sie die dem vorhandenen Attribut zugeordnete Attributaktion von `ENCRYPT_AND_SIGN` bis `SIGN_ONLY` oder `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` in Ihrem Objektmodell.

## Ändern Sie ein vorhandenes `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribut `SIGN_ONLY` oder `ENCRYPT_AND_SIGN`
<a name="ddb-sign-to-encrypt"></a>

Um ein vorhandenes `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribut `SIGN_ONLY` oder ein Attribut in zu ändern`ENCRYPT_AND_SIGN`, müssen Sie Ihre Attributaktionen aktualisieren. Nachdem Sie das Update bereitgestellt haben, kann der Client die vorhandenen Werte überprüfen, die in das Attribut geschrieben wurden, und verschlüsselt und signiert neue Werte, die in das Attribut geschrieben wurden.

**Verwenden einer Datenklasse mit Anmerkungen**  
Wenn Sie Ihre Attributaktionen mit einem definiert haben`TableSchema`, entfernen Sie die `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` Anmerkung `@DynamoDBEncryptionSignOnly` oder aus dem vorhandenen Attribut.

**Verwenden eines Objektmodells**  
Wenn Sie Ihre Attributaktionen manuell definiert haben, aktualisieren Sie die Attributaktion, die dem Attribut von `SIGN_ONLY` oder `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` nach zugeordnet ist, `ENCRYPT_AND_SIGN` in Ihrem Objektmodell.

## Fügen Sie ein neues `DO_NOTHING` Attribut hinzu
<a name="ddb-add-unauth-attribute"></a>

Um das Fehlerrisiko beim Hinzufügen eines neuen `DO_NOTHING` Attributs zu verringern, empfehlen wir, bei der Benennung Ihrer `DO_NOTHING` Attribute ein eindeutiges Präfix anzugeben und dieses Präfix dann zu verwenden, um Ihre [zulässigen Attribute ohne Vorzeichen](ddb-java-using.md#allowed-unauth) zu definieren.

Sie können kein `ENCRYPT_AND_SIGN` vorhandenes `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribut oder aus Ihrer annotierten Datenklasse entfernen und das Attribut dann wieder als `DO_NOTHING` Attribut hinzufügen. `SIGN_ONLY` Sie können nur völlig neue `DO_NOTHING` Attribute hinzufügen.

Die Schritte, die Sie unternehmen, um ein neues `DO_NOTHING` Attribut hinzuzufügen, hängen davon ab, ob Sie Ihre zulässigen Attribute ohne Vorzeichen explizit in einer Liste oder mit einem Präfix definiert haben.

**Verwenden Sie ein zulässiges Präfix für vorzeichenlose Attribute**  
Wenn Sie Ihre Attributaktionen mit einem definiert haben`TableSchema`, fügen Sie das neue `DO_NOTHING` Attribut mit der Anmerkung zu Ihrer annotierten Datenklasse hinzu. `@DynamoDBEncryptionDoNothing` Wenn Sie Ihre Attributaktionen manuell definiert haben, aktualisieren Sie Ihre Attributaktionen, sodass sie das neue Attribut enthalten. Achten Sie darauf, das neue Attribut explizit mit der `DO_NOTHING` Attributaktion zu konfigurieren. Sie müssen dasselbe eindeutige Präfix in den Namen des neuen Attributs aufnehmen.

**Verwenden Sie eine Liste mit zulässigen Attributen ohne Vorzeichen**

1. Fügen Sie das neue `DO_NOTHING` Attribut zu Ihrer Liste der zulässigen unsignierten Attribute hinzu und stellen Sie die aktualisierte Liste bereit.

1. Stellen Sie die Änderung aus **Schritt 1** bereit.

   Sie können erst mit **Schritt 3** fortfahren, wenn die Änderung auf alle Hosts übertragen wurde, die diese Daten lesen müssen.

1. Fügen Sie das neue `DO_NOTHING` Attribut zu Ihren Attributaktionen hinzu.

   1. Wenn Sie Ihre Attributaktionen mit einem definiert haben`TableSchema`, fügen Sie das neue `DO_NOTHING` Attribut mit der `@DynamoDBEncryptionDoNothing` Anmerkung zu Ihrer annotierten Datenklasse hinzu.

   1. Wenn Sie Ihre Attributaktionen manuell definiert haben, aktualisieren Sie Ihre Attributaktionen, sodass sie das neue Attribut enthalten. Achten Sie darauf, das neue Attribut explizit mit der `DO_NOTHING` Attributaktion zu konfigurieren.

1. Stellen Sie die Änderung aus **Schritt 3** bereit.

## Ändern Sie ein vorhandenes `SIGN_ONLY` Attribut in `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`
<a name="ddb-signOnly-to-signInclude"></a>

Um ein vorhandenes `SIGN_ONLY` Attribut zu ändern`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, müssen Sie Ihre Attributaktionen aktualisieren. Nachdem Sie das Update bereitgestellt haben, kann der Client die vorhandenen Werte überprüfen, die in das Attribut geschrieben wurden, und signiert weiterhin neue Werte, die in das Attribut geschrieben wurden. Neue Werte, die in das Attribut geschrieben werden, werden in den [Verschlüsselungskontext](concepts.md#encryption-context) aufgenommen.

Wenn Sie `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribute angeben, müssen auch die Partitions- und Sortierattribute angegeben werden`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.

**Verwenden Sie eine annotierte Datenklasse**  
Wenn Sie Ihre Attributaktionen mit a definiert haben`TableSchema`, aktualisieren Sie die dem Attribut zugeordnete Attributaktion von `@DynamoDBEncryptionSignOnly` bis`@DynamoDBEncryptionSignAndIncludeInEncryptionContext`.

**Verwenden Sie ein Objektmodell**  
Wenn Sie Ihre Attributaktionen manuell definiert haben, aktualisieren Sie die dem Attribut zugeordnete Attributaktion von `SIGN_ONLY` bis `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` in Ihrem Objektmodell.

## Ändern Sie ein vorhandenes `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribut in `SIGN_ONLY`
<a name="ddb-signInclude-to-signOnly"></a>

Um ein vorhandenes `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribut zu ändern`SIGN_ONLY`, müssen Sie Ihre Attributaktionen aktualisieren. Nachdem Sie das Update bereitgestellt haben, kann der Client die vorhandenen Werte überprüfen, die in das Attribut geschrieben wurden, und signiert weiterhin neue Werte, die in das Attribut geschrieben wurden. Neue Werte, die in das Attribut geschrieben werden, werden nicht in den [Verschlüsselungskontext](concepts.md#encryption-context) aufgenommen.

Bevor Sie ein vorhandenes `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` Attribut in ändern`SIGN_ONLY`, sollten Sie sorgfältig abwägen, wie sich Ihre Aktualisierungen auf die Funktionalität Ihres [Branch Key ID-Anbieters](use-hierarchical-keyring.md#branch-key-id-supplier) auswirken könnten.

**Verwenden einer Datenklasse mit Anmerkungen**  
Wenn Sie Ihre Attributaktionen mit a definiert haben`TableSchema`, aktualisieren Sie die dem Attribut zugeordnete Attributaktion von `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` bis`@DynamoDBEncryptionSignOnly`.

**Verwenden Sie ein Objektmodell**  
Wenn Sie Ihre Attributaktionen manuell definiert haben, aktualisieren Sie die dem Attribut zugeordnete Attributaktion von `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` bis `SIGN_ONLY` in Ihrem Objektmodell.