View a markdown version of this page

搭配 DynamoDB Streams 使用 ABAC - Amazon DynamoDB

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

搭配 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:測試允許的權限

  1. 將 IAM 政策附加至 AWS 帳戶中的測試使用者或角色。請確定您使用的 IAM 主體尚未透過不同的政策存取 DynamoDB 串流。

  2. 請確定您的 DynamoDB 串流包含值為 的"environment"標籤金鑰"staging"

  3. 在標記的串流上執行 dynamodb:DescribeStreamdynamodb:GetRecords動作。如果"environment": "staging"標籤鍵/值對存在,則這些動作會成功。

    如果您在沒有"environment": "staging"標籤鍵值對的串流上執行這些動作,您的請求會失敗,並顯示 AccessDeniedException