本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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/*"
]
}
]
}
重要考量
-
確保 KMS 金鑰與您的 DynamoDB 資料表位於相同的區域。
-
KMS 金鑰必須是客戶受管金鑰 (CMK),而不是 AWS 受管金鑰。
-
如果您使用的是 DynamoDB 全域資料表,請設定所有相關區域的許可。
-
考慮新增條件陳述式,以根據 VPC 端點或 IP 範圍限制存取。
-
為了增強安全性,請考慮使用 aws:PrincipalOrgID 條件來限制對組織的存取。
-
透過 CloudTrail 和 CloudWatch 指標監控 KMS 金鑰用量。