IAM JSON 政策元素:Resource
IAM 政策陳述式中的 Resource
元素可指定套用該陳述式的一個或多個物件。陳述式必須包含 Resource
或 NotResource
元素。
您可以使用 Amazon Resource Name (ARN) 來指定資源。ARN 的格式取決於您參考的 AWS 服務和特定資源。雖然 ARN 格式不同,但務必使用 ARN 來識別資源。如需有關 ARN 格式的詳細資訊,請參閱 IAM ARN。如需有關如何指定資源的詳細資訊,請參閱您要撰寫陳述式的服務文件。
注意
有些 AWS 服務不允許您指定個別資源的動作。在這些情況下,您在 Action
或 NotAction
元素中列出的任何動作都會套用至該服務中的所有資源。在這種情況下,您可以在 Resource
元素中使用萬用字元 (*
)。
以下範例參考特定的 Amazon SQS 佇列。
"Resource": "arn:aws:sqs:us-east-2:
account-ID-without-hyphens
:queue1"
以下範例參考 AWS 帳戶中名為 Bob
的 IAM 使用者。
注意
在 Resource
元素中,IAM 使用者名稱區分大小寫。
"Resource": "arn:aws:iam::
account-ID-without-hyphens
:user/Bob"
在資源 ARN 中使用萬用字元
可以在 ARN 的個別區段內 (各部分以冒號分隔) 使用萬用字元 (*
和 ?
)。
-
字元的任意組合 (
*
) -
任何單一字元 (
?
)
您可以在每個區段中使用多個 *
或 ?
字元。如果萬用字元 *
是資源 ARN 區段的最後一個字元,則其可以展開,以符合冒號界限以外的內容。我們建議您在由冒號分隔的 ARN 區段內使用萬用字元 (*
和 ?
)。
注意
您無法在識別 AWS 產品的服務區段中使用萬用字元。如需 ARN 客群的詳細資訊,請參閱 使用 Amazon Resource Name (ARN) 識別 AWS 資源。
以下範例參考路徑為 /accounting
的所有 IAM 使用者。
"Resource": "arn:aws:iam::
account-ID-without-hyphens
:user/accounting/*"
以下範例參考特定 Amazon S3 儲存貯體中的所有項目。
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
星號 (*
) 字元可以展開以取代區段內的所有項目,包括如正斜線 (/
) 等字元,這些字元可能會顯示為指定服務命名空間內的分隔符號。例如,假設下列 Amazon S3 ARN,因為相同的萬用字元擴充邏輯適用於所有服務。
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*/test/*"
ARN 中的萬用字元適用於儲存貯體中的所有以下物件,而不僅僅是列出的第一個物件。
amzn-s3-demo-bucket/1/test/object.jpg amzn-s3-demo-bucket/1/2/test/object.jpg amzn-s3-demo-bucket/1/2/test/3/object.jpg amzn-s3-demo-bucket/1/2/3/test/4/object.jpg amzn-s3-demo-bucket/1///test///object.jpg amzn-s3-demo-bucket/1/test/.jpg amzn-s3-demo-bucket//test/object.jpg amzn-s3-demo-bucket/1/test/
考慮上一個清單中的最後兩個物件。Amazon S3 物件名稱可以傳統分隔符號正斜線 (/
) 字元開頭或結尾。雖然 /
作為分隔符,但在資源 ARN 中使用此字元時卻沒有特定的意義。它被視為與任何其他有效字元相同。ARN 不符合下列物件:
amzn-s3-demo-bucket/1-test/object.jpg amzn-s3-demo-bucket/test/object.jpg amzn-s3-demo-bucket/1/2/test.jpg
指定多個資源
您可以使用 ARNs 陣列,在 Resource
元素中指定多個資源。以下範例參考兩個 DynamoDB 資料表。
"Resource": [ "arn:aws:dynamodb:us-east-2:
account-ID-without-hyphens
:table/books_table", "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens
:table/magazines_table" ]
在資源 ARN 中使用政策變數
在 Resource
元素中,您可以在 ARN 中用於識別特定資源 (即 ARN 的尾隨部分) 的部分中使用 JSON 政策變數。例如,您可以使用索引鍵 {aws:username}
做為資源 ARN 的一部分,以表示目前使用者的名稱應做為資源名稱的一部分包含在內。以下範例顯示如何在 {aws:username}
元素中使用 Resource
索引鍵。此政策允許存取與目前使用者名稱符合的 Amazon DynamoDB 資料表。
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:us-east-2:
account-id
:table/${aws:username}" } }
如需有關 JSON 政策變數的詳細資訊,請參閱 IAM 政策元素:變數與標籤。