View a markdown version of this page

IAM JSON 政策元素:Resource - AWS Identity and Access Management

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

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 (ARNs識別 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 資料表。

JSON
{ "Version":"2012-10-17", "Statement": { "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/${aws:username}" } }

如需有關 JSON 政策變數的詳細資訊,請參閱 IAM 政策元素:變數與標籤。