View a markdown version of this page

Nutzungshinweise zur Verschlüsselung ruhender Daten in DynamoDB - Amazon DynamoDB

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.

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

Server-side Die Verschlüsselung im Ruhezustand 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-side und serverseitige Verschlüsselung im Amazon DynamoDB Encryption Client Developer Guide.

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 den AWS-eigener Schlüssel,, oder vom Kunden verwalteten Schlüssel verwenden Von AWS verwalteter Schlüssel, um Ihre Backup-Daten zu verschlüsseln. 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.

Bei der handelt es sich um den Verschlüsselungstyp AWS-Managementkonsole, KMS wenn Sie den Von AWS verwalteter Schlüssel oder vom Kunden verwalteten Schlüssel zum Verschlüsseln Ihrer Daten verwenden. Der Verschlüsselungstyp lautet DEFAULT, wenn Sie den AWS-eigener Schlüssel verwenden. In der Amazon DynamoDB-API wird der Verschlüsselungstyp verwendet, KMS wenn Sie den Von AWS verwalteter Schlüssel oder vom Kunden verwalteten 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 vom Kunden verwalteten Schlüssel wechseln. Sie können die Konsole, die AWS Command Line Interface (AWS CLI) oder die Amazon DynamoDB-API verwenden, 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, an die übertragen werden, werden jedoch mit einem Amazon CloudWatch verschlüsselt. AWS-eigener Schlüssel

  • Wenn Sie zu einem neuen, vom Kunden verwalteten Schlüssel wechseln, achten Sie darauf, dass der ursprüngliche Schlüssel aktiviert bleibt, bis der Vorgang abgeschlossen ist. AWS benötigt weiterhin den Originalschlü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 lautet und der KMSMasterKeyArn des neuen, vom Kunden verwalteten 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 des Backups einzusehen.

  • 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 Standardintervall. trimming/retention

    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 zur Verschlüsselung im Ruhezustand verwendet eine AWS KMS key 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 ändern, entweder in der DynamoDB-Konsole oder mithilfe der Operation. UpdateTable Der Vorgang des Schlüsselwechsels ist nahtlos und erfolgt ohne Ausfallzeiten oder Beeinträchtigung des Service.

Anmerkung

Wenn Sie einen KMS-Schlüssel mithilfe eines Schlüsselalias angeben, löst DynamoDB den Alias zum Zeitpunkt der Festlegung in die zugrunde liegende KMS-Schlüssel-ID auf und ordnet diesen KMS-Schlüssel der Tabelle zu. Wenn Sie den Alias später so ändern, dass er auf einen anderen KMS-Schlüssel verweist, verwendet die Tabelle weiterhin den ursprünglich aufgelösten KMS-Schlüssel. Durch das Aktualisieren des Alias wird der KMS-Schlüssel, der die Tabelle schützt, nicht geändert. Um die Tabelle mit einem anderen KMS-Schlüssel zu schützen, ändern Sie den Verschlüsselungsschlüssel der Tabelle direkt in der DynamoDB-Konsole oder mithilfe der UpdateTable Operation.

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:

Verwenden Sie das, Von AWS verwalteter Schlüssel wenn Sie eine der folgenden Funktionen benötigen:

Sie ist jedoch kostenlos und ihre Verwendung AWS-eigener Schlüssel wird nicht auf die Ressourcen- oder Anforderungskontingente AWS KMS angerechnet. Vom Kunden verwaltete Schlüssel und für jeden API-Aufruf Von AWS verwaltete Schlüssel fallen Gebühren an. 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.

Verschlüsseln einer DynamoDB-Tabelle per Verschlüsselung im Ruhezustand

Wenn Sie zum ersten Mal auf eine verschlüsselte Tabelle zugreifen, sendet DynamoDB eine Anfrage an, den KMS-Schlüssel AWS KMS 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 speichert und verwendet 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

Um zu vermeiden, dass AWS KMS jede DynamoDB-Operation aufgerufen wird, speichert DynamoDB die Klartext-Tabellenschlüssel für jeden Aufrufer im Speicher. Wenn DynamoDB nach fünf Minuten Inaktivität eine Anforderung für den zwischengespeicherten Tabellenschlüssel erhält, sendet es eine neue Anforderung zur Entschlüsselung des Tabellenschlüssels. AWS KMS Dieser Aufruf erfasst alle Änderungen, die seit der letzten Anforderung zur Entschlüsselung des Tabellenschlüssels an den Zugriffsrichtlinien für den KMS-Schlüssel in AWS KMS oder AWS Identity and Access Management (IAM) 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 Von AWS verwalteter Schlüssel für DynamoDB umfasst die zugehörige Schlüsselrichtlinie und erteilt dieser Person die Zugriffsberechtigungen für deren Verwendung.

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 es jedoch von verwaltet wird AWS, können Sie die Richtlinien nicht ändern.

DynamoDB benötigt keine zusätzliche Autorisierung, um die Standardeinstellung zum Schutz der DynamoDB-Tabellen in Ihrem AWS-eigener Schlüssel zu verwenden. AWS-Konto

Wichtige Richtlinie für eine 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 für Von AWS verwalteter Schlüssel erteilt allen Benutzern des Kontos die Erlaubnis, das Von AWS verwalteter Schlüssel für bestimmte Vorgänge zu verwenden. Die Berechtigung wird aber nur gewährt, wenn DynamoDB die Anforderung für den Benutzer ausgibt. Die ViaService Bedingung in der Schlüsselrichtlinie erlaubt es keinem Benutzer, den zu verwenden, Von AWS verwalteter Schlüssel es sei denn, die Anforderung stammt vom DynamoDB-Dienst.

Diese wichtige Richtlinie wird, wie alle Richtlinien Von AWS verwaltete Schlüssel, von festgelegt. AWS 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:

  • Erlauben Sie Benutzern im Konto, Von AWS verwalteter Schlüssel für DynamoDB in kryptografischen Operationen zu verwenden, wenn die Anforderung in ihrem Namen von DynamoDB kommt. 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.

  • Ermöglicht DynamoDB, schreibgeschützte Operationen durchzuführen, um das für DynamoDB in Ihrem Konto zu finden. Von AWS verwalteter Schlüssel

JSON
{ "Version":"2012-10-17", "Id" : "auto-dynamodb-1", "Statement" : [ { "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:CallerAccount" : "111122223333", "kms:ViaService" : "dynamodb.us-west-2.amazonaws.com" } } }, { "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource" : "*" }, { "Sid" : "Allow DynamoDB Service with service principal name dynamodb.amazonaws.com to describe the key directly", "Effect" : "Allow", "Principal" : { "Service" : "dynamodb.amazonaws.com" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*" ], "Resource" : "*" } ] }

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:

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 ViaService Bedingungsschlüssel kms: gewährt die Berechtigungen nur, wenn die Anforderung von DynamoDB im Namen der in der Richtlinienerklärung aufgeführten Principals kommt. 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 bestimmten Daten zu sein, AWS-Region damit es regionsübergreifende Aufrufe zur Unterstützung globaler DynamoDB-Tabellen tätigen kann. https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html

  • 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 Beispielprinzipale durch tatsächliche Prinzipale aus Ihrem. AWS-Konto

JSON
{ "Id": "key-policy-dynamodb", "Version":"2012-10-17", "Statement": [ { "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService" : "dynamodb.*.amazonaws.com" } } }, { "Sid": "Allow administrators to view the KMS key and revoke grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/db-team" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" } ] }

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). Verwenden Sie den Vorgang, um die Zuschüsse für einen KMS-Schlüssel in Ihrem Konto anzuzeigen. ListGrants 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 Gewährung wird durch den DynamoDB-Verschlüsselungskontext eingeschränkt, der den Tabellennamen und die AWS-Konto ID enthält, und er beinhaltet die Erlaubnis, den Zuschuss zurückzuziehen, falls er 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. Denn Von AWS verwaltete Schlüssel DynamoDB erhält die kms:CreateGrant Erlaubnis aus der Schlüsselrichtlinie, die es Kontobenutzern ermöglicht, den KMS-Schlüssel nur dann abzurufen CreateGrant, wenn DynamoDB die Anfrage im Namen eines autorisierten Benutzers stellt.

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 zum Verschlüsseln von Daten einbeziehen, wird der Verschlüsselungskontext AWS KMS kryptografisch an die verschlüsselten Daten gebunden. Zur Entschlüsselung der Daten müssen Sie denselben Verschlüsselungskontext übergeben.

DynamoDB verwendet bei allen kryptografischen Vorgängen denselben Verschlüsselungskontext. AWS KMS 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. Es erscheint auch im Klartext in Protokollen wie AWS CloudTrail Amazon Logs. CloudWatch

Der Verschlüsselungskontext kann auch als Bedingung für die Autorisierung in Richtlinien und Erteilungen verwendet werden. DynamoDB verwendet den Verschlüsselungskontext, um die Berechtigungen einzuschränken, die den Zugriff auf den vom Kunden verwalteten Schlüssel oder auf Ihr Konto und Ihre Von AWS verwalteter Schlüssel Region ermöglichen.

Bei seinen Anfragen 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>"

    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>"

    Beispiel:

    "aws:dynamodb:subscriberId": "111122223333"

Überwachung der DynamoDB-Interaktion mit AWS KMS

Wenn Sie einen vom Kunden verwalteten Schlüssel oder einen Von AWS verwalteter Schlüssel zum Schutz Ihrer DynamoDB-Tabellen verwenden, können Sie mithilfe von AWS CloudTrail Protokollen die Anfragen verfolgen, an die DynamoDB in Ihrem Namen sendet. AWS KMS

Die Anforderungen GenerateDataKey, Decrypt und CreateGrant werden in diesem Abschnitt beschrieben. Darüber hinaus verwendet DynamoDB einen DescribeKey Vorgang, um zu ermitteln, ob der von Ihnen gewählte KMS-Schlüssel in dem Konto und der Region vorhanden ist. Es verwendet auch einen RetireGrant Vorgang, um einen Zuschuss 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 sendet eine GenerateDataKey Anfrage an AWS KMS , 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 DynamoDB sendet eine https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html Entschlüsselungsanforderung an die Adresse AWS KMS , 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 Ihnen AWS-Konto , der auf die Tabelle zugreift. Zu den Parametern gehören der verschlüsselte Tabellenschlüssel (als Chiffretext-Blob) und der Verschlüsselungskontext, der die Tabelle und die identifiziert. AWS-Konto 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 Anfrage 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" }