Nutzungshinweise zur Verschlüsselung ruhender Daten in DynamoDB
Beachten Sie Folgendes, wenn Sie die Verschlüsselung ruhender Daten in Amazon DynamoDB verwenden.
Alle Tabellendaten werden verschlüsselt
Die serverseitige Verschlüsselung ruhender Daten ist für alle DynamoDB-Tabellendaten aktiviert und kann nicht deaktiviert werden. Sie können nicht nur eine Teilmenge von Elementen in einer Tabelle verschlüsseln.
Die Verschlüsselung ruhender Daten verschlüsselt Daten nur, während sie auf persistenten Speichermedien statisch (ruhende Daten) sind. Wenn die Datensicherheit für in Übertragung befindliche oder genutzte Daten wichtig ist, müssen Sie ggf. zusätzliche Maßnahmen ergreifen:
-
Daten während der Übertragung: Alle Ihre Daten in DynamoDB werden während der Übertragung verschlüsselt. Standardmäßig verwenden Mitteilungen an und von DynamoDB das HTTPS-Protokoll, das den Netzwerkverkehr mittels Secure-Sockets-Layer-(SSL)-/Transport-Layer-Security-(TLS)-Verschlüsselung schützt.
-
Genutzte Daten: Schützen Sie Daten durch Client-seitige Verschlüsselung, bevor sie an DynamoDB gesendet werden. Weitere Informationen finden Sie unter Client- und serverseitige Verschlüsselung im Entwicklerhandbuch für Amazon DynamoDB Encryption Client.
Sie können Streams mit verschlüsselten Tabellen verwenden. DynamoDB-Streams werden immer mit einem Verschlüsselungsschlüssel auf Tabellenebene verschlüsselt. Weitere Informationen finden Sie unter Ändern Sie die Datenerfassung für DynamoDB Streams.
DynamoDB-Backups werden verschlüsselt. Für die Tabelle, die aus einem Backup wiederhergestellt wird, ist die Verschlüsselung ebenfalls aktiviert. Sie können einen AWS-eigener Schlüssel, Von AWS verwalteter Schlüssel oder einen kundenverwalteten Schlüssel zum Verschlüsseln der Backupdaten verwenden. Weitere Informationen finden Sie unter Backup und Wiederherstellung für DynamoDB.
Lokale Sekundärindizes und globale Sekundärindizes werden mit dem gleichen Schlüssel wie die Basistabelle verschlüsselt.
Verschlüsselungstypen
Anmerkung
Vom Kunden verwaltete Schlüssel werden in der globalen Tabelle Version 2017 nicht unterstützt. Wenn Sie einen vom Kunden verwalteten Schlüssel in einer globalen DynamoDB-Tabelle verwenden möchten, müssen Sie die Tabelle auf Version 2019 aktualisieren und dann aktivieren.
In der AWS Management Console lautet der Verschlüsselungstyp KMS, wenn Sie Ihre Daten mit dem Von AWS verwalteter Schlüssel oder dem kundenverwalteten Schlüssel verschlüsseln. Der Verschlüsselungstyp lautet DEFAULT, wenn Sie den AWS-eigener Schlüssel verwenden. In der Amazon DynamoDB-API lautet der Verschlüsselungstyp KMS, wenn Sie den Von AWS verwalteter Schlüssel oder den kundenverwalteten Schlüssel verwenden. Wenn kein Verschlüsselungstyp angegeben wird, werden Ihre Daten mit dem AWS-eigener Schlüssel verschlüsselt. Sie können jederzeit zwischen dem AWS-eigener Schlüssel, Von AWS verwalteter Schlüssel und dem kundenverwalteten Schlüssel wechseln. Sie können die Konsole, die AWS Command Line Interface (AWS CLI) oder die Amazon-DynamoDB-API benutzen, um die Verschlüsselungsschlüssel zu wechseln.
Beachten Sie die folgenden Einschränkungen bei Verwendung kundenverwalteter Schlüssel:
-
Sie können einen kundenverwalteten Schlüssel nicht mit den DynamoDB-Accelerator (DAX)-Clustern verwenden. Weitere Informationen finden Sie unter DAX-Verschlüsselung im Ruhezustand.
-
Sie können einen kundenverwalteten Schlüssel nutzen, um Tabellen zu verschlüsseln, die Transaktionen verwenden. Um jedoch die Dauerhaftigkeit für die Weitergabe von Transaktionen zu gewährleisten, wird eine Kopie der Transaktionsanforderung vom Dienst vorübergehend gespeichert und mit einem AWS-eigener Schlüssel verschlüsselt. Festgeschriebene Daten in Ihren Tabellen und sekundären Indizes werden im Ruhezustand immer mit Ihrem kundenverwalteten Schlüssel verschlüsselt.
-
Sie können einen kundenverwalteten Schlüssel nutzen, um Tabellen zu verschlüsseln, die Contributor Insights verwenden. Daten, die an Amazon CloudWatch übertragen werden, werden jedoch mit einem AWS-eigener Schlüssel verschlüsselt.
-
Wenn Sie zu einem neuen, kundenverwalteten Schlüssel wechseln, sollten Sie den ursprünglichen Schlüssel aktiviert lassen, bis der Vorgang abgeschlossen ist. AWS benötigt weiterhin den ursprünglichen Schlüssel, um die Daten zu entschlüsseln, bevor sie mit dem neuen Schlüssel verschlüsselt werden. Der Vorgang ist abgeschlossen, wenn der SSEDescription-Status der Tabelle ENABLED ist und der KmsMasterKeyArn des neuen kundenverwalteten Schlüssels angezeigt wird. Zu diesem Zeitpunkt kann der ursprüngliche Schlüssel deaktiviert oder zum Löschen eingeplant werden.
-
Sobald der neue kundenverwaltete Schlüssel angezeigt wird, werden die Tabelle und alle neuen On-Demand-Backups mit dem neuen Schlüssel verschlüsselt.
-
Alle vorhandenen On-Demand-Backups bleiben mit dem kundenverwalteten Schlüssel verschlüsselt, der beim Erstellen dieser Backups verwendet wurde. Sie benötigen denselben Schlüssel, um diese Backups wiederherzustellen. Sie können den Schlüssel für den Zeitraum identifizieren, in dem jedes Backup erstellt wurde, indem Sie die DescribeBackup-API verwenden, um die SSEDescription dieses Backups anzuzeigen.
-
Wenn Sie den kundenverwalteten Schlüssel deaktivieren oder zum Löschen vorsehen, gilt für alle Daten in DynamoDB Streams weiterhin eine 24-stündige Lebensdauer. Nicht abgerufene Daten, die älter als 24 Stunden sind, können jederzeit entfernt werden.
-
Wenn Sie den kundenverwalteten Schlüssel deaktivieren oder zum Löschen planen, werden Time-to-Live (TTL)-Löschungen für 30 Minuten fortgesetzt. Diese TTL-Löschungen werden weiterhin an DynamoDB Streams ausgegeben und unterliegen dem standardmäßigen Trimm-/Aufbewahrungsintervall.
Weitere Informationen finden Sie unter Aktivieren von Schlüsseln und Löschen von Schlüsseln.
Verwenden von KMS-Schlüsseln und Datenschlüsseln
Die DynamoDB-Funktion für Verschlüsselung im Ruhezustand verwendet einen AWS KMS key und eine Hierarchie von Datenschlüsseln, um Ihre Tabellendaten zu schützen. DynamoDB verwendet die gleiche Schlüsselhierarchie zum Schutz von DynamoDB-Streams, globalen Tabellen und Backups, wenn sie auf beständige Medien geschrieben werden.
Wir empfehlen Ihnen, Ihre Verschlüsselungsstrategie zu planen, bevor Sie Ihre Tabelle in DynamoDB implementieren. Wenn Sie sensible oder vertrauliche Daten in DynamoDB speichern, sollten Sie erwägen, eine clientseitige Verschlüsselung in Ihren Plan aufzunehmen. Auf diese Weise können Sie Daten so nah wie möglich an ihrem Ursprung verschlüsseln und den Schutz der Daten während ihres gesamten Lebenszyklus gewährleisten. Weitere Informationen finden Sie in der Dokumentation zum DynamoDB-Verschlüsselungsclient.
- AWS KMS key
-
Die Verschlüsselung im Ruhezustand schützt Ihre DynamoDB-Tabellen mit einem AWS KMS key. Standardmäßig verwendet DynamoDB einen AWS-eigener Schlüssel, einen Mehrmandanten-Verschlüsselungsschlüssel, der in einem DynamoDB-Servicekonto erstellt und verwaltet wird. Sie können Ihre DynamoDB-Tabellen jedoch mit einem vom Kunden verwalteten Schlüssel für DynamoDB (
aws/dynamodb) in Ihrem AWS-Konto verschlüsseln. Sie können für jede Tabelle einen anderen KMS-Schlüssel auswählen. Der KMS-Schlüssel, den Sie für eine Tabelle auswählen, wird auch zur Verschlüsselung der lokalen und globalen sekundären Indizes, Streams und Backups verwendet.Sie wählen den KMS-Schlüssel für eine Tabelle aus, wenn Sie die Tabelle erstellen oder aktualisieren. Sie können den KMS-Schlüssel für eine Tabelle jederzeit entweder in der DynamoDB-Konsole oder mithilfe der UpdateTable-Operation ändern. Der Vorgang des Schlüsselwechsels ist nahtlos und erfolgt ohne Ausfallzeiten oder Beeinträchtigung des Service.
Wichtig
DynamoDB unterstützt nur symmetrische KMS-Schlüssel. Sie können keinen asymmetrischen KMS-Schlüssel verwenden, um Ihre DynamoDB-Tabellen zu verschlüsseln.
Verwenden Sie einen kundenverwalteten KMS-Schlüssel, um die folgenden Funktionen zu erhalten:
-
Sie erstellen und verwalten den KMS-Schlüssel, einschließlich der Einstellung der Schlüsselrichtlinien, IAM-Richtlinien und Erteilungen, um den Zugriff auf den KMS-Schlüssel zu steuern. Sie können den KMS-Schlüssel aktivieren und deaktivieren, die automatische Schlüsseldrehung aktivieren und deaktivieren und den KMS-Schlüssel löschen, wenn er nicht mehr verwendet wird.
-
Sie können einen kundenverwalteten Schlüssel mit importiertem Schlüsselmaterial oder einen kundenverwalteten Schlüssel in einem benutzerdefinierten Schlüsselspeicher verwenden, den Sie besitzen und verwalten.
-
Sie können die Verschlüsselung und Entschlüsselung Ihrer DynamoDB-Tabelle durch Untersuchen der DynamoDB-API-Aufrufe an AWS KMS in AWS CloudTrail-Protokollen überprüfen.
Verwenden Sie den Von AWS verwalteter Schlüssel, wenn Sie eine der folgenden Funktionen benötigen:
-
Sie können den KMS-Schlüssel anzeigen und seine Schlüsselrichtlinie anzeigen. (Sie können die Schlüsselrichtlinie nicht ändern.)
-
Sie können die Verschlüsselung und Entschlüsselung Ihrer DynamoDB-Tabelle durch Untersuchen der DynamoDB-API-Aufrufe an AWS KMS in AWS CloudTrail-Protokollen überprüfen.
Der AWS-eigener Schlüssel ist jedoch kostenlos und seine Verwendung zählt nicht auf Ressourcen- oder Anforderungskontingente von AWS KMS. Bei kundenverwalteten Schlüsseln und Von AWS verwaltete Schlüssel fällt für jeden API-Aufruf eine Gebühr an
und für diese KMS-Schlüssel gelten AWS KMS-Kontingente. -
- Tabellenschlüssel
-
DynamoDB verwendet den KMS-Schlüssel, der als Tabellenschlüssel bezeichnet wird, zum Generieren und Verschlüsseln eines eindeutigen Datenschlüssels für die Tabelle. Der Tabellenschlüssel bleibt für die Lebensdauer der verschlüsselten Tabelle bestehen.
Der Tabellenschlüssel wird als Schlüssel-Verschlüsselungsschlüssel verwendet. DynamoDB verwendet diesen Tabellenschlüssel zum Schutz von Daten-Verschlüsselungsschlüsseln, die zum Verschlüsseln der Tabellendaten verwendet werden. DynamoDB generiert einen eindeutigen Datenverschlüsselungsschlüssel für jede zugrunde liegende Struktur in einer Tabelle, mehrere Tabellenelemente können jedoch vom gleichen Datenverschlüsselungsschlüssel geschützt werden.
Wenn Sie zum ersten Mal auf eine verschlüsselte Tabelle zugreifen, sendet DynamoDB eine Anforderung an AWS KMS, um den KMS-Schlüssel zum Entschlüsseln des Tabellenschlüssels zu verwenden. Anschließend wird der Klartext-Tabellenschlüssel zum Entschlüsseln der Datenverschlüsselungsschlüssel verwendet und die Klartext-Datenverschlüsselungsschlüssel werden zum Entschlüsseln der Tabellendaten verwendet.
DynamoDB generiert, verwendet und speichert den Tabellenschlüssel und die Datenverschlüsselungsschlüssel außerhalb von AWS KMS. Alle Schlüssel werden mit Advanced Encryption Standard
(AES)-Verschlüsselung und 256-Bit-Verschlüsselungsschlüsseln geschützt. Anschließend werden die verschlüsselten Schlüssel zusammen mit den verschlüsselten Daten gespeichert, damit sie bei Bedarf für die Entschlüsselung der Tabellendaten verfügbar sind. Wenn Sie den KMS-Schlüssel für Ihre Tabelle ändern, generiert DynamoDB einen neuen Tabellenschlüssel. Anschließend wird der neue Tabellenschlüssel verwendet, um die Datenverschlüsselungsschlüssel neu zu verschlüsseln.
- Tabellenschlüssel-Caching
-
Damit AWS KMS nicht für jede DynamoDB-Operation aufgerufen wird, speichert DynamoDB die Klartext-Tabellenschlüssel für jeden Aufrufer zwischen. Wenn bei DynamoDB nach fünf Minuten Inaktivität der zwischengespeicherte Tabellenschlüssel angefordert wird, sendet es eine neue Anforderung zum Entschlüsseln des Tabellenschlüssels an AWS KMS. Dieser Aufruf erfasst alle Änderungen, die in AWS KMS oder AWS Identity and Access Management (IAM) seit der letzten Anforderung zum Entschlüsseln des Tabellenschlüssels an den Zugriffsrichtlinien des KMS-Schlüssels vorgenommen wurden.
Autorisieren der Nutzung Ihres KMS-Schlüssels
Wenn Sie einen kundenverwalteten Schlüssel oder den Von AWS verwalteter Schlüssel-verwalteten Schlüssel in Ihrem Konto zum Schutz Ihrer DynamoDB-Tabelle verwenden, müssen die Richtlinien für diesen KMS-Schlüssel DynamoDB zu seiner Verwendung in Ihrem Namen berechtigen. Der Autorisierungskontext auf dem Von AWS verwalteter Schlüssel für DynamoDB enthält seine Schlüsselrichtlinie und Erteilungen, mit denen die Berechtigungen zu seiner Nutzung delegiert werden.
Sie haben die volle Kontrolle über die Richtlinien und Erteilungen für einen kundenverwalteten Schlüssel. Nachdem der Von AWS verwalteter Schlüssel in Ihrem Konto ist, können Sie die seine Richtlinien und Erteilungen anzeigen. Da er aber von AWS verwaltet wird, können Sie die Richtlinien nicht ändern.
DynamoDB benötigt keine zusätzliche Autorisierung für die Verwendung des standardmäßigen AWS-eigener Schlüssel zum Schutz der DynamoDB-Tabellen in Ihrem AWS-Konto.
Themen
Schlüsselrichtlinie für einen Von AWS verwalteter Schlüssel
Wenn DynamoDB den Von AWS verwalteter Schlüssel für DynamoDB (aws/dynamodb) in kryptografischen Operationen verwendet, geschieht dies im Auftrag des Benutzers, der auf die DynamoDB-Ressource zugreift. Die Schlüsselrichtlinie auf dem Von AWS verwalteter Schlüssel erteilt allen Benutzern im Konto die Berechtigung zum Verwenden des Von AWS verwalteter Schlüssel für bestimmte Operationen. Die Berechtigung wird aber nur gewährt, wenn DynamoDB die Anforderung für den Benutzer ausgibt. Die ViaService-Bedingung in der Schlüsselrichtlinie erlaubt einem Benutzer nur dann die Verwendung des Von AWS verwalteter Schlüssel, wenn die Anforderung von dem DynamoDB-Service stammt.
Diese Schlüsselrichtlinie wird – wie die Richtlinien aller Von AWS verwaltete Schlüssel – von AWS festgelegt. Sie können sie nicht ändern, aber jederzeit anzeigen. Details dazu finden Sie unter Anzeigen einer Schlüsselrichtlinie.
Die Richtlinienanweisungen in der Schlüsselrichtlinie haben folgende Wirkungen:
-
Benutzer im Konto dürfen den Von AWS verwalteter Schlüssel für kryptografische Operationen verwenden, wenn die Anforderung von DynamoDB in ihrem Namen ergeht. Die Richtlinie erlaubt Benutzern auch das Erstellen von Erteilungen für den KMS-Schlüssel.
-
Ermöglicht es autorisierten IAM-Identitäten im Konto, die Eigenschaften des Von AWS verwalteter Schlüssel für DynamoDB anzuzeigen und die Erteilung zu widerrufen, die DynamoDB die Verwendung des KMS-Schlüssels erlaubt. DynamoDB verwendet Erteilungen für laufende Wartungsoperationen.
-
Erlaubt DynamoDB das Ausführen von schreibgeschützten Operationen, um den Von AWS verwalteter Schlüssel für DynamoDB in Ihrem Konto zu suchen.
Schlüsselrichtlinie für einen kundenverwalteten Schlüssel
Wenn Sie einen kundenverwalteten KMS-Schlüssel zum Schutz einer DynamoDB-Tabelle auswählen, erhält DynamoDB die Berechtigung, den KMS-Schlüssel im Namen des Prinzipals zu verwenden, der die Auswahl trifft. Dieser Prinzipal, ein Benutzer oder eine Rolle, muss über die Berechtigungen für den KMS-Schlüssel verfügen, die DynamoDB benötigt. Sie können diese Berechtigungen in einer Schlüsselrichtlinie, einer IAM-Richtlinie oder einer Erteilung bereitstellen.
DynamoDB erfordert mindestens die folgenden Berechtigungen für einen kundenverwalteten Schlüssel:
-
kms:ReEncrypt* (für kms:ReEncryptFrom und kms:ReEncryptTo)
-
kms:GenerateDataKey* (für kms:GenerateDataKey und kms:GenerateDataKeyWithoutPlaintext)
Beispielsweise bietet die folgende Beispiel-Schlüsselrichtlinie nur die erforderlichen Berechtigungen. Die Richtlinie hat folgende Auswirkungen:
-
Erlaubt DynamoDB die Verwendung des KMS-Schlüssels in kryptografischen Operationen und das Erstellen von Erteilungen, jedoch nur, wenn es im Auftrag von Prinzipalen im Konto handelt, die über die Berechtigung zur Verwendung von DynamoDB verfügen. Wenn die in der Richtlinienanweisung angegebenen Prinzipale nicht zur Verwendung von DynamoDB berechtigt sind, schlägt der Aufruf selbst dann fehl, wenn er vom DynamoDB-Service stammt.
-
Der Bedingungsschlüssel kms:ViaService erlaubt die Berechtigungen nur, wenn die Anforderung von DynamoDB im Auftrag der in der Richtlinienanweisung aufgeführten Prinzipale stammt. Diese Prinzipale können diese Operationen nicht direkt aufrufen. Beachten Sie, dass der
kms:ViaService-Wert,dynamodb.*.amazonaws.com, in der Region-Position ein Sternchen (*) hat. DynamoDB benötigt die Berechtigung, unabhängig von einer bestimmten AWS-Region zu sein, damit es regionsübergreifende Aufrufe zur Unterstützung von globalen DynamoDB-Tabellen ausführen kann. -
Gewährt den KMS-Schlüsseladministratoren (Benutzer, die die
db-team-Rolle annehmen können) schreibgeschützten Zugriff auf den KMS-Schlüssel und die Berechtigung, Erteilungen zu widerrufen, einschließlich der Erteilungen, die DynamoDB zum Schutz der Tabelle benötigt.
Bevor Sie eine Beispiel-Schlüsselrichtlinie verwenden, ersetzen Sie die Beispiel-Prinzipale durch tatsächliche Prinzipale aus Ihrem AWS-Konto.
Verwenden von Erteilungen zum Autorisieren von DynamoDB
Zusätzlich zu den Schlüsselrichtlinien verwendet DynamoDB Erteilungen, um Berechtigungen für einen kundenverwalteten KMS-Schlüssel oder den Von AWS verwalteter Schlüssel-verwalteten Schlüssel für DynamoDB festzulegen (aws/dynamodb). Um die Erteilungen für den KMS-Schlüssel in Ihrem Konto anzuzeigen, verwenden Sie die ListGrants-Operation. DynamoDB benötigt keine Erteilungen oder zusätzliche Berechtigungen, um die AWS-eigener Schlüssel zum Schutz Ihrer Tabellen zu verwenden.
DynamoDB verwendet die Berechtigungen aus der Erteilung zur Ausführung von Hintergrundsystemwartung und kontinuierlichen Datenschutzaufgaben. Außerdem werden Erteilungen verwenden, um Tabellenschlüssel zu generieren.
Jede Erteilung ist tabellenspezifisch. Wenn in Ihrem Konto mehrere Tabellen mit demselben KMS-Schlüssel verschlüsselt sind, ist eine Erteilung für jede Art von Tabelle vorhanden. Die Erteilung wird durch den DynamoDB-Verschlüsselungskontext beschränkt, der den Tabellennamen und die AWS-Konto-ID enthält sowie eine Berechtigung zum Aufheben der Erteilung, wenn diese nicht mehr benötigt wird.
Zum Erstellen von Erteilungen muss DynamoDB zum Aufrufen von CreateGrant im Auftrag des Benutzers berechtigt sein, der die verschlüsselte Tabelle erstellt hat. Für Von AWS verwaltete Schlüssel erhält DynamoDB die kms:CreateGrant-Berechtigung von der Schlüsselrichtlinie. Sie erlaubt Kontobenutzern nur dann das Aufrufen von CreateGrant für den KMS-Schlüssel, wenn DynamoDB die Anforderung im Auftrag eines autorisierten Benutzers ausgibt.
Die Schlüsselrichtlinie kann es dem Konto auch erlauben, die Erteilung für den KMS-Schlüssel zu widerrufen. Wenn Sie jedoch die Erteilung für eine aktive verschlüsselte Tabelle widerrufen, kann DynamoDB die Tabelle nicht mehr schützen und pflegen.
DynamoDB-Verschlüsselungsclient
Ein Verschlüsselungskontext ist eine Gruppe von Schlüssel/Wert-Paaren mit willkürlichen, nicht geheimen Daten. Wenn Sie einen Verschlüsselungskontext in eine Anforderung zur Verschlüsselung von Daten aufnehmen, bindet AWS KMS den Verschlüsselungskontext kryptografisch an die verschlüsselten Daten. Zur Entschlüsselung der Daten müssen Sie denselben Verschlüsselungskontext übergeben.
DynamoDB verwendet in allen kryptografischen AWS KMS-Operationen denselben Verschlüsselungskontext. Wenn Sie einen kundenverwalteten Schlüssel oder einen Von AWS verwalteter Schlüssel-verwalteten Schlüssel zum Schutz Ihrer DynamoDB-Tabelle verwenden, können Sie anhand des Verschlüsselungskontexts die Verwendung des KMS-Schlüssels in Prüfungs-Datensätzen und -Protokollen identifizieren. Außerdem wird er als Klartext in Protokolle wie AWS CloudTrail und Amazon CloudWatch Logs aufgenommen.
Der Verschlüsselungskontext kann auch als Bedingung für die Autorisierung in Richtlinien und Erteilungen verwendet werden. DynamoDB verwendet den Verschlüsselungskontext, um die Erteilungen, die den Zugriff auf den kundenverwalteten Schlüssel oder Von AWS verwalteter Schlüssel in Ihrem Konto und in Ihrer Region erlauben.
In den Anforderungen an AWS KMS verwendet DynamoDB einen Verschlüsselungskontext mit zwei Schlüssel-Wert-Paaren.
"encryptionContextSubset": { "aws:dynamodb:tableName": "Books" "aws:dynamodb:subscriberId": "111122223333" }
-
Tabelle: Das erste Schlüssel-Wert-Paar gibt die Tabelle an, die DynamoDB verschlüsselt. Der Schlüssel lautet
aws:dynamodb:tableName. Der Wert ist der Name der Tabelle."aws:dynamodb:tableName": "<table-name>"Zum Beispiel:
"aws:dynamodb:tableName": "Books" -
Konto – Das zweite Schlüssel-Wert-Paar identifiziert das AWS-Konto. Der Schlüssel lautet
aws:dynamodb:subscriberId. Der Wert ist die Konto-ID."aws:dynamodb:subscriberId": "<account-id>"Zum Beispiel:
"aws:dynamodb:subscriberId": "111122223333"
Überwachen der DynamoDB-Interaktion mit AWS KMS
Wenn Sie einen kundenverwalteten Schlüssel oder einen Von AWS verwalteter Schlüssel zum Schutz Ihrer DynamoDB-Tabellen verwenden, können Sie mithilfe von AWS CloudTrail-Protokollen, die Anforderungen nachverfolgen, die DynamoDB in Ihrem Auftrag an AWS KMS sendet.
Die Anforderungen GenerateDataKey, Decrypt und CreateGrant werden in diesem Abschnitt beschrieben. Zudem verwendet DynamoDB eine DescribeKey-Operation, um zu ermitteln, ob der von Ihnen ausgewählte KMS-Schlüssel im Konto und in der Region vorhanden ist. Außerdem wird eine RetireGrant-Operation verwendet, um eine Erteilung zu entfernen, wenn Sie eine Tabelle löschen.
- GenerateDataKey
-
Wenn Sie die Verschlüsselung im Ruhezustand für eine Tabelle aktivieren, erstellt DynamoDB einen eindeutigen Tabellenschlüssel. Es wird eine GenerateDataKey-Anforderung an AWS KMS gesendet, die den KMS-Schlüssel für die Tabelle angibt.
Das Ereignis, das die
GenerateDataKey-Operation aufzeichnet, ähnelt dem folgenden Beispielereignis. Der Benutzer ist das DynamoDB-Servicekonto. Die Parameter enthalten den Amazon-Ressourcennamen (ARN) des KMS-Schlüssels, einen Schlüsselbezeichner, der einen 256-Bit-Schlüssel benötigt, und den Verschlüsselungskontext, der die Tabelle und das AWS-Konto identifiziert.{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:17Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" }, "keySpec": "AES_256", "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "229386c1-111c-11e8-9e21-c11ed5a52190", "eventID": "e3c436e9-ebca-494e-9457-8123a1f5e979", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "bf915fa6-6ceb-4659-8912-e36b69846aad" } - Decrypt
-
Wenn Sie auf eine verschlüsselte DynamoDB-Tabelle zugreifen, muss DynamoDB den Tabellenschlüssel entschlüsseln, damit die in der Hierarchie tiefer angeordneten Schlüssel entschlüsselt werden können. Anschließend werden die Daten in der Tabelle entschlüsselt. Entschlüsseln des Tabellenschlüssels Es wird eine GenerateDataKey-Anforderung an AWS KMS gesendet, die den KMS-Schlüssel für die Tabelle angibt.
Das Ereignis, das die
Decrypt-Operation aufzeichnet, ähnelt dem folgenden Beispielereignis. Der Benutzer ist der Prinzipal in Ihrem AWS-Konto, mit dem auf die Tabelle zugegriffen wird. Die Parameter enthalten den verschlüsselten Tabellenschlüssel (als Chiffretext-Blob) und den Verschlüsselungskontext, der die Tabelle und das AWS-Konto identifiziert. AWS KMS leitet die ID des KMS-Schlüssels aus dem Chiffretext ab.{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T16:42:15Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDT3HGFQZX4RY6RU", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T16:42:39Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "responseElements": null, "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5", "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } - CreateGrant
-
Wenn Sie einen kundenverwalteten Schlüssel oder einen Von AWS verwalteter Schlüssel zum Schutz Ihrer DynamoDB-Tabelle verwenden, verwendet DynamoDB Erteilungen, um dem Service die Ausführung von Aufgaben für kontinuierlichen Datenschutz, Wartung und Haltbarkeit zu erlauben. Diese Erteilungen sind für AWS-eigener Schlüssel nicht erforderlich.
Die von DynamoDB erstellten Erteilungen sind tabellenspezifisch. Der Prinzipal in der CreateGrant-Anforderung ist der Benutzer, der die Tabelle erstellt hat.
Das Ereignis, das die
CreateGrant-Operation aufzeichnet, ähnelt dem folgenden Beispielereignis. Die Parameter enthalten den Amazon-Ressourcennamen (ARN) des KMS-Schlüssels für die Tabelle, den Empfänger-Prinzipal und den ausscheidenden Prinzipal (der DynamoDB-Service) sowie die Operationen, für die die Erteilung gilt. Enthalten ist auch eine Beschränkung, die für alle Verschlüsselungsoperationen den angegebenen Verschlüsselungskontext voraussetzt.{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T00:12:02Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:15Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "retiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "constraints": { "encryptionContextSubset": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "granteePrincipal": "dynamodb.us-west-2.amazonaws.com", "operations": [ "DescribeKey", "GenerateDataKey", "Decrypt", "Encrypt", "ReEncryptFrom", "ReEncryptTo", "RetireGrant" ] }, "responseElements": { "grantId": "5c5cd4a3d68e65e77795f5ccc2516dff057308172b0cd107c85b5215c6e48bde" }, "requestID": "2192b82a-111c-11e8-a528-f398979205d8", "eventID": "a03d65c3-9fee-4111-9816-8bf96b73df01", "readOnly": false, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }