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.
AWS KMS Hierarchische Schlüsselringe
| Unsere clientseitige Verschlüsselungsbibliothek wurde in Database Encryption SDK umbenannt. AWS Dieses Entwicklerhandbuch enthält weiterhin Informationen zum DynamoDB Encryption Client. |
Anmerkung
Seit dem 24. Juli 2023 werden Branch-Schlüssel, die während der Entwicklervorschau erstellt wurden, nicht unterstützt. Erstellen Sie neue Zweigschlüssel, um den Schlüsselspeicher, den Sie in der Entwicklervorschau erstellt haben, weiterhin zu verwenden.
Mit dem AWS KMS hierarchischen Schlüsselbund können Sie Ihre kryptografischen Materialien mit einem KMS-Schlüssel für die symmetrische Verschlüsselung schützen, ohne AWS KMS jedes Mal aufrufen zu müssen, wenn Sie einen Datensatz ver- oder entschlüsseln. Es ist eine gute Wahl für Anwendungen, die möglichst wenige Aufrufe benötigen, und für Anwendungen AWS KMS, die einige kryptografische Materialien wiederverwenden können, ohne ihre Sicherheitsanforderungen zu verletzen.
Beim hierarchischen Schlüsselbund handelt es sich um eine Lösung zum Zwischenspeichern kryptografischer Materialien, die die Anzahl der AWS KMS Aufrufe reduziert, indem AWS KMS geschützte Zweigschlüssel verwendet werden, die in einer Amazon DynamoDB-Tabelle gespeichert sind, und anschließend das für Verschlüsselungs- und Entschlüsselungsvorgänge verwendete Zweigschlüsselmaterial lokal zwischenspeichert. Die DynamoDB-Tabelle dient als Schlüsselspeicher, der Zweigschlüssel verwaltet und schützt. Sie speichert den aktiven Zweigschlüssel und alle früheren Versionen des Zweigschlüssels. Der aktive Filialschlüssel ist die neueste Version des Zweigschlüssels. Der hierarchische Schlüsselbund verwendet für jede Verschlüsselungsanforderung einen eindeutigen Datenverschlüsselungsschlüssel und verschlüsselt jeden Datenverschlüsselungsschlüssel mit einem eindeutigen Umschließungsschlüssel, der vom aktiven Zweigschlüssel abgeleitet wird. Der hierarchische Schlüsselbund hängt von der Hierarchie ab, die zwischen aktiven Zweigschlüsseln und ihren abgeleiteten Umhüllungsschlüsseln eingerichtet wurde.
Der hierarchische Schlüsselbund verwendet in der Regel jede Zweigschlüsselversion, um mehrere Anforderungen zu erfüllen. Sie steuern jedoch, in welchem Umfang aktive Abzweigschlüssel wiederverwendet werden, und bestimmen, wie oft der aktive Abzweigschlüssel rotiert wird. Die aktive Version der Abzweigtaste bleibt aktiv, bis Sie sie Drehe deinen aktiven Filialschlüssel drehen. Frühere Versionen des aktiven Zweigschlüssels werden nicht für Verschlüsselungsvorgänge verwendet, können aber trotzdem abgefragt und bei Entschlüsselungsvorgängen verwendet werden.
Wenn Sie den hierarchischen Schlüsselbund instanziieren, wird ein lokaler Cache erstellt. Sie geben ein Cache-Limit an, das die maximale Zeitdauer definiert, für die die Branch-Key-Materialien im lokalen Cache gespeichert werden, bevor sie ablaufen und aus dem Cache entfernt werden. Der hierarchische Schlüsselbund führt einen AWS KMS Aufruf durch, um den Zweigschlüssel zu entschlüsseln und die Zweigschlüsselmaterialien zusammenzustellen, wenn a zum ersten Mal in einer Operation angegeben branch-key-id wird. Anschließend werden die Zweigschlüsselmaterialien im lokalen Cache gespeichert und für alle Verschlüsselungs- und Entschlüsselungsvorgänge, die dies angeben, wiederverwendet, bis das Cache-Limit abläuft. branch-key-id Das Speichern von Zweigschlüsselmaterial im lokalen Cache reduziert die Anzahl der Aufrufe. AWS KMS Stellen Sie sich beispielsweise ein Cache-Limit von 15 Minuten vor. Wenn Sie 10.000 Verschlüsselungsvorgänge innerhalb dieses Cache-Limits ausführen, müsste der herkömmliche AWS KMS Schlüsselbund 10.000 AWS KMS Aufrufe tätigen, um 10.000 Verschlüsselungsvorgänge abzuwickeln. Wenn Sie einen aktiven Schlüsselbund habenbranch-key-id, muss der hierarchische Schlüsselbund nur einen AWS KMS Aufruf tätigen, um 10.000 Verschlüsselungsvorgänge abzuwickeln.
Der lokale Cache trennt Verschlüsselungsmaterial von Entschlüsselungsmaterial. Das Verschlüsselungsmaterial wird aus dem aktiven Zweigschlüssel zusammengestellt und für alle Verschlüsselungsvorgänge wiederverwendet, bis das Cache-Limit abläuft. Die Entschlüsselungsmaterialien werden aus der Zweigschlüssel-ID und der Version zusammengestellt, die in den Metadaten des verschlüsselten Felds identifiziert sind. Sie werden für alle Entschlüsselungsvorgänge im Zusammenhang mit der Zweigschlüssel-ID und Version wiederverwendet, bis das Cache-Limit abläuft. Der lokale Cache kann mehrere Versionen desselben Zweigschlüssels gleichzeitig speichern. Wenn der lokale Cache für die Verwendung von a konfiguriert istbranch key ID supplier, kann er auch Filialschlüsselmaterial aus mehreren aktiven Zweigschlüsseln gleichzeitig speichern.
Anmerkung
Alle Erwähnungen des hierarchischen Schlüsselbundes im AWS Database Encryption SDK beziehen sich auf den AWS KMS hierarchischen Schlüsselbund.
Themen
Funktionsweise
In den folgenden exemplarischen Vorgehensweisen wird beschrieben, wie der hierarchische Schlüsselbund Verschlüsselungs- und Entschlüsselungsmaterialien zusammenstellt und welche verschiedenen Aufrufe der Schlüsselbund für Verschlüsselungs- und Entschlüsselungsvorgänge ausführt. Technische Details zu den Verfahren zur Ableitung von Wrapping-Schlüsseln und zur Verschlüsselung von Klartext-Datenschlüsseln finden Sie unter Technische Details zum hierarchischen Schlüsselbund. AWS KMS
Verschlüsseln und signieren
In der folgenden exemplarischen Vorgehensweise wird beschrieben, wie der hierarchische Schlüsselbund Verschlüsselungsmaterialien zusammenstellt und daraus einen eindeutigen Umschließungsschlüssel ableitet.
-
Bei der Verschlüsselungsmethode wird der hierarchische Schlüsselbund nach Verschlüsselungsmaterial gefragt. Der Schlüsselbund generiert einen Klartext-Datenschlüssel und prüft dann, ob im lokalen Cache gültige Materialien für Verzweigungsschlüssel vorhanden sind, um den Wrapping-Schlüssel zu generieren. Wenn gültige Materialien für die Zweigschlüssel vorhanden sind, fährt der Schlüsselbund mit Schritt 4 fort.
-
Wenn keine gültigen Materialien für Zweigschlüssel vorhanden sind, fragt der hierarchische Schlüsselbund den Schlüsselspeicher nach dem aktiven Zweigschlüssel ab.
-
Der Schlüsselspeicher ruft AWS KMS zur Entschlüsselung des aktiven Zweigschlüssels auf und gibt den aktiven Zweigschlüssel im Klartext zurück. Daten, die den aktiven Zweigschlüssel identifizieren, werden serialisiert, um zusätzliche authentifizierte Daten (AAD) im Entschlüsselungsaufruf von bereitzustellen. AWS KMS
-
Der Schlüsselspeicher gibt den Zweigschlüssel im Klartext und die ihn identifizierenden Daten zurück, z. B. die Version des Zweigschlüssels.
-
-
Der hierarchische Schlüsselbund stellt die Schlüsselmaterialien der Zweige zusammen (die Version des Zweigschlüssels im Klartext und die Version des Zweigschlüssels) und speichert eine Kopie davon im lokalen Cache.
-
Der hierarchische Schlüsselbund leitet aus dem Zweigschlüssel im Klartext und einem zufälligen 16-Byte-Salt einen eindeutigen Umbruchsschlüssel ab. Er verwendet den abgeleiteten Wrapping-Schlüssel, um eine Kopie des Klartext-Datenschlüssels zu verschlüsseln.
Die Verschlüsselungsmethode verwendet das Verschlüsselungsmaterial, um den Datensatz zu verschlüsseln und zu signieren. Weitere Informationen darüber, wie Datensätze im AWS Database Encryption SDK verschlüsselt und signiert werden, finden Sie unter Verschlüsseln und Signieren.
Entschlüsseln und verifizieren
In der folgenden exemplarischen Vorgehensweise wird beschrieben, wie der hierarchische Schlüsselbund Entschlüsselungsmaterial zusammenstellt und den verschlüsselten Datenschlüssel entschlüsselt.
-
Die Entschlüsselungsmethode identifiziert den verschlüsselten Datenschlüssel aus dem Materialbeschreibungsfeld des verschlüsselten Datensatzes und übergibt ihn an den hierarchischen Schlüsselbund.
-
Der hierarchische Schlüsselbund deserialisiert Daten, die den verschlüsselten Datenschlüssel identifizieren, einschließlich der Version des Zweigschlüssels, des 16-Byte-Salt und anderer Informationen, die beschreiben, wie der Datenschlüssel verschlüsselt wurde.
Weitere Informationen finden Sie unter AWS KMS Technische Details zum hierarchischen Schlüsselbund.
-
Der hierarchische Schlüsselbund überprüft, ob im lokalen Cache gültige Zweigschlüsselmaterialien vorhanden sind, die der in Schritt 2 identifizierten Version des Zweigschlüssels entsprechen. Wenn gültige Materialien für Zweigschlüssel vorhanden sind, fährt der Schlüsselbund mit Schritt 6 fort.
-
Wenn keine gültigen Materialien für Zweigschlüssel vorhanden sind, fragt der hierarchische Schlüsselbund den Schlüsselspeicher nach dem Zweigschlüssel ab, der der in Schritt 2 identifizierten Version des Zweigschlüssels entspricht.
-
Der Schlüsselspeicher ruft AWS KMS auf, um den Zweigschlüssel zu entschlüsseln, und gibt den aktiven Zweigschlüssel im Klartext zurück. Daten, die den aktiven Zweigschlüssel identifizieren, werden serialisiert, um zusätzliche authentifizierte Daten (AAD) im Entschlüsselungsaufruf von bereitzustellen. AWS KMS
-
Der Schlüsselspeicher gibt den Zweigschlüssel im Klartext und die ihn identifizierenden Daten zurück, z. B. die Version des Zweigschlüssels.
-
-
Der hierarchische Schlüsselbund stellt die Schlüsselmaterialien der Zweige zusammen (die Version des Zweigschlüssels im Klartext und die Version des Zweigschlüssels) und speichert eine Kopie davon im lokalen Cache.
-
Der hierarchische Schlüsselbund verwendet das zusammengestellte Zweigschlüsselmaterial und das in Schritt 2 identifizierte 16-Byte-Salt, um den eindeutigen Wrapping-Schlüssel zu reproduzieren, der den Datenschlüssel verschlüsselt hat.
-
Der hierarchische Schlüsselbund verwendet den reproduzierten Wrapping-Schlüssel zur Entschlüsselung des Datenschlüssels und gibt den Klartext-Datenschlüssel zurück.
Die Entschlüsselungsmethode verwendet das Entschlüsselungsmaterial und den Klartext-Datenschlüssel, um den Datensatz zu entschlüsseln und zu verifizieren. Weitere Informationen darüber, wie Datensätze im AWS Database Encryption SDK entschlüsselt und verifiziert werden, finden Sie unter Entschlüsseln und Überprüfen. Entschlüsseln und verifizieren
Voraussetzungen
Bevor Sie einen hierarchischen Schlüsselbund erstellen und verwenden, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind.
-
Sie oder Ihr Schlüsselspeicheradministrator haben einen Schlüsselspeicher und mindestens einen aktiven Filialschlüssel erstellt.
-
Sie haben Ihre Key-Store-Aktionen konfiguriert.
Anmerkung
Wie Sie Ihre Schlüsselspeicheraktionen konfigurieren, bestimmt, welche Operationen Sie ausführen können und welche KMS-Schlüssel der hierarchische Schlüsselbund verwenden kann. Weitere Informationen finden Sie unter Schlüsselspeicher-Aktionen.
-
Sie verfügen über die erforderlichen AWS KMS Berechtigungen, um auf den Schlüsselspeicher und die Filialschlüssel zuzugreifen und diese zu verwenden. Weitere Informationen finden Sie unter Erforderliche Berechtigungen.
-
Sie haben die unterstützten Cachetypen überprüft und den Cachetyp konfiguriert, der Ihren Anforderungen am besten entspricht. Weitere Informationen finden Sie unter Wählen Sie einen Cache.
Erforderliche Berechtigungen
Das AWS Database Encryption SDK benötigt keine AWS-Konto und ist von keiner abhängig AWS-Service. Um jedoch einen hierarchischen Schlüsselbund verwenden zu können, benötigen Sie eine AWS-Konto und die folgenden Mindestberechtigungen für die symmetrische (n) Verschlüsselung AWS KMS key(en) in Ihrem Schlüsselspeicher.
-
Um Daten mit dem hierarchischen Schlüsselbund zu verschlüsseln und zu entschlüsseln, benötigen Sie kms:Decrypt. https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html
-
Um Zweigschlüssel zu erstellen und zu rotieren, benötigen Sie kms: und kms:. GenerateDataKeyWithoutPlaintext ReEncrypt
Weitere Informationen zur Steuerung des Zugriffs auf Ihre Filialschlüssel und Ihren Schlüsselspeicher finden Sie unterImplementieren der geringsten Berechtigungen.
Wählen Sie einen Cache
Der hierarchische Schlüsselbund reduziert die Anzahl der Aufrufe, AWS KMS indem das bei Ver- und Entschlüsselungsvorgängen verwendete Zweigschlüsselmaterial lokal zwischengespeichert wird. Bevor Sie Ihren hierarchischen Schlüsselbund erstellen, müssen Sie entscheiden, welche Art von Cache Sie verwenden möchten. Sie können den Standard-Cache verwenden oder den Cache an Ihre Bedürfnisse anpassen.
Der hierarchische Schlüsselbund unterstützt die folgenden Cachetypen:
Standard-Cache
Für die meisten Benutzer erfüllt der Standard-Cache ihre Threading-Anforderungen. Der Standard-Cache ist so konzipiert, dass er Umgebungen mit hohem Multithreading-Anteil unterstützt. Wenn ein Eintrag für Branch Key Materials abläuft, verhindert der Standard-Cache den Aufruf mehrerer Threads, AWS KMS indem er einen Thread darüber informiert, dass der Eintrag für Branch Key Materials 10 Sekunden im Voraus abläuft. Dadurch wird sichergestellt, dass nur ein Thread eine Anfrage AWS KMS zur Aktualisierung des Caches sendet.
Der Default und die StormTracking Caches unterstützen dasselbe Threading-Modell, aber Sie müssen nur die Eingangskapazität angeben, um den Standard-Cache verwenden zu können. Für detailliertere Cache-Anpassungen verwenden Sie die. StormTracking zwischenspeichern
Sofern Sie nicht die Anzahl der Materialeinträge für Branch Key anpassen möchten, die im lokalen Cache gespeichert werden können, müssen Sie bei der Erstellung des hierarchischen Schlüsselbundes keinen Cachetyp angeben. Wenn Sie keinen Cachetyp angeben, verwendet der hierarchische Schlüsselbund den Standard-Cachetyp und legt die Eintragskapazität auf 1000 fest.
Um den Standard-Cache anzupassen, geben Sie die folgenden Werte an:
-
Eintragskapazität: begrenzt die Anzahl der Materialeinträge für Branch Key, die im lokalen Cache gespeichert werden können.
MultiThreaded Cache
Der MultiThreaded Cache kann sicher in Multithread-Umgebungen verwendet werden, bietet jedoch keine Funktionen zur Minimierung AWS KMS von Amazon DynamoDB-Aufrufen. Daher werden alle Threads gleichzeitig benachrichtigt, wenn ein Eintrag zu Branch Key Materials abläuft. Dies kann zu mehreren AWS KMS Aufrufen zur Aktualisierung des Caches führen.
Um den MultiThreaded Cache zu verwenden, geben Sie die folgenden Werte an:
-
Eintragskapazität: begrenzt die Anzahl der Einträge für Branch Key Materials, die im lokalen Cache gespeichert werden können.
-
Endgröße beim Löschen von Einträgen: Definiert die Anzahl der Einträge, die gelöscht werden sollen, wenn die Eingangskapazität erreicht ist.
StormTracking zwischenspeichern
Der StormTracking Cache ist so konzipiert, dass er Umgebungen mit hohem Multithreading-Anteil unterstützt. Wenn ein Eintrag für Branch Key Materials abläuft, verhindert der StormTracking Cache, dass mehrere Threads aufgerufen AWS KMS werden, indem er einen Thread im Voraus darüber informiert, dass der Branch Key Materials Eintrag abläuft. Dadurch wird sichergestellt, dass nur ein Thread eine Anfrage AWS KMS zum Aktualisieren des Caches sendet.
Um den StormTracking Cache zu verwenden, geben Sie die folgenden Werte an:
-
Eintragskapazität: begrenzt die Anzahl der Einträge für Branch Key Materials, die im lokalen Cache gespeichert werden können.
Standardwert: 1000 Einträge
-
Schnittgröße des Eintrags: Definiert die Anzahl der Einträge für wichtige Materialien aus den Zweigen, die gleichzeitig beschnitten werden sollen.
Standardwert: 1 Eintrag
-
Übergangszeit: Definiert die Anzahl der Sekunden vor Ablauf, in denen versucht wird, die wichtigsten Materialien der Filiale zu aktualisieren.
Standardwert: 10 Sekunden
-
Übergangsintervall: Definiert die Anzahl der Sekunden zwischen Versuchen, die Materialien für die Zweige zu aktualisieren.
Standardwert: 1 Sekunden
-
Fan-Out: Definiert die Anzahl der gleichzeitigen Versuche, die Materialien der Branch Keys zu aktualisieren.
Standardwert: 20 Versuche
-
In Flight Time to Live (TTL): Definiert die Anzahl der Sekunden, bis beim Versuch, die Materialien der Branch Key zu aktualisieren, das Zeitlimit überschritten wird. Jedes Mal, wenn der Cache als Antwort auf a zurückkehrt
NoSuchEntryGetCacheEntry, gilt dieser Abzweigschlüssel als in Betrieb, bis derselbe Schlüssel zusammen mit einemPutCacheEintrag geschrieben wird.Standardwert: 10 Sekunden
-
Schlaf: Definiert die Anzahl der Sekunden, für die ein Thread in den Ruhezustand versetzt werden soll, wenn der Wert überschritten
fanOutwird.Standardwert: 20 Millisekunden
Gemeinsam genutzter Cache
Standardmäßig erstellt der hierarchische Schlüsselbund jedes Mal, wenn Sie den Schlüsselbund instanziieren, einen neuen lokalen Cache. Der gemeinsame Cache kann jedoch dazu beitragen, Speicherplatz zu sparen, indem er es Ihnen ermöglicht, einen Cache über mehrere hierarchische Schlüsselringe hinweg gemeinsam zu nutzen. Anstatt für jeden hierarchischen Schlüsselbund, den Sie instanziieren, einen neuen Cache für kryptografische Materialien zu erstellen, speichert der gemeinsame Cache nur einen Cache im Speicher, der von allen hierarchischen Schlüsselbunden verwendet werden kann, die auf ihn verweisen. Der gemeinsame Cache trägt zur Optimierung der Speichernutzung bei, indem verhindert wird, dass kryptografisches Material über mehrere Schlüsselringe hinweg dupliziert wird. Stattdessen können die hierarchischen Schlüsselringe auf denselben zugrundeliegenden Cache zugreifen, wodurch der gesamte Speicherbedarf reduziert wird.
Wenn Sie Ihren gemeinsamen Cache erstellen, definieren Sie trotzdem den Cachetyp. Sie können einen Standard-Cache oder StormTracking zwischenspeichern als Cachetyp angeben oder einen beliebigen kompatiblen benutzerdefinierten Cache ersetzen. MultiThreaded Cache
Partitionen
Mehrere hierarchische Schlüsselringe können einen einzigen gemeinsamen Cache verwenden. Wenn Sie einen hierarchischen Schlüsselbund mit einem gemeinsamen Cache erstellen, können Sie eine optionale Partitions-ID definieren. Die Partitions-ID unterscheidet, welcher hierarchische Schlüsselbund in den Cache schreibt. Wenn zwei hierarchische Schlüsselringe auf dieselbe Partitions-ID und Zweigschlüssel-ID verweisenlogical key store name, teilen sich die beiden Schlüsselringe dieselben Cache-Einträge im Cache. Wenn Sie zwei hierarchische Schlüsselringe mit demselben gemeinsamen Cache, aber unterschiedlichen Partitions-IDs erstellen, greift jeder Schlüsselbund nur auf die Cache-Einträge von seiner eigenen angegebenen Partition innerhalb des gemeinsamen Caches zu. Die Partitionen fungieren als logische Unterteilungen innerhalb des gemeinsamen Caches, sodass jeder hierarchische Schlüsselbund unabhängig auf seiner eigenen zugewiesenen Partition arbeiten kann, ohne die in der anderen Partition gespeicherten Daten zu beeinträchtigen.
Wenn Sie beabsichtigen, die Cache-Einträge in einer Partition wiederzuverwenden oder gemeinsam zu nutzen, müssen Sie Ihre eigene Partitions-ID definieren. Wenn Sie die Partitions-ID an Ihren hierarchischen Schlüsselbund übergeben, kann der Schlüsselbund die Cache-Einträge, die bereits im gemeinsamen Cache vorhanden sind, wiederverwenden, sodass Sie das Zweigschlüsselmaterial nicht erneut abrufen und autorisieren müssen. Wenn Sie keine Partitions-ID angeben, wird dem Schlüsselbund jedes Mal, wenn Sie den hierarchischen Schlüsselbund instanziieren, automatisch eine eindeutige Partitions-ID zugewiesen.
Die folgenden Verfahren veranschaulichen, wie Sie einen gemeinsamen Cache mit dem Standard-Cachetyp erstellen und ihn an einen hierarchischen Schlüsselbund übergeben.
-
Erstellen Sie mithilfe der Material Providers Library
CryptographicMaterialsCache(MPL) einen(CMC). -
Erstellen Sie ein
CacheTypeObjekt für den gemeinsamen Cache.Übergeben
sharedCryptographicMaterialsCacheSie das in Schritt 1 erstellte Objekt an das neueCacheTypeObjekt. -
Übergeben Sie das
sharedCacheObjekt aus Schritt 2 an Ihren hierarchischen Schlüsselbund.Wenn Sie einen hierarchischen Schlüsselbund mit einem gemeinsamen Cache erstellen, können Sie optional einen definieren, um Cache-Einträge über mehrere hierarchische Schlüsselringe hinweg gemeinsam
partitionIDzu nutzen. Wenn Sie keine Partitions-ID angeben, weist der hierarchische Schlüsselbund dem Schlüsselbund automatisch eine eindeutige Partitions-ID zu.Anmerkung
Ihre hierarchischen Schlüsselringe verwenden dieselben Cache-Einträge in einem gemeinsamen Cache, wenn Sie zwei oder mehr Schlüsselringe erstellen, die auf dieselbe Partitions-ID und Branch-Schlüssel-ID verweisen. logical key store name Wenn Sie nicht möchten, dass sich mehrere Schlüsselringe dieselben Cacheeinträge teilen, müssen Sie für jeden hierarchischen Schlüsselbund eine eindeutige Partitions-ID verwenden.
Im folgenden Beispiel wird ein hierarchischer Schlüsselbund mit einembranch key ID supplier, und einem Cache-Limit von 600 Sekunden erstellt. Weitere Informationen zu den Werten, die in der folgenden hierarchischen Schlüsselbundkonfiguration definiert sind, finden Sie unter. Erstellen Sie einen hierarchischen Schlüsselbund
Erstellen Sie einen hierarchischen Schlüsselbund
Um einen hierarchischen Schlüsselbund zu erstellen, müssen Sie die folgenden Werte angeben:
-
Ein Schlüsselspeicher
Der Schlüsselspeicher, der Ihre Filialschlüssel verwaltet und schützt. Sie müssen Ihren Schlüsselspeicher erstellen und konfigurieren, bevor Sie den hierarchischen Schlüsselbund erstellen. Weitere Informationen finden Sie unter Schlüsselspeicher im AWS Database Encryption SDK.
-
Ein Cache-Limit für die Gültigkeitsdauer (TTL)
Die Zeitspanne in Sekunden, für die ein Eintrag für Branch-Key-Materials im lokalen Cache verwendet werden kann, bevor er abläuft. Das Cache-Limit TTL bestimmt, wie oft der Client anruft, AWS KMS um die Verwendung der Branch-Schlüssel zu autorisieren. Dieser Wert muss größer als null sein. Wenn das Cache-Limit TTL abgelaufen ist, wird der Eintrag nie mehr bedient und wird aus dem lokalen Cache entfernt.
-
Eine Zweigschlüssel-ID
Sie können entweder den statisch konfigurieren
branch-key-id, der einen einzelnen aktiven Filialschlüssel in Ihrem Schlüsselspeicher identifiziert, oder einen Anbieter für die Filialschlüssel-ID angeben.Der Anbieter der Filialschlüssel-ID verwendet die im Verschlüsselungskontext gespeicherten Felder, um zu ermitteln, welcher Filialschlüssel zum Entschlüsseln eines Datensatzes erforderlich ist. Standardmäßig sind nur die Partitions- und Sortierschlüssel im Verschlüsselungskontext enthalten. Sie können die
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXTkryptografische Aktion jedoch verwenden, um zusätzliche Felder in den Verschlüsselungskontext einzubeziehen.Wir empfehlen dringend, für Datenbanken mit mehreren Mandanten, bei denen jeder Mandant seinen eigenen Zweigschlüssel hat, einen Anbieter für Zweigschlüssel-ID zu verwenden. Sie können den Anbieter der Filialschlüssel-ID verwenden, um einen benutzerfreundlichen Namen für Ihre Filialschlüssel-IDs zu erstellen, damit Sie die richtige Filialschlüssel-ID für einen bestimmten Mandanten leicht erkennen können. So können Sie beispielsweise mithilfe des Anzeigenamens auf einen Filialschlüssel verweisen, der
tenant1anstelle von lautetb3f61619-4d35-48ad-a275-050f87e15122.Für Entschlüsselungsvorgänge können Sie entweder einen einzelnen hierarchischen Schlüsselbund statisch konfigurieren, um die Entschlüsselung auf einen einzelnen Mandanten zu beschränken, oder Sie können den Anbieter der Zweigschlüssel-ID verwenden, um zu ermitteln, welcher Mandant für die Entschlüsselung eines Datensatzes verantwortlich ist.
-
(Optional) Ein Cache
Wenn Sie Ihren Cachetyp oder die Anzahl der Einträge für Branch Key Materials, die im lokalen Cache gespeichert werden können, anpassen möchten, geben Sie den Cachetyp und die Eintragskapazität an, wenn Sie den Schlüsselbund initialisieren.
Der hierarchische Schlüsselbund unterstützt die folgenden Cachetypen: Standard, MultiThreaded, StormTracking und Shared. Weitere Informationen und Beispiele zur Definition der einzelnen Cachetypen finden Sie unter. Wählen Sie einen Cache
Wenn Sie keinen Cache angeben, verwendet der hierarchische Schlüsselbund automatisch den Standard-Cachetyp und legt die Eintragskapazität auf 1000 fest.
-
(Optional) Eine Partitions-ID
Wenn Sie die angebenGemeinsam genutzter Cache, können Sie optional eine Partitions-ID definieren. Die Partitions-ID unterscheidet, welcher hierarchische Schlüsselbund in den Cache schreibt. Wenn Sie beabsichtigen, die Cache-Einträge in einer Partition wiederzuverwenden oder gemeinsam zu nutzen, müssen Sie Ihre eigene Partitions-ID definieren. Sie können eine beliebige Zeichenfolge für die Partitions-ID angeben. Wenn Sie keine Partitions-ID angeben, wird dem Schlüsselbund bei der Erstellung automatisch eine eindeutige Partitions-ID zugewiesen.
Weitere Informationen finden Sie unter Partitions.
Anmerkung
Ihre hierarchischen Schlüsselringe verwenden dieselben Cache-Einträge in einem gemeinsamen Cache, wenn Sie zwei oder mehr Schlüsselringe erstellen, die auf dieselbe Partitions-ID und Branch-Schlüssel-ID verweisen. logical key store name Wenn Sie nicht möchten, dass sich mehrere Schlüsselringe dieselben Cacheeinträge teilen, müssen Sie für jeden hierarchischen Schlüsselbund eine eindeutige Partitions-ID verwenden.
-
(Optional) Eine Liste von Grant-Tokens
Wenn Sie den Zugriff auf den KMS-Schlüssel in Ihrem hierarchischen Schlüsselbund mit Zuweisungen kontrollieren, müssen Sie bei der Initialisierung des Schlüsselbundes alle erforderlichen Grant-Token angeben.
Die folgenden Beispiele zeigen, wie ein Schlüsselspeicher mit einer statischen Konfiguration konfiguriert wird. Wählen Sie Ihre bevorzugte Sprache:
Nachdem Sie Ihren Schlüsselspeicher konfiguriert haben, verwenden Sie das resultierende Schlüsselspeicherobjekt, um Ihren hierarchischen Schlüsselbund zu erstellen. In den folgenden Beispielen für hierarchische Schlüsselringe wird das von Ihnen konfigurierte Schlüsselspeicherobjekt verwendet.
Die folgenden Beispiele zeigen, wie Sie einen hierarchischen Schlüsselbund mit einer statischen Zweigschlüssel-ID, demStandard-Cache, und einem Cache-Limit (TTL) von 600 Sekunden erstellen.
Die folgenden Verfahren veranschaulichen, wie Sie einen hierarchischen Schlüsselbund mit einem Lieferanten für die Filialschlüssel-ID erstellen.
-
Erstellen Sie einen Lieferanten mit einer Filialschlüssel-ID
Im folgenden Beispiel werden benutzerfreundliche Namen für die beiden in Schritt 1 erstellten Zweigschlüssel erstellt und die Erstellung eines Branch Key-ID-Anbieters mit dem AWS Database Encryption SDK für den DynamoDB-Client aufgerufen
CreateDynamoDbEncryptionBranchKeyIdSupplier. -
Erstellen Sie einen hierarchischen Schlüsselbund
Die folgenden Beispiele initialisieren einen hierarchischen Schlüsselbund mit dem in Schritt 1 erstellten Anbieter für die Zweigschlüssel-ID, einem TLL für den Cache von 600 Sekunden und einer maximalen Cachegröße von 1000.
Verwendung des hierarchischen Schlüsselbundes für eine durchsuchbare Verschlüsselung
Durchsuchbare VerschlüsselungMit der durchsuchbaren Verschlüsselung können Sie nach verschlüsselten Datensätzen suchen, ohne die gesamte Datenbank zu entschlüsseln. Dies wird erreicht, indem der Klartextwert eines verschlüsselten Felds mit einem Beacon indexiert wird. Leuchtfeuer Um eine durchsuchbare Verschlüsselung zu implementieren, müssen Sie einen hierarchischen Schlüsselbund verwenden.
Bei der CreateKey Schlüsselspeicheroperation werden sowohl ein Abzweigschlüssel als auch ein Beacon-Schlüssel generiert. Der Zweigschlüssel wird für Verschlüsselungs- und Entschlüsselungsvorgänge von Datensätzen verwendet. Der Beacon-Schlüssel wird zum Generieren von Beacons verwendet.
Der Zweigschlüssel und der Beacon-Schlüssel sind durch denselben Schutz geschützt AWS KMS key , den Sie bei der Erstellung Ihres Schlüsselspeicherdienstes angegeben haben. Nachdem der CreateKey Vorgang AWS KMS zur Generierung des Zweigschlüssels aufgerufen hat, ruft er kms: GenerateDataKeyWithoutPlaintext ein zweites Mal auf, um den Beacon-Schlüssel mithilfe der folgenden Anforderung zu generieren.
{ "EncryptionContext": { "branch-key-id" : "branch-key-id", "type" :type, "create-time" : "timestamp", "tablename" : "the logical table name for your key store", "kms-arn" :the KMS key ARN, "hierarchy-version" : 1 }, "KeyId": "the KMS key ARN", "NumberOfBytes": "32" }
Nachdem beide Schlüssel generiert wurden, ruft die CreateKey Operation ddb: TransactWriteItems auf, um zwei neue Elemente zu schreiben, die den Branch Key und den Beacon-Schlüssel in Ihrem Branch Key Store beibehalten.
Wenn Sie ein Standard-Beacon konfigurieren, fragt das AWS Database Encryption SDK den Schlüsselspeicher nach dem Beacon-Schlüssel ab. Anschließend verwendet es eine Funktion zum HMAC-based Extrahieren und Erweitern der Schlüsselableitung (HKDF
Im Gegensatz zu Branch-Schlüsseln gibt es in einem Schlüsselspeicher nur eine Beacon-Schlüsselversion pro Schlüssel. branch-key-id Der Beacon-Schlüssel wird niemals gedreht.
Definieren Sie die Quelle Ihres Beacon-Schlüssels
Wenn Sie die Beacon-Version für Ihre Standard- und Compound-Beacons definieren, müssen Sie den Beacon-Schlüssel identifizieren und eine Cache-Limit Time to Live (TTL) für die Beacon-Schlüsselmaterialien definieren. Die Beacon-Schlüsselmaterialien werden in einem von den Branch-Schlüsseln getrennten lokalen Cache gespeichert. Der folgende Ausschnitt zeigt, wie das keySource für eine Single-Tenant-Datenbank definiert wird. Identifizieren Sie Ihren Beacon-Schlüssel anhand dessen, mit dem branch-key-id er verknüpft ist.
- Definition der Beacon-Quelle in einer Multitenant-Datenbank
-
Wenn Sie eine mehrinstanzenfähige Datenbank haben, müssen Sie bei der Konfiguration der die folgenden Werte angeben.
keySource-
keyFieldName
Definiert den Namen des Feldes, in dem der mit dem Beacon
branch-key-idverknüpfte Schlüssel gespeichert wird, der zur Generierung von Beacons für einen bestimmten Mandanten verwendet wird. DaskeyFieldNamekann eine beliebige Zeichenfolge sein, sie muss jedoch für alle anderen Felder in Ihrer Datenbank eindeutig sein. Wenn Sie neue Datensätze in Ihre Datenbank schreiben, wird der Beacon-Schlüsselbranch-key-id, der zum Generieren von Beacons für diesen Datensatz verwendet wurde, in diesem Feld gespeichert. Sie müssen dieses Feld in Ihre Beacon-Abfragen aufnehmen und die entsprechenden Beacon-Schlüsselmaterialien identifizieren, die für die Neuberechnung des Beacons erforderlich sind. Weitere Informationen finden Sie unter Abfragen von Beacons in einer mandantenfähigen Datenbank. -
Cache/TTL
Die Zeitspanne in Sekunden, für die ein Beacon-Schlüsselmaterial im lokalen Beacon-Cache verwendet werden kann, bevor er abläuft. Dieser Wert muss größer als null sein. Wenn das Cache-Limit TTL abläuft, wird der Eintrag aus dem lokalen Cache entfernt.
-
(Optional) Ein Cache
Wenn Sie Ihren Cachetyp oder die Anzahl der Einträge für Branch Key Materials, die im lokalen Cache gespeichert werden können, anpassen möchten, geben Sie den Cachetyp und die Eintragskapazität an, wenn Sie den Schlüsselbund initialisieren.
Der hierarchische Schlüsselbund unterstützt die folgenden Cachetypen: Standard, MultiThreaded, StormTracking und Shared. Weitere Informationen und Beispiele zur Definition der einzelnen Cachetypen finden Sie unter. Wählen Sie einen Cache
Wenn Sie keinen Cache angeben, verwendet der hierarchische Schlüsselbund automatisch den Standard-Cachetyp und legt die Eintragskapazität auf 1000 fest.
Im folgenden Beispiel wird ein hierarchischer Schlüsselbund mit einer Zweigschlüssel-ID, einem Lieferanten, einem Cache-Limit (TLL) von 600 Sekunden und einer Eingabekapazität von 1000 erstellt.
-