本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 DynamoDB Streams 使用 ABAC
下列步驟說明如何使用 ABAC for DynamoDB Streams 設定許可。在此範例案例中,您將標籤新增至 DynamoDB 串流,並使用包含標籤型條件的政策建立 IAM 角色。然後,您可以透過比對標籤條件來測試 DynamoDB 串流上允許的許可。
步驟 1:將標籤新增至 DynamoDB 串流
您可以使用 CLI AWS 或 SDK 將標籤新增至 DynamoDB Streams。下列 tag-resource CLI 命令會將標籤新增至串流。
aws dynamodb tag-resource \ --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicTable/stream/2024-01-01T00:00:00.000 \ --tags Key=environment,Value=staging
注意
若要尋找串流 ARN,請使用 describe-table命令,並在回應中尋找 LatestStreamArn 欄位。
步驟 2:建立包含標籤式條件的 IAM 角色與政策
使用 aws:ResourceTag/{{tag-key}}條件金鑰建立 IAM 政策,以比較 IAM 政策中指定的標籤鍵值對與連接到串流的鍵值對。如果串流包含標籤鍵/值對,以下範例政策可讓使用者取得記錄並描述串流:"environment": "staging"。如果串流沒有指定的標籤鍵/值對,則會拒絕這些動作。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "staging" } } } ] }
步驟 3:測試允許的權限
-
將 IAM 政策附加至 AWS 帳戶中的測試使用者或角色。請確定您使用的 IAM 主體尚未透過不同的政策存取 DynamoDB 串流。
-
請確定您的 DynamoDB 串流包含值為 的
"environment"標籤金鑰"staging"。 -
在標記的串流上執行
dynamodb:DescribeStream和dynamodb:GetRecords動作。如果"environment": "staging"標籤鍵/值對存在,則這些動作會成功。如果您在沒有
"environment": "staging"標籤鍵值對的串流上執行這些動作,您的請求會失敗,並顯示AccessDeniedException。