使用 CMK 時的跨帳戶整合考量 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 CMK 時的跨帳戶整合考量

當您嘗試從 DynamoDB 整合到 Amazon Redshift 時,初始動作會從 Amazon Redshift 啟動。如果沒有適當的許可,此動作可能會導致靜默失效。下列各節詳細說明此跨帳戶整合所需的許可。

必要的 AWS KMS 政策和許可

取代下列範例中的預留位置:

  • 111122223333:託管 Amazon Redshift 的 AWS 帳戶 ID

  • 444455556666:託管 DynamoDB 的 AWS 帳戶 ID

  • REDSHIFT_ROLE_NAME:Amazon Redshift 使用的 IAM 角色名稱

  • REGION: AWS 區域 您的資源所在的

  • TABLE_NAME:DynamoDB 資料表的名稱

  • KMS_KEY_ID:KMS 金鑰的 ID

DynamoDB 帳戶中的 KMS 金鑰政策

下列 AWS KMS 金鑰政策可啟用 DynamoDB 和 Amazon Redshift 服務之間的跨帳戶存取。在此範例中,帳戶 444455556666 包含 DynamoDB 資料表和 AWS KMS 金鑰,而帳戶 111122223333 包含需要存取以解密資料的 Amazon Redshift 叢集。

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": "*" } ] }

Amazon Redshift 角色的 IAM 政策 (在 Amazon Redshift 帳戶中)

下列 IAM 政策允許 Amazon Redshift 服務在跨帳戶案例中存取 DynamoDB 資料表及其相關聯的 AWS KMS 加密金鑰。在此範例中,帳戶 444455556666 包含 Amazon Redshift 服務需要存取的 DynamoDB 資源和 AWS KMS 金鑰。

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

Amazon Redshift 角色的信任關係

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

DynamoDB 資料表政策 (如果使用資源型政策)

下列資源型政策允許帳戶 111122223333 中的 Amazon Redshift 服務存取帳戶 444455556666 中的 DynamoDB 資料表和串流。將此政策連接至您的 DynamoDB 資料表,以啟用跨帳戶存取。

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/*" ] } ] }

重要考量

  1. 確保 KMS 金鑰與您的 DynamoDB 資料表位於相同的區域。

  2. KMS 金鑰必須是客戶受管金鑰 (CMK),而不是 AWS 受管金鑰。

  3. 如果您使用的是 DynamoDB 全域資料表,請設定所有相關區域的許可。

  4. 考慮新增條件陳述式,以根據 VPC 端點或 IP 範圍限制存取。

  5. 為了增強安全性,請考慮使用 aws:PrincipalOrgID 條件來限制對組織的存取。

  6. 透過 CloudTrail 和 CloudWatch 指標監控 KMS 金鑰用量。