Überlegungen zu einer kontoübergreifenden Integration in CMK - 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.

Überlegungen zu einer kontoübergreifenden Integration in CMK

Bei dem Versuch einer Integration von DynamoDB in Amazon Redshift geht die erste Aktion von Amazon Redshift aus. Ohne die entsprechenden Berechtigungen könnte diese Aktion zu einem unbemerkten Fehler führen. In den folgenden Abschnitten werden die Berechtigungen beschrieben, die für diese kontenübergreifende Integration erforderlich sind.

Erforderliche Richtlinien und Berechtigungen AWS KMS

Ersetzen Sie die Platzhalter in den folgenden Beispielen:

  • 111122223333: Die AWS-Konto ID, unter der Amazon Redshift gehostet wird

  • 444455556666: Die AWS-Konto ID, unter der DynamoDB gehostet wird

  • REDSHIFT_ROLE_NAME: Der von Amazon Redshift verwendete Name für die IAM-Rolle

  • REGION: Der AWS-Region Ort, an dem sich Ihre Ressourcen befinden

  • TABLE_NAME: Der Name der DynamoDB-Tabelle.

  • KMS_KEY_ID: Die ID des KMS-Schlüssels

KMS-Schlüsselrichtlinie im DynamoDB-Konto

Die folgende AWS KMS wichtige Richtlinie ermöglicht den kontoübergreifenden Zugriff zwischen Ihren DynamoDB- und Amazon Redshift Redshift-Services. In diesem Beispiel enthält das Konto 444455556666 die DynamoDB-Tabelle und den AWS KMS Schlüssel, während das Konto 111122223333 den Amazon Redshift Redshift-Cluster enthält, der Zugriff benötigt, um die Daten zu entschlüsseln.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow Redshift to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/REDSHIFT_ROLE_NAME" }, "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*" } ] }

IAM-Richtlinie für die Amazon-Redshift-Rolle (im Amazon-Redshift-Konto)

Die folgende IAM-Richtlinie ermöglicht einem Amazon Redshift Redshift-Service den Zugriff auf DynamoDB-Tabellen und die zugehörigen AWS KMS Verschlüsselungsschlüssel in einem kontoübergreifenden Szenario. In diesem Beispiel enthält das Konto 444455556666 die DynamoDB-Ressourcen und AWS KMS Schlüssel, auf die der Amazon Redshift Redshift-Service zugreifen muss.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowDynamoDBAccess", "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:BatchGetItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:BatchGetItem", "dynamodb:GetItem", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:DescribeStream", "dynamodb:ListStreams" ], "Resource": [ "arn:aws:dynamodb:*:444455556666:table/TABLE_NAME", "arn:aws:dynamodb:*:444455556666:table/TABLE_NAME/stream/*" ] }, { "Sid": "AllowKMSAccess", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "arn:aws:kms:us-east-1:444455556666:key/KMS_KEY_ID" } ] }

Vertrauensstellung für die Amazon-Redshift-Rolle

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

DynamoDB-Tabellenrichtlinie (bei Verwendung von ressourcenbasierten Richtlinien)

Die folgende ressourcenbasierte Richtlinie ermöglicht einem Amazon-Redshift-Service im Konto 111122223333 den Zugriff auf DynamoDB-Tabellen und -Streams im Konto 444455556666. Fügen Sie diese Richtlinie an die DynamoDB-Tabelle an, um den kontenübergreifenden Zugriff zu aktivieren.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowRedshiftAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/REDSHIFT_ROLE_NAME" }, "Action": [ "dynamodb:DescribeTable", "dynamodb:BatchGetItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:BatchGetItem", "dynamodb:GetItem", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:DescribeStream", "dynamodb:ListStreams" ], "Resource": [ "arn:aws:dynamodb:*:444455556666:table/TABLE_NAME", "arn:aws:dynamodb:*:444455556666:table/TABLE_NAME/stream/*" ] } ] }

Wichtige Überlegungen

  1. Stellen Sie sicher, dass sich der KMS-Schlüssel in derselben Region befindet wie die DynamoDB-Tabelle.

  2. Der KMS-Schlüssel muss ein vom Kunden verwalteter Schlüssel (CMK) sein, kein. Von AWS verwalteter Schlüssel

  3. Wenn Sie globale DynamoDB-Tabellen verwenden, konfigurieren Sie Berechtigungen für alle relevanten Regionen.

  4. Erwägen Sie das Hinzufügen von Bedingungsanweisungen, um den Zugriff auf der Grundlage von VPC-Endpunkten oder IP-Bereichen einzuschränken.

  5. Für mehr Sicherheit sollten Sie die Verwendung der aws:PrincipalOrgID-Bedingungen in Betracht ziehen, um den Zugriff auf die Organisation einzuschränken.

  6. Überwachen Sie die Verwendung von KMS-Schlüsseln anhand CloudTrail von CloudWatch Messdaten.