選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

DAX 存取控制

焦點模式
DAX 存取控制 - Amazon DynamoDB

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

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

DynamoDB Accelerator (DAX) 旨在與 DynamoDB 搭配使用,可無縫地將快取層新增至您的應用程式。不過, DAX和 DynamoDB 有不同的存取控制機制。這兩個服務都使用 AWS Identity and Access Management (IAM) 來實作其各自的安全政策,但 DAX和 DynamoDB 的安全模型不同。

我們強烈建議您了解兩種安全模型,以便為使用 DAX 的應用程式實作合適的安全措施。

本節說明 DAX 提供的存取控制機制,並提供範例 IAM 政策。您可以使用此政策來為您的需求量身打造。

使用 DynamoDB,您可以建立IAM政策來限制使用者在個別 DynamoDB 資源上執行的動作。例如,您可以建立使用者角色,只允許使用者對特定 DynamoDB 資料表執行唯讀動作。(如需詳細資訊,請參閱「Amazon DynamoDB 的 Identity and Access Management」。) 相比之下,DAX安全模型著重於叢集安全性,以及叢集代表您執行 DynamoDB API動作的能力。

警告

如果您目前正在使用IAM角色和政策來限制對 DynamoDB 資料表資料的存取,則使用 DAX可以反轉這些政策。例如,使用者可以透過 存取 DynamoDB 資料表,DAX但不能直接存取存取 DynamoDB 的相同資料表。如需詳細資訊,請參閱Amazon DynamoDB 的 Identity and Access Management

DAX 不會對 DynamoDB 中的資料強制執行使用者層級分離。相反的,使用者會在存取該叢集時,繼承 DAX 叢集 IAM 政策的許可。因此,透過 存取 DynamoDB 資料表時DAX,唯一有效的存取控制是DAX叢集IAM政策中的許可。其他任何許可都不會獲得承認。

若您需要隔離,我們建議您建立其他 DAX 叢集,並為每個叢集劃定 IAM 政策的範圍。例如,您可以建立多個 DAX 叢集,然後只允許每個叢集存取單一資料表。

IAM 的服務角色 DAX

建立 DAX 叢集時,您必須為叢集與 IAM 角色建立關聯。這稱為叢集的服務角色

假設您想要建立新的名為 DAXCluster01 的DAX叢集。您可以建立名為 的服務角色DAXServiceRole,並將角色與 DAXCluster01 建立關聯。此政策DAXServiceRole會代表與 DAXCluster01 互動的使用者,定義 0DAXCluster1 可執行的 DynamoDB 動作。

當您建立服務角色時,您必須在 DAX DAXServiceRole和服務本身之間指定信任關係。信任關聯會判斷可取得角色及使用其許可的實體。以下是 的範例信任關係文件DAXServiceRole

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

此信任關係可讓DAX叢集代表您擔任DAXServiceRole和執行 DynamoDB API呼叫。

您連接的IAM政策文件中會說明允許的 DynamoDB API動作DAXServiceRole。以下為範例政策文件。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DaxAccessPolicy", "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", "dynamodb:ConditionCheckItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012:table/Books" ] } ] }

此政策允許 在 DynamoDB 資料表上執行DAX必要的 DynamoDB API動作。DAX 需要 dynamodb:DescribeTable 動作才能維護資料表的相關中繼資料,其他則是在表內項目上執行的讀取與寫入動作。名為 的資料表位於 us-west-2 區域Books,由AWS帳戶 ID 擁有123456789012

注意

DAX 支援在跨服務存取期間防止混淆代理人問題的機制。如需詳細資訊,請參閱IAM《 使用者指南》中的混淆代理人問題

IAM 允許DAX叢集存取的政策

建立DAX叢集之後,您需要將許可授予使用者,以便使用者可以存取DAX叢集。

例如,假設您想要將 DAXCluster01 的存取權授予名為 Alice 的使用者。您會先建立IAM政策 (AliceAccessPolicy),定義收件人可存取的DAX叢集和DAXAPI動作。您接著便會藉由將此政策連接到使用者 Alice,來授予存取。

下列政策文件提供收件人在 DAXCluster01 的完整存取權。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dax:*" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ] } ] }

政策文件允許存取DAX叢集,但不會授予任何 DynamoDB 許可。(DynamoDB 許可是由DAX服務角色授予。)

針對使用者 Alice,您首先要使用先前顯示的政策文件建立 AliceAccessPolicy。您接著會將政策連接到 Alice。

注意

您可以將它連接到IAM角色,而不是將政策連接到使用者。透過這種方式,所有取得該角色的使用者都會擁有您在政策中定義的許可。

使用者政策與服務DAX角色一起決定收件人可以透過 存取的 DynamoDB 資源和API動作DAX。

案例研究:存取 DynamoDB 和 DAX

下列案例可以幫助您進一步了解用於 DAX 的 IAM 政策。(本節剩餘的部分將參考這個案例)。以下圖表顯示案例的高層級概觀。

使用 之IAM政策案例的高階概觀DAX。

在此案例中,有下列實體:

  • 使用者 (Bob)。

  • IAM 角色 (BobUserRole)。Bob 會在執行時間取得此角色。

  • IAM 政策 (BobAccessPolicy)。此政策已連接至 BobUserRoleBobAccessPolicy定義BobUserRole允許存取的 DynamoDB DAX 和資源。

  • DAX 叢集 (DAXCluster01)。

  • IAM 服務角色 (DAXServiceRole)。此角色允許 DAXCluster01 存取 DynamoDB。

  • IAM 政策 (DAXAccessPolicy)。此政策已連接至 DAXServiceRoleDAXAccessPolicy定義DAXCluster01允許存取的 DynamoDB APIs和資源。

  • DynamoDB 資料表 (Books)。

BobAccessPolicyDAXAccessPolicy 中的政策陳述式組合會決定 Bob 可以如何使用 Books 資料表。例如,Bob 可能可以Books直接存取 (使用 DynamoDB 端點)、間接存取 (使用DAX叢集) 或同時存取兩者。Bob 也可能可以從 Books 讀取資料、寫入資料到 Books,或同時具有這兩種許可。

存取 DynamoDB,但無法存取 DAX

啟用直接存取資料表,但封鎖使用DAX叢集間接存取IAM的政策概觀。

您可以允許直接存取 DynamoDB 資料表,同時防止使用DAX叢集間接存取。如需直接存取 DynamoDB,BobUserRole 的許可是由 BobAccessPolicy (連接到角色) 決定。

DynamoDB 的唯讀存取 (僅限)

Bob 可以使用 BobUserRole 存取 DynamoDB。附加至此角色 (BobAccessPolicy) IAM的政策會決定BobUserRole可以存取的 DynamoDB 資料表,以及APIsBobUserRole可以叫用的內容。

考慮下列 BobAccessPolicy 的政策文件。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

當此文件連接到 BobAccessPolicy 時,它會允許 BobUserRole 存取 DynamoDB 端點,並對 Books 資料表執行唯讀操作。

DAX 沒有出現在此政策中,因此透過 DAX 進行存取會遭到拒絕。

DynamoDB 的讀取/寫入存取 (僅限)

BobUserRole 需要 DynamoDB 的讀寫存取,將適用以下政策。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

同樣的,DAX 沒有出現在此政策中,因此透過 DAX 進行存取會遭到拒絕。

存取 DynamoDB 和 DAX

同時授予 DynamoDB 資料表和DAX叢集存取權IAM的政策。

若要允許存取 DAX 叢集,您必須在 IAM 政策中包含 DAX 專屬的動作。

下列 DAX特定動作對應至 DynamoDB 中其類似具名的對應項目API:

  • dax:GetItem

  • dax:BatchGetItem

  • dax:Query

  • dax:Scan

  • dax:PutItem

  • dax:UpdateItem

  • dax:DeleteItem

  • dax:BatchWriteItem

  • dax:ConditionCheckItem

這同樣適用於 dax:EnclosingOperation 條件金鑰。

對 DynamoDB 的唯讀存取權和對 的唯讀存取權 DAX

假設 Bob 需要從 DynamoDB 和 對Books資料表進行唯讀存取DAX。以下政策 (連接到 BobUserRole) 會授予這項存取。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" }, { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

此政策具有DAX存取 (DAXAccessStmt) 的陳述式,以及 DynamoDBaccess () 的另一個陳述式DynamoDBAccessStmt。這些陳述式會允許 Bob 向 DAXCluster01 傳送 GetItemBatchGetItemQueryScan 請求。

但是,DAXCluster01 的服務角色也需要對 DynamoDB 中 Books 資料表的唯讀存取。以下連接到 DAXServiceRole 的 IAM 政策會滿足這項需求:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

使用 讀取/寫入 DynamoDB 和唯讀的存取權 DAX

對於指定的使用者角色,您可以提供 DynamoDB 資料表的讀取/寫入存取,同時允許透過 進行唯讀存取DAX。

對於 Bob,IAM政策BobUserRole需要允許 DynamoDB 在Books資料表上讀取和寫入動作,同時還支援透過 的唯讀動作DAXCluster01

以下 BobUserRole 的範例政策文件會授予這項存取。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" }, { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

此外,DAXServiceRole 將需要允許 DAXCluster01Books 資料表執行唯讀動作的 IAM 政策:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:DescribeTable" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

Read/write access to DynamoDB and read/write 對 的存取 DAX

現在假設 Bob 需要對 Books 資料表進行讀寫存取,無論是直接透過 DynamoDB,或間接透過 DAXCluster01。以下政策文件 (連接到 BobAccessPolicy) 會授予這項存取。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem", "dax:ConditionCheckItem" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" }, { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

此外,DAXServiceRole 將需要允許 DAXCluster01Books 資料表執行讀寫動作的 IAM 政策。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

透過 存取 DynamoDBDAX,但無法直接存取 DynamoDB

在此案例中,Bob 可以透過 存取Books資料表DAX,但他無法直接存取 DynamoDB 中的Books資料表。因此,當 Bob 取得 的存取權時DAX,他也可以存取 DynamoDB 資料表,否則他可能無法存取該資料表。當您為 DAX 服務角色設定 IAM 政策時,請記得任何透過使用者存取原則取得 DAX 叢集存取的使用者,都會取得在該政策中指定資料表的存取。在此情況下,BobAccessPolicy 可以存取 DAXAccessPolicy 中指定的資料表。

使用者可以透過DAX叢集存取資料表而不直接存取 DynamoDB 的情況。

如果您目前正在使用IAM角色和政策來限制對 DynamoDB 資料表和資料的存取,則使用 DAX可以反轉這些政策。在下列政策中,Bob 可以透過 存取 DynamoDB 資料表,DAX但無法明確直接存取 DynamoDB 中的相同資料表。

以下連接到 BobUserRole 的政策文件 (BobAccessPolicy) 會授予這項存取。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem", "dax:ConditionCheckItem" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" } ] }

在此存取政策中,沒有任何可直接存取 DynamoDB 的許可。

搭配 BobAccessPolicy,下列 DAXAccessPolicy 可讓 BobUserRole 存取 DynamoDB 資料表 Books,即使 BobUserRole 無法直接存取 Books 資料表。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

如此範例所示,當您設定使用者存取政策和DAX叢集存取政策的存取控制時,您必須完全了解存取權 end-to-end,以確保遵守最低權限原則。您也必須確保給予使用者存取 DAX 叢集不會推翻先前建立的存取控制政策。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。