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

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

IAM JSON 政策元素:Resource

Resource 元素指定陳述式所涵蓋的一個或多個物件。陳述式必須包含 ResourceNotResource 元素。您使用 ARN 指定資源。如需有關 ARN 格式的詳細資訊,請參閱 IAM ARN

每個服務都有自己的一組資源。雖然您始終使用 ARN 來指定資源,但資源 ARN 的詳細資訊取決於服務和資源。如需有關如何指定資源的詳細資訊,請參閱您要撰寫陳述式的服務文件。

注意

有些服務不允許您為個別的資源指定動作;相反,您在 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 區段的最後一個字元,則其可以展開,以符合冒號界限以外的內容。我們建議您在由冒號分隔的 ARN 區段內使用萬用字元 (* 和 ?)。

注意

您無法在識別 AWS 產品的服務區段中使用萬用字元。如需 ARN 客群的詳細資訊,請參閱 Amazon 資源名稱 (ARN)

以下範例參考路徑為 /accounting 的所有 IAM 使用者。

"Resource": "arn:aws:iam::account-ID-without-hyphens:user/accounting/*"

以下範例參考特定 Amazon S3 儲存貯體中的所有項目。

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"

星號 (*) 字元可以展開以取代區段內的所有項目,包括如正斜線 (/) 等字元,這些字元可能會顯示為指定服務命名空間內的分隔符號。例如,假設下列 Amazon S3 ARN,因為相同的萬用字元擴充邏輯適用於所有服務。

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*/test/*"

ARN 中的萬用字元適用於儲存貯體中的所有以下物件,而不僅僅是列出的第一個物件。

DOC-EXAMPLE-BUCKET/1/test/object.jpg DOC-EXAMPLE-BUCKET/1/2/test/object.jpg DOC-EXAMPLE-BUCKET/1/2/test/3/object.jpg DOC-EXAMPLE-BUCKET/1/2/3/test/4/object.jpg DOC-EXAMPLE-BUCKET/1///test///object.jpg DOC-EXAMPLE-BUCKET/1/test/.jpg DOC-EXAMPLE-BUCKET//test/object.jpg DOC-EXAMPLE-BUCKET/1/test/

考慮上一個清單中的最後兩個物件。Amazon S3 物件名稱可有效地以傳統分隔符號正斜線 (/) 字元開頭或結尾。雖然「/」作為分隔符,但在資源 ARN 中使用此字元時卻沒有特定的意義。它被視為與任何其他有效字元相同。ARN 不符合下列物件:

DOC-EXAMPLE-BUCKET/1-test/object.jpg DOC-EXAMPLE-BUCKET/test/object.jpg DOC-EXAMPLE-BUCKET/1/2/test.jpg

指定多個資源

您可以指定多個資源。以下範例參考兩個 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 政策元素:變數與標籤