IAM JSON ポリシーの要素: Resource - AWS Identity and Access Management

IAM JSON ポリシーの要素: Resource

Resource エレメントは、ステートメントで取り扱う一連のオブジェクトを指定します。ステートメントには、Resource または NotResource エレメントを含める必要があります。ARN を使用して、リソースを特定します。ARN の形式についての詳細は、IAM ARNを参照してください。

各サービスには、それぞれ一連のリソースがあります。リソースを特定するためには必ず ARN を使用しますが、それぞれのリソースの ARN の詳細は、そのサービスおよびリソースによって異なります。リソースの指定方法については、ステートメントを記述するサービスのドキュメントを参照してください。

注記

一部のサービスでは、個々のリソースに対してアクションを指定することができず、代わりにActionまたはNotActionエレメントでリストしたアクションがサービス内のすべてのリソースに適用されます。その場合、Resourceエレメント内でワイルドカード (*) を使用してください。

以下の例は、特定の Amazon SQS キューを示しています。

"Resource": "arn:aws:sqs:us-east-2:account-ID-without-hyphens:queue1"

以下の例は、AWS アカウント内のボブという名の IAM ユーザーを示しています。

注記

各 IAM ユーザー名は一意で、大文字と小文字は区別されません。

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

リソース ARN でのワイルドカードの使用

リソース ARN の一部にワイルドカードを使用することができます。ARN セグメント (コロンで区切られている部分) でワイルドカード文字 (* と ?) を使用できます。アスタリスク (*) は 0 個以上の文字の任意の組み合わせを表し、疑問符 (?) は任意の 1 文字を表します。各セグメントで複数の * または ? 記号を使用できます。以下の例は、/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/

前のリストの最後の 2 つのオブジェクトを考えてみましょう。Amazon S3 オブジェクト名は、従来の区切り記号のスラッシュ (/) 文字で有効に開始または終了できます。「/」は区切り文字として機能しますが、リソース ARN 内でこの文字が使用される場合は特に意味がありません。これは、他の有効な文字と同じように扱われます。ARN は次のオブジェクトと一致しません。

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

複数のリソースの指定

複数のリソースを特定することができます。以下の例は、2 つの 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 ポリシー変数を使用できます。たとえば、リソース ARN の一部としてキー {aws:username} を使用することで、現在のユーザー名をリソースの名前の一部として含める必要があることを示すことができます。以下の例は、{aws:username} エレメント内での Resource キーの使用方法を示します。ポリシーは、現在のユーザー名に一致する Amazon DynamoDB テーブルへのアクセスを許可します。

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

JSON ポリシー変数の詳細については、「IAM ポリシーの要素: 変数とタグ」を参照してください。