Verwendung von Beacons - AWS SDK für Datenbankverschlüsselung

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.

Verwendung von Beacons

Unsere clientseitige Verschlüsselungsbibliothek wurde in AWS Database Encryption SDK umbenannt. Dieses Entwicklerhandbuch enthält weiterhin Informationen zum DynamoDB Encryption Client.

Mit Beacons können Sie verschlüsselte Datensätze durchsuchen, ohne die gesamte abgefragte Datenbank zu entschlüsseln. Beacons sind so konzipiert, dass sie in neuen, nicht aufgefüllten Datenbanken implementiert werden können. Jedes Beacon, das in einer vorhandenen Datenbank konfiguriert ist, ordnet nur neue Datensätze zu, die in die Datenbank geschrieben wurden. Beacons werden anhand des Klartextwerts eines Felds berechnet. Sobald das Feld verschlüsselt ist, kann das Beacon keine vorhandenen Daten zuordnen. Nachdem Sie neue Datensätze mit einem Beacon geschrieben haben, können Sie die Konfiguration des Beacons nicht mehr aktualisieren. Sie können jedoch neue Beacons für neue Felder hinzufügen, die Sie Ihrem Datensatz hinzufügen.

Nachdem Sie Ihre Beacons konfiguriert haben, müssen Sie die folgenden Schritte ausführen, bevor Sie beginnen, Ihre Datenbank zu füllen und Abfragen an Ihren Beacons durchzuführen.

  1. Erstellen Sie einen hierarchischen Schlüsselbund AWS KMS

    Um eine durchsuchbare Verschlüsselung zu verwenden, müssen Sie den AWS KMS hierarchischen Schlüsselbund verwenden, um die Datenschlüssel zu generieren, zu verschlüsseln und zu entschlüsseln, die zum Schutz Ihrer Daten verwendet werden.

    Nachdem Sie Ihre Beacons konfiguriert haben, stellen Sie die Voraussetzungen für den hierarchischen Schlüsselbund zusammen und erstellen Sie Ihren hierarchischen Schlüsselbund.

    Weitere Informationen darüber, warum der hierarchische Schlüsselbund erforderlich ist, finden Sie unter Verwenden des hierarchischen Schlüsselbunds für durchsuchbare Verschlüsselung.

  2. Definieren Sie die Beacon-Version

    Geben Sie IhrekeyStore,keySource, eine Liste aller von Ihnen konfigurierten Standard-Beacons, eine Liste aller von Ihnen konfigurierten Verbund-Beacons, eine Liste der verschlüsselten Teile, eine Liste der signierten Teile und eine Beacon-Version an. Sie müssen die 1 Beacon-Version angeben. Hinweise zur Definition Ihres finden Sie keySource unterDefinieren Sie Ihre Beacon-Schlüsselquelle.

    Das folgende Java-Beispiel definiert die Beacon-Version für eine Single-Tenant-Datenbank. Hilfe bei der Definition der Beacon-Version für eine Mehrmandantendatenbank finden Sie unter Durchsuchbare Verschlüsselung für Mehrmandantendatenbanken.

    Java
    List<BeaconVersion> beaconVersions = new ArrayList<>(); beaconVersions.add( BeaconVersion.builder() .standardBeacons(standardBeaconList) .compoundBeacons(compoundBeaconList) .encryptedParts(encryptedPartsList) .signedParts(signedPartsList) .version(1) // MUST be 1 .keyStore(keyStore) .keySource(BeaconKeySource.builder() .single(SingleKeyStore.builder() .keyId(branchKeyId) .cacheTTL(6000) .build()) .build()) .build() );
    C# / .NET
    var beaconVersions = new List<BeaconVersion> { new BeaconVersion { StandardBeacons = standardBeaconList, CompoundBeacons = compoundBeaconList, EncryptedParts = encryptedPartsList, SignedParts = signedPartsList, Version = 1, // MUST be 1 KeyStore = branchKeyStoreName, KeySource = new BeaconKeySource { Single = new SingleKeyStore { KeyId = branch-key-id, CacheTTL = 6000 } } } };
  3. Konfigurieren Sie sekundäre Indizes

    Nachdem Sie Ihre Beacons konfiguriert haben, müssen Sie einen sekundären Index konfigurieren, der die einzelnen Beacons widerspiegelt, bevor Sie in den verschlüsselten Feldern suchen können. Weitere Informationen finden Sie unter Konfiguration sekundärer Indizes mit Beacons.

  4. Definieren Sie Ihre kryptografischen Aktionen

    Alle Felder, die zum Aufbau eines Standard-Beacons verwendet werden, müssen markiert sein. ENCRYPT_AND_SIGN Alle anderen Felder, die zum Bau von Beacons verwendet werden, müssen mit oder markiert SIGN_ONLY sein. SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

  5. Konfigurieren Sie einen AWS Database Encryption SDK-Client

    Informationen zur Konfiguration eines AWS Database Encryption SDK-Clients, der die Tabellenelemente in Ihrer DynamoDB-Tabelle schützt, finden Sie unter Clientseitige Java-Verschlüsselungsbibliothek für DynamoDB.

Beacons abfragen

Der Typ des Beacons, den Sie konfigurieren, bestimmt die Art der Abfragen, die Sie ausführen können. Standard-Beacons verwenden Filterausdrücke, um Gleichheitssuchen durchzuführen. Zusammengesetzte Beacons kombinieren wörtliche Klartext-Zeichenketten und Standard-Beacons, um komplexe Abfragen durchzuführen. Wenn Sie verschlüsselte Daten abfragen, suchen Sie nach dem Namen des Beacons.

Sie können die Werte von zwei Standard-Beacons nicht vergleichen, selbst wenn sie denselben zugrunde liegenden Klartext enthalten. Die beiden Standard-Beacons erzeugen zwei verschiedene HMAC-Tags für dieselben Klartext-Werte. Daher können Standard-Beacons die folgenden Abfragen nicht ausführen.

  • beacon1 = beacon2

  • beacon1 IN (beacon2)

  • value IN (beacon1, beacon2, ...)

  • CONTAINS(beacon1, beacon2)

Compound Beacons können die folgenden Abfragen ausführen.

  • BEGINS_WITH(a), wobei der gesamte Wert des Feldes a wiedergegeben wird, mit dem die zusammengestellte Verbundstation beginnt. Sie können den BEGINS_WITH Operator nicht verwenden, um einen Wert zu identifizieren, der mit einer bestimmten Teilzeichenfolge beginnt. Sie können jedoch, where BEGINS_WITH(S_)S_, das Präfix für ein Teil verwenden, mit dem die zusammengebaute Verbundleuchte beginnt.

  • CONTAINS(a), wobei der gesamte Wert eines Feldes a wiedergegeben wird, das die zusammengebaute Verbundleuchte enthält. Sie können den CONTAINS Operator nicht verwenden, um einen Datensatz zu identifizieren, der eine bestimmte Teilzeichenfolge oder einen Wert innerhalb eines Satzes enthält.

    Sie können beispielsweise keine Abfrage CONTAINS(path, "a" ausführen, die den Wert in einem Satz a widerspiegelt.

  • Sie können signierte Teile von Compound-Beacons vergleichen. Wenn Sie signierte Teile vergleichen, können Sie optional das Präfix eines verschlüsselten Teils an einen oder mehrere signierte Teile anhängen, aber Sie können den Wert eines verschlüsselten Felds nicht in eine Abfrage einbeziehen.

    Sie können beispielsweise signierte Teile vergleichen und nach signedField1 = signedField2 oder value IN (signedField1, signedField2, ...) abfragen.

    Sie können signierte Teile auch mit dem Präfix eines verschlüsselten Bauteils vergleichen, indem Sie auf „Query on“ klickensignedField1.A_ = signedField2.B_.

  • field BETWEEN a AND b, wo a und b sind signierte Teile. Sie können optional das Präfix eines verschlüsselten Teils an einen oder mehrere signierte Teile anhängen, aber Sie können den Wert eines verschlüsselten Felds nicht in eine Abfrage einbeziehen.

Sie müssen das Präfix für jeden Teil angeben, den Sie in eine Abfrage auf einem Compound Beacon einbeziehen. Wenn Sie beispielsweise einen Verbundbeacon aus zwei Feldern encryptedField und signedField erstellt habencompoundBeacon, müssen Sie bei der Abfrage des Beacons die für diese beiden Teile konfigurierten Präfixe angeben.

compoundBeacon = E_encryptedFieldValue.S_signedFieldValue