本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
當您在資源型政策的 Resource
欄位中指定 ARN 時,只有在指定的 ARN 與其連接的 DynamoDB 資源的 ARN 相符時,政策才會生效。
注意
請記得將斜體
文字取代為您的資源特定資訊。
資料表的資源型政策
下列以資源為基礎的政策連接到名為 MusicCollection
的 DynamoDB 資料表,可讓 IAM 使用者 John
和 Jane
許可在 MusicCollection
資源上執行 GetItem 和 BatchGetItem 動作。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:user/John
", "arn:aws:iam::111122223333
:user/Jane
" ] }, "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
" ] } ] }
串流的資源型政策
下列連接至名為 之 DynamoDB 串流的資源型政策,2024-02-12T18:57:26.492
可讓 IAM 使用者 John
和 Jane
許可在2024-02-12T18:57:26.492
資源上執行 GetRecords、GetShardIterator 和 DescribeStream API 動作。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:user/John
", "arn:aws:iam::111122223333
:user/Jane
" ] }, "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
/stream/2024-02-12T18:57:26.492
" ] } ] }
以資源為基礎的政策,用於對指定資源執行所有動作的存取權
若要允許使用者對資料表執行所有動作,以及對資料表執行所有相關索引,您可以使用萬用字元 (*) 來代表與資料表相關聯的動作和資源。使用資源的萬用字元,將允許使用者存取 DynamoDB 資料表及其所有相關聯的索引,包括尚未建立的索引。例如,以下政策將授予使用者 John
許可,以對 MusicCollection
資料表及其所有索引執行任何動作,包括未來將建立的任何索引。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal":"arn:aws:iam::
111122223333
:user/John
", "Action": "dynamodb:*", "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
", "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
/index/*" ] } ] }
跨帳戶存取的資源型政策
您可以為跨帳戶 IAM 身分指定存取 DynamoDB 資源的許可。例如,您可能需要信任帳戶的使用者才能存取 來讀取資料表的內容,條件是他們只會存取這些項目中的特定項目和特定屬性。下列政策允許使用者 John
從信任的 AWS 帳戶 ID 111111111111
存取,以使用 GetItem API 存取帳戶 123456789012
中資料表的資料。此政策可確保使用者只能存取具有主索引鍵 Jane
的項目,而且使用者只能擷取屬性 Artist
和 SongTitle
,但不能擷取其他屬性。
重要
如果您未指定SPECIFIC_ATTRIBUTES
條件,您會看到傳回項目的所有屬性。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountTablePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:user/John" }, "Action": "dynamodb:GetItem", "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": "Jane", "dynamodb:Attributes": [ "Artist", "SongTitle" ] }, "StringEquals": { "dynamodb:Select": "SPECIFIC_ATTRIBUTES" } } } ] }
除了上述以資源為基礎的政策之外,連接至使用者的身分型政策 John
也需要允許跨帳戶存取的 GetItem
API 動作運作。以下是您必須連接到使用者 John
的身分型政策範例。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountIdentityBasedPolicy", "Effect": "Allow", "Action": [ "dynamodb:GetItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:
123456789012
:table/MusicCollection
" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": "Jane
", "dynamodb:Attributes": [ "Artist", "SongTitle" ] }, "StringEquals": { "dynamodb:Select": "SPECIFIC_ATTRIBUTES" } } } ] }
使用者 John 可以透過在table-name
參數中指定資料表 ARN 來提出GetItem
請求,以存取帳戶 123456789012
中的資料表 MusicCollection
。
aws dynamodb get-item \ --table-name arn:aws:dynamodb:us-west-2:
123456789012
:table/MusicCollection
\ --key '{"Artist": {"S": "Jane
"}' \ --projection-expression 'Artist, SongTitle' \ --return-consumed-capacity TOTAL
具有 IP 地址條件的資源型政策
您可以套用條件來限制來源 IP 地址、虛擬私有雲端 (VPCs) 和 VPC 端點 (VPCE)。您可以根據原始請求的來源地址指定許可。例如,您可能想要僅允許使用者從特定 IP 來源存取 DynamoDB 資源,例如公司 VPN 端點。在 Condition
陳述式中指定這些 IP 地址。
下列範例允許使用者 John
在來源 IPs 為 54.240.143.0/24
和 時存取任何 DynamoDB 資源2001:DB8:1234:5678::/64
。
{ "Id":"PolicyId2", "Version":"2012-10-17", "Statement":[ { "Sid":"AllowIPmix", "Effect":"Allow", "Principal":"arn:aws:iam::
111111111111
:user/John
", "Action":"dynamodb:*", "Resource":"*", "Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] } } } ] }
您也可以拒絕對 DynamoDB 資源的所有存取,除非來源是特定 VPC 端點,例如 vpce-1a2b3c4d
。
{ "Id":"PolicyId", "Version":"2012-10-17", "Statement": [ { "Sid": "AccessToSpecificVPCEOnly", "Principal": "*", "Action": "dynamodb:*", "Effect": "Deny", "Resource": "*", "Condition": { "StringNotEquals":{ "aws:sourceVpce":"
vpce-1a2b3c4d
" } } } ] }
使用 IAM 角色的資源型政策
您也可以在資源型政策中指定 IAM 服務角色。擔任此角色的 IAM 實體受到針對角色指定的允許動作,以及資源型政策中特定資源集的約束。
下列範例允許 IAM 實體在 MusicCollection
和 MusicCollection
DynamoDB 資源上執行所有 DynamoDB 動作。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:role/John
" }, "Action": "dynamodb:*", "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
", "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
/*" ] } ] }