搭配 DynamoDB 使用屬性型存取控制 - Amazon DynamoDB

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

搭配 DynamoDB 使用屬性型存取控制

屬性型存取控制 (ABAC) 是一種授權策略,可根據身分型政策或其他 AWS 政策中的標籤條件定義存取許可,例如資源型政策和組織 IAM 政策。您可以將標籤連接至 DynamoDB 資料表,然後根據標籤型條件進行評估。與資料表相關聯的索引會繼承您新增至資料表的標籤。您可以為每個 DynamoDB 資料表新增最多 50 個標籤。資料表中所有標籤支援的大小上限為 10 KB。如需標記 DynamoDB 資源和標記限制的詳細資訊,請參閱在 DynamoDB 和 中標記資源DynamoDB 中的標記限制

如需使用標籤控制 AWS 資源存取的詳細資訊,請參閱《IAM 使用者指南》中的下列主題:

使用 ABAC,您可以為團隊和應用程式強制執行不同的存取層級,以使用較少的政策在 DynamoDB 資料表上執行動作。您可以在 IAM 政策的條件元素中指定標籤,以控制對 DynamoDB 資料表或索引的存取。這些條件決定 IAM 主體、使用者或角色對 DynamoDB 資料表和索引的存取層級。當 IAM 主體向 DynamoDB 提出存取請求時,資源和身分的標籤會根據 IAM 政策中的標籤條件進行評估。之後,只有在符合標籤條件時,政策才會生效。這可讓您建立可有效說出下列其中一項的 IAM 政策:

  • 允許使用者僅管理標籤具有索引鍵 X和值 的資源Y

  • 拒絕所有使用者存取以金鑰 標記的資源X

例如,您可以建立政策,僅允許使用者更新具有標籤鍵/值對的資料表:"environment": "staging"。您可以使用 aws:ResourceTag 條件金鑰,根據連接至該資料表的標籤來允許或拒絕存取資料表。

您可以在建立政策時,使用 AWS Management Console、 AWS API、 AWS Command Line Interface (AWS CLI)、 AWS SDK 或 或更新版本包含屬性型條件 AWS CloudFormation。

如果名為 的資料表包含名稱environment和值為 的標籤索引鍵MusicTable,則下列範例允許 UpdateItem 動作production

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:UpdateItem" ], "Resource": "arn:aws:dynamodb:*:*:table/MusicTable", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "production" } } } ] }

為什麼我應該使用 ABAC?

  • 更簡單的政策管理:您使用的政策較少,因為您不必建立不同的政策來定義每個 IAM 主體的存取層級。

  • 可擴展的存取控制:使用 ABAC 擴展存取控制更容易,因為您在建立新的 DynamoDB 資源時不需要更新政策。您可以使用標籤來授權存取包含符合資源標籤之標籤的 IAM 主體。您可以加入新的 IAM 主體或 DynamoDB 資源,並套用適當的標籤來自動授予必要的許可,而不必進行任何政策變更。

  • 精細許可管理:建立政策時,最佳實務是授予最低權限。使用 ABAC,您可以為 IAM 主體建立標籤,並使用它們來授予符合 IAM 主體上標籤的特定動作和資源的存取權。

  • 與公司目錄的一致性:您可以從公司目錄映射標籤與現有的員工屬性,使存取控制政策與您的組織結構保持一致。

使用 DynamoDB 實作 ABAC 的條件索引鍵

您可以在 AWS 政策中使用下列條件索引鍵來控制 DynamoDB 資料表和索引的存取層級:

  • aws:ResourceTag/tag-key:根據 DynamoDB 資料表或索引上的標籤索引鍵值對是否符合政策中的標籤索引鍵和值來控制存取。此條件索引鍵與在現有資料表或索引上操作的所有 APIs 相關。

    這些dynamodb:ResourceTag條件的評估方式就像您沒有將任何標籤連接到資源一樣。

  • aws:RequestTag/tag-key:允許將請求中傳遞的標籤鍵值對與您在政策中指定的標籤對進行比較。此條件索引鍵與包含標籤的 APIs 有關,這些標籤是請求承載的一部分。這些 APIs包括 CreateTableTagResource

  • aws:TagKeys:將請求中的標籤索引鍵與您在政策中指定的索引鍵進行比較。此條件索引鍵與包含標籤的 APIs 有關,這些標籤是請求承載的一部分。這些 APIs 包括 CreateTableTagResourceUntagResource

搭配 DynamoDB 使用 ABAC 的考量

當您搭配 DynamoDB 資料表或索引使用 ABAC 時,適用下列考量:

  • DynamoDB Streams 不支援標記和 ABAC。

  • DynamoDB 備份不支援標記和 ABAC。若要搭配備份使用 ABAC,建議您使用 AWS Backup

  • 標籤不會保留在還原的資料表中。您需要將標籤新增至還原的資料表,才能在政策中使用標籤型條件。