本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
DynamoDB 資源型政策範例
當您在資源型政策的 Resource
欄位中指定 ARN 時,只有在指定的 ARN 與其連接的 DynamoDB 資源的 ARN 相符時,政策才會生效。
資料表的資源型政策
下列以資源為基礎的政策連接到名為 MusicCollection
的 DynamoDB 資料表,可讓 IAM 使用者 John
和 Jane
在 MusicCollection
資源上執行 GetItem 和 BatchGetItem 動作。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1111",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333
:user/username
",
"arn:aws:iam::111122223333
:user/Jane
"
]
},
"Action": [
"dynamodb:GetItem",
"dynamodb:BatchGetItem"
],
"Resource": [
"arn:aws:dynamodb:us-east-1
:123456789012
:table/MusicCollection
"
]
}
]
}
串流的資源型政策
下列連接至名為 之 DynamoDB 串流的資源型政策2024-02-12T18:57:26.492
授予 IAM 使用者 John
和 Jane
在2024-02-12T18:57:26.492
資源上執行 GetRecords、GetShardIterator 和 DescribeStream API 動作的許可。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1111",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333
:user/username
",
"arn:aws:iam::111122223333
:user/Jane
"
]
},
"Action": [
"dynamodb:DescribeStream",
"dynamodb:GetRecords",
"dynamodb:GetShardIterator"
],
"Resource": [
"arn:aws:dynamodb:us-east-1
:123456789012
:table/MusicCollection
/stream/2024-02-12T18:57:26.492
"
]
}
]
}
以資源為基礎的政策,用於對指定資源執行所有動作的存取權
若要允許使用者對資料表執行所有動作,以及對資料表執行所有相關索引,您可以使用萬用字元 (*) 來代表與資料表相關聯的動作和資源。使用資源的萬用字元,將允許使用者存取 DynamoDB 資料表及其所有相關索引,包括尚未建立的索引。例如,以下政策將授予使用者 John
許可,以對 MusicCollection
資料表及其所有索引執行任何動作,包括未來將建立的任何索引。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1111",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333
:user/role-name
"
},
"Action": "dynamodb:*",
"Resource": [
"arn:aws:dynamodb:us-east-1
:123456789012
:table/MusicCollection
",
"arn:aws:dynamodb:us-east-1
:123456789012
:table/MusicCollection
/index/index-name
"
]
}
]
}
跨帳戶存取的資源型政策
您可以指定跨帳戶 IAM 身分存取 DynamoDB 資源的許可。例如,您可能需要信任帳戶的使用者才能存取 ,以讀取資料表的內容,條件是他們只會存取這些項目中的特定項目和特定屬性。下列政策允許使用者 John
從信任 AWS 帳戶 ID 111111111111
存取,以使用 GetItem API 從帳戶 123456789012
中的資料表存取資料。此政策可確保使用者只能存取具有主索引鍵 Jane
的項目,而且使用者只能擷取屬性 Artist
和 SongTitle
,但不能擷取其他屬性。
如果您未指定SPECIFIC_ATTRIBUTES
條件,您會看到傳回項目的所有屬性。
- JSON
-
-
{
"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
的身分型政策範例。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CrossAccountIdentityBasedPolicy",
"Effect": "Allow",
"Action": [
"dynamodb:GetItem"
],
"Resource": [
"arn:aws:dynamodb:us-east-1
: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
。
- JSON
-
-
{
"Id":"PolicyId2",
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AllowIPmix",
"Effect":"Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111
:user/username
"
},
"Action":"dynamodb:*",
"Resource":"*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"54.240.143.0/24",
"2001:DB8:1234:5678::/64"
]
}
}
}
]
}
您也可以拒絕對 DynamoDB 資源的所有存取,除非來源是特定 VPC 端點,例如 vpce-1a2b3c4d
。
- JSON
-
-
{
"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 動作。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1111",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::111122223333
:role/role-name
" },
"Action": "dynamodb:*",
"Resource": [
"arn:aws:dynamodb:us-east-1
:123456789012
:table/MusicCollection
",
"arn:aws:dynamodb:us-east-1
:123456789012
:table/MusicCollection
/*"
]
}
]
}