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

IAM JSON 政策元素:Resource

IAM 政策陳述式中的 Resource 元素可指定套用該陳述式的一個或多個物件。陳述式必須包含 ResourceNotResource 元素。

您可以使用 Amazon Resource Name (ARN) 來指定資源。ARN 的格式取決於您參考的 AWS 服務和特定資源。雖然 ARN 格式不同,但務必使用 ARN 來識別資源。如需有關 ARN 格式的詳細資訊,請參閱 IAM ARN。如需有關如何指定資源的詳細資訊,請參閱您要撰寫陳述式的服務文件。

注意

有些 AWS 服務不允許您指定個別資源的動作。在這些情況下,您在 ActionNotAction 元素中列出的任何動作都會套用至該服務中的所有資源。在這種情況下,您可以在 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 政策元素:變數與標籤