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

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 wird für die Kommunikation zu und von DynamoDB HTTPS das Protokoll verwendet, das den Netzwerkverkehr mithilfe der 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 den, oder vom Kunden verwalteten Schlüssel verwenden AWS-eigener Schlüssel 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 Management Console, KMS wenn Sie den Von AWS verwalteter Schlüssel oder den 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 Amazon DynamoDB ist der Verschlüsselungstyp der FallAPI, KMS wenn Sie den Von AWS verwalteter Schlüssel oder den 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 verwenden, um die API Verschlüsselungsschlüssel zu wechseln.

Beachten Sie die folgenden Einschränkungen bei Verwendung kundenverwalteter Schlüssel:

  • Sie können einen vom Kunden verwalteten Schlüssel nicht mit DynamoDB Accelerator (DAX) -Clustern verwenden. Weitere Informationen finden Sie unter DAXVerschlü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, sind jedoch mit einem Amazon CloudWatch verschlüsselt. AWS-eigener Schlüssel

  • Achten Sie beim Umstieg auf einen neuen, vom Kunden verwalteten Schlüssel darauf, dass der ursprüngliche Schlüssel aktiviert bleibt, bis der Vorgang abgeschlossen ist. AWS Sie benötigen weiterhin den Originalschlüssel, um die Daten zu entschlüsseln, bevor Sie sie mit dem neuen Schlüssel verschlüsseln. Der Vorgang ist abgeschlossen, wenn der SSEDescription Status der Tabelle lautet ENABLED 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 DescribeBackup API die Daten dieser Backups anzeigenSSEDescription.

  • 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 Ihren vom Kunden verwalteten Schlüssel deaktivieren oder eine Löschung für ihn planen, werden Time to Live (TTL) -Löschungen 30 Minuten lang fortgesetzt. Diese TTL Löschungen werden weiterhin an DynamoDB Streams ausgegeben und unterliegen dem standardmäßigen Kürzungs-/Aufbewahrungsintervall.

    Weitere Informationen finden Sie unter Aktivieren von Schlüsseln und Löschen von Schlüsseln.

KMSSchlüssel und Datenschlüssel verwenden

Die DynamoDB-Funktion zur Verschlüsselung im Ruhezustand verwendet eine 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 ihrer 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 des UpdateTableVorgangs. 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:

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

Sie ist jedoch kostenlos und ihre Nutzung AWS-eigener Schlüssel wird nicht auf Ressourcen- oder Anforderungskontingente angerechnet AWS KMS . Vom Kunden verwaltete Schlüssel, für die für jeden API Anruf eine Von AWS verwaltete Schlüssel Gebühr anfällt. Für diese KMS Schlüssel gelten AWS KMS Kontingente.

Tabellenschlüssel

DynamoDB verwendet den KMS Schlüssel für die Tabelle, um einen eindeutigen Datenschlüssel für die Tabelle, den so genannten Tabellenschlüssel, zu generieren und zu verschlüsseln. 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, den Schlüssel AWS KMS zur Entschlüsselung des KMS 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 Es schützt alle Schlüssel mit Advanced Encryption Standard (AES) -Verschlüsselung und 256-Bit-Verschlüsselungsschlüsseln. 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 zwischen. Wenn DynamoDB nach fünf Minuten Inaktivität eine Anfrage für den zwischengespeicherten Tabellenschlüssel erhält, sendet es eine neue Anfrage an, um den Tabellenschlüssel AWS KMS zu entschlüsseln. Dieser Aufruf erfasst alle Änderungen, die seit der letzten Anforderung zur Entschlüsselung des KMS Tabellenschlüssels an den Zugriffsrichtlinien des Schlüssels in AWS KMS or AWS Identity and Access Management (IAM) vorgenommen wurden.

Autorisieren Sie die Verwendung Ihres Schlüssels KMS

Wenn Sie einen vom Kunden verwalteten Schlüssel oder den Von AWS verwalteter Schlüsselin Ihrem Konto verwenden, um Ihre DynamoDB-Tabelle zu schützen, müssen die Richtlinien für diesen KMS Schlüssel DynamoDB die Erlaubnis geben, ihn in Ihrem Namen zu verwenden. Der Autorisierungskontext Von AWS verwalteter Schlüssel für DynamoDB umfasst die zugehörige Schlüsselrichtlinie und Berechtigungen, mit denen die Berechtigungen zu seiner Verwendung 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 jedoch von verwaltet wird AWS, können Sie die Richtlinien nicht ändern.

DynamoDB benötigt keine zusätzliche Autorisierung, um den Standard zum Schutz der DynamoDB-Tabellen in Ihrem AWS-eigener Schlüsselzu verwenden. AWS-Konto

Wichtige Richtlinie für ein 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 wichtigste Richtlinie für Von AWS verwalteter Schlüssel gibt allen Benutzern des Kontos die Erlaubnis, das Von AWS verwalteter Schlüssel für bestimmte Operationen 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, die zu verwenden, Von AWS verwalteter Schlüssel es sei denn, die Anforderung stammt vom DynamoDB-Dienst.

Diese wichtige Richtlinie wurde, 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 for DynamoDB in kryptografischen Vorgängen zu verwenden, wenn die Anforderung von DynamoDB in ihrem Namen kommt. Die Richtlinie ermöglicht es Benutzern auch, Berechtigungen für den Schlüssel zu erstellen. KMS

  • Ermöglicht autorisierten IAM Identitäten im Konto, die Eigenschaften von Von AWS verwalteter Schlüssel für DynamoDB einzusehen und die Genehmigung zu widerrufen, die DynamoDB die Verwendung des Schlüssels ermöglicht. KMS DynamoDB verwendet Erteilungen für laufende Wartungsoperationen.

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

{ "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 vom Kunden verwalteten Schlüssel zum Schutz einer DynamoDB-Tabelle auswählen, erhält DynamoDB die Erlaubnis, 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 Richtlinie oder einem IAMGrant 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:

  • Ermöglicht DynamoDB, den KMS Schlüssel für kryptografische Operationen zu verwenden und Zuschüsse zu erstellen, aber nur, wenn DynamoDB im Namen von Prinzipalen im Konto handelt, die berechtigt sind, DynamoDB zu verwenden. 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: erlaubt die Berechtigungen nur, wenn die Anforderung von DynamoDB im Namen der in der Richtlinienerklärung aufgeführten Prinzipale 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 einem bestimmten Objekt zu sein, AWS-Region damit es regionsübergreifende Aufrufe zur Unterstützung globaler DynamoDB-Tabellen durchführen kann.

  • Gewährt den KMS Schlüsseladministratoren (Benutzern, die die db-team Rolle übernehmen können) schreibgeschützten Zugriff auf den KMS Schlüssel und die Berechtigung, Grants zu widerrufen, einschließlich der Grants, die DynamoDB zum Schutz der Tabelle benötigt.

Bevor Sie eine Beispiel-Schlüsselrichtlinie verwenden, ersetzen Sie die Beispielprinzipale durch tatsächliche Prinzipale aus Ihrer. AWS-Konto

{ "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 KMS für einen 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 das Konto mehrere Tabellen enthält, die unter demselben KMS Schlüssel verschlüsselt sind, gibt es für jede Tabelle einen Zuschuss jedes Typs. Die Gewährung wird durch den DynamoDB-Verschlüsselungskontext eingeschränkt, der den Tabellennamen und die AWS-Konto ID umfasst, und sie beinhaltet die Berechtigung, die Grant zurückzuziehen, wenn sie 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 von der Schlüsselrichtlinie, die es Kontobenutzern erlaubt, den KMS Schlüssel nur dann CreateGrantaufzurufen, wenn DynamoDB die Anfrage im Namen eines autorisierten Benutzers stellt.

Die Schlüsselrichtlinie kann es dem Konto auch ermöglichen, die Erteilung des Schlüssels zu widerrufen. KMS 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 Anfrage zur Datenverschlüsselung aufnehmen, 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 AWS KMS kryptografischen Vorgängen denselben Verschlüsselungskontext. Wenn Sie einen vom Kunden verwalteten Schlüssel oder einen Von AWS verwalteter Schlüsselzum Schutz Ihrer DynamoDB-Tabelle verwenden, können Sie den Verschlüsselungskontext verwenden, um die Verwendung des KMS Schlüssels in Prüfaufzeichnungen und Protokollen zu identifizieren. Es erscheint auch im Klartext in Protokollen wie AWS CloudTrailAmazon CloudWatch Logs.

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 Von AWS verwalteter Schlüssel in Ihrem Konto und Ihrer Region ermöglichen.

DynamoDB verwendet in seinen Anfragen einen Verschlüsselungskontext mit zwei Schlüssel-Wert-Paaren. AWS KMS

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

    Beispielsweise:

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

    Beispielsweise:

    "aws:dynamodb:subscriberId": "111122223333"

Überwachen der DynamoDB-Interaktion mit AWS KMS

Wenn Sie einen vom Kunden verwalteten Schlüssel oder einen Von AWS verwalteter Schlüsselzum 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 ermittelt DynamoDB mithilfe eines DescribeKeyVorgangs, ob der von Ihnen ausgewählte KMS Schlüssel in dem Konto und in der Region vorhanden ist. Außerdem wird ein RetireGrantVorgang verwendet, 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 GenerateDataKeyAnfrage 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. Zu den Parametern gehören der Amazon-Ressourcenname (ARN) des KMS Schlüssels, ein Schlüsselspezifizierer, für den ein 256-Bit-Schlüssel erforderlich ist, und der Verschlüsselungskontext, der die Tabelle und den identifiziert. AWS-Konto

{ "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 Decrypt-Anfrage an 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 Ihr Hauptbenutzer, der auf AWS-Konto die Tabelle zugreift. Zu den Parametern gehören der verschlüsselte Tabellenschlüssel (als Chiffretext-Blob) und der Verschlüsselungskontext, der die Tabelle und den 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 Principal in der CreateGrantAnfrage ist der Benutzer, der die Tabelle erstellt hat.

Das Ereignis, das die CreateGrant-Operation aufzeichnet, ähnelt dem folgenden Beispielereignis. Zu den Parametern gehören der Amazon-Ressourcenname (ARN) des KMS Schlüssels für die Tabelle, der Principal des Empfängers und der ausscheidende Principal (der DynamoDB-Service) sowie die Operationen, die durch den Zuschuss abgedeckt werden. 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" }