Durchsuchbare Verschlüsselung für Multitenant-Datenbanken - 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.

Durchsuchbare Verschlüsselung für Multitenant-Datenbanken

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

Um eine durchsuchbare Verschlüsselung in Ihrer Datenbank zu implementieren, müssen Sie einen AWS KMS hierarchischen Schlüsselbund verwenden. Der AWS KMS hierarchische Schlüsselbund generiert, verschlüsselt und entschlüsselt die Datenschlüssel, die zum Schutz Ihrer Datensätze verwendet werden. Er erstellt auch den Beacon-Schlüssel, der zur Generierung von Beacons verwendet wird. Wenn Sie den AWS KMS hierarchischen Schlüsselbund mit Datenbanken mit mehreren Mandanten verwenden, gibt es für jeden Mandanten einen eigenen Branch- und Beacon-Schlüssel. Um verschlüsselte Daten in einer Multitenant-Datenbank abzufragen, müssen Sie die Beacon-Schlüsselmaterialien identifizieren, die zur Generierung des abgefragten Beacons verwendet wurden.

Wenn Sie die Beacon-Version für eine Multitenant-Datenbank definieren, geben Sie eine Liste aller von Ihnen konfigurierten Standard-Beacons, eine Liste aller von Ihnen konfigurierten Verbund-Beacons, eine Beacon-Version und eine an. keySource Sie müssen Ihre Beacon-Schlüsselquelle als eine MultiKeyStore Cache-Gültigkeitsdauer für den lokalen Beacon-Schlüssel-Cache und eine maximale Cachegröße für den lokalen Beacon-Schlüssel-Cache definieren und diese angeben. keyFieldName

Wenn Sie signierte Beacons konfiguriert haben, müssen diese in Ihrem enthalten sein. compoundBeaconList Signierte Beacons sind eine Art von zusammengesetzten Beacons, die komplexe Abfragen von End-Feldern indizieren und ausführen. SIGN_ONLY SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

Java
List<BeaconVersion> beaconVersions = new ArrayList<>(); beaconVersions.add( BeaconVersion.builder() .standardBeacons(standardBeaconList) .compoundBeacons(compoundBeaconList) .version(1) // MUST be 1 .keyStore(branchKeyStoreName) .keySource(BeaconKeySource.builder() .multi(MultiKeyStore.builder() .keyFieldName(keyField) .cacheTTL(6000) .maxCacheSize(10) .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 { Multi = new MultiKeyStore { KeyId = branch-key-id, CacheTTL = 6000, MaxCacheSize = 10 } } } };
keyFieldName

Das keyFieldNamedefiniert den Namen des Felds, in dem der dem Beacon branch-key-id zugeordnete Schlüssel gespeichert wird, der zur Generierung von Beacons für einen bestimmten Mandanten verwendet wurde.

Wenn Sie neue Datensätze in Ihre Datenbank schreiben, wird der Beacon-Schlüsselbranch-key-id, der zur Generierung von Beacons für diesen Datensatz verwendet wurde, in diesem Feld gespeichert.

Standardmäßig keyField ist das ein konzeptionelles Feld, das nicht explizit in Ihrer Datenbank gespeichert wird. Das AWS Database Encryption SDK identifiziert den branch-key-id anhand des verschlüsselten Datenschlüssels in der Materialbeschreibung und speichert den Wert im KonzeptkeyField, sodass Sie in Ihren Compound Beacons und signierten Beacons darauf verweisen können. Da die Materialbeschreibung signiert ist, gilt das Konzept keyField als signiertes Teil.

Sie können das Feld auch als ODER-Feld keyField in Ihre kryptografischen Aktionen aufnehmen, um das SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT Feld explizit in Ihrer Datenbank zu speichern. SIGN_ONLY In diesem Fall müssen Sie das branch-key-id in keyField jedes Mal, wenn Sie einen Datensatz in Ihre Datenbank schreiben, manuell hinzufügen.

Abfragen von Beacons in einer mandantenfähigen Datenbank

Um ein Beacon abzufragen, müssen Sie das keyField in Ihre Abfrage aufnehmen, um die entsprechenden Beacon-Schlüsselmaterialien zu identifizieren, die für die Neuberechnung des Beacons erforderlich sind. Sie müssen den Schlüssel angeben, der dem Beacon branch-key-id zugeordnet ist, der zur Generierung der Beacons für einen Datensatz verwendet wurde. Sie können den Anzeigenamen, der den Namen eines Mandanten identifiziert, nicht branch-key-id in der Branch-Schlüssel-ID angeben. Sie können den auf folgende Weise keyField in Ihre Abfragen einbeziehen.

Zusammengesetzte Beacons

Unabhängig davon, ob Sie sie explizit keyField in Ihren Aufzeichnungen speichern oder nicht, können Sie sie keyField direkt als signierten Teil in Ihre Compound-Beacons aufnehmen. Der keyField signierte Teil muss erforderlich sein.

Wenn Sie beispielsweise ein Verbundsignal aus zwei Feldern erstellen möchtencompoundBeacon, müssen Sie auch das keyField als signierten Teil angeben. encryptedField signedField Auf diese Weise können Sie die folgende Abfrage ausführencompoundBeacon.

compoundBeacon = E_encryptedFieldValue.S_signedFieldValue.K_branch-key-id
Signierte Beacons

Das AWS Database Encryption SDK verwendet Standard- und Verbundbeacons, um durchsuchbare Verschlüsselungslösungen bereitzustellen. Diese Beacons müssen mindestens ein verschlüsseltes Feld enthalten. Das AWS Database Encryption SDK unterstützt jedoch auch signierte Beacons, die vollständig aus Klartext SIGN_ONLY und Feldern konfiguriert werden können. SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

Signierte Beacons können aus einem einzigen Teil aufgebaut werden. Unabhängig davon, ob Sie das explizit keyField in Ihren Aufzeichnungen speichern oder nicht, können Sie daraus ein signiertes Beacon erstellen keyField und es verwenden, um zusammengesetzte Abfragen zu erstellen, die eine Abfrage auf dem keyField signierten Beacon mit einer Abfrage auf einem Ihrer anderen Beacons kombinieren. Sie könnten beispielsweise die folgende Abfrage ausführen.

keyField = K_branch-key-id AND compoundBeacon = E_encryptedFieldValue.S_signedFieldValue

Hilfe zur Konfiguration signierter Beacons finden Sie unter Signierte Beacons erstellen

Fragen Sie direkt auf dem keyField

Wenn Sie das keyField in Ihren kryptografischen Aktionen angegeben und das Feld explizit in Ihrem Datensatz gespeichert haben, können Sie eine zusammengesetzte Abfrage erstellen, die eine Abfrage auf Ihrem Beacon mit einer Abfrage auf dem kombiniert. keyField Sie können eine direkte Abfrage auf dem wählen, keyField wenn Sie ein Standard-Beacon abfragen möchten. Sie könnten beispielsweise die folgende Abfrage ausführen.

keyField = branch-key-id AND standardBeacon = S_standardBeaconValue