ポリシーの構造
次のトピックでは、IAM ポリシーの簡単な構造について説明します。
ポリシー構文
IAM ポリシーは 1 つ以上のステートメントで構成される JSON ドキュメントです。各ステートメントは次のように構成されます。
{ "Statement":[{ "Effect":"
effect
", "Action":"action
", "Resource":"arn
", "Condition":{ "condition
":{ "key
":"value
" } } } ] }
ステートメントはさまざまなエレメントで構成されます。
-
[Effect]: effect は、
Allow
またはDeny
にすることができます。デフォルトでは、IAM ユーザーはリソースおよび API アクションを使用するアクセス許可がないため、リクエストはすべて拒否されます。明示的な許可はデフォルトに優先します。明示的な拒否はすべての許可に優先します。 -
[Action]: action は、アクセス許可を付与または拒否する対象とする、特定の API アクションです。action の指定については、AWS Batch のアクション を参照してください。
-
[Resource]: アクションによって影響を及ぼされるリソースです。AWS Batch API アクションの中には、アクションによって作成/変更できるリソースをポリシー内で特定できるものもあります。ステートメントでリソースを指定するには、Amazon リソースネーム (ARN) を使用します。詳細については、「AWS Batch API アクションでサポートされるリソースレベルのアクセス許可」および「AWS Batch 用の Amazon リソースネーム」を参照してください。AWS Batch API オペレーションで現在リソースレベルのアクセス許可がサポートされていない場合、ワイルドカード (*) を使用して、アクションがすべてのリソースに影響するように指定する必要があります。
-
[Condition]: condition はオプションです。ポリシーの発効条件を指定するために使用します。
AWS Batch の IAM ポリシーステートメント例についての詳細は、「AWS Batch IAM ポリシーの作成」を参照してください。
AWS Batch のアクション
IAM ポリシーステートメントで、IAM をサポートするすべてのサービスから任意の API アクションを指定できます。AWS Batch の場合、API アクション
batch:
の名前で次のプレフィックスを使用します。例: batch:SubmitJob
および batch:CreateComputeEnvironment
。
単一のステートメントに複数のアクションを指定するには、次のようにカンマで区切ります。
"Action": ["batch:action1", "batch:action2"]
ワイルドカードを使用して複数のアクションを指定することもできます。たとえば、以下のように「Describe」という単語で始まる名前のすべてのアクションを指定できます。
"Action": "batch:Describe*"
AWS Batch API アクションをすべて指定するには、* ワイルドカードを以下のように使用します。
"Action": "batch:*"
AWS Batch アクションのリストについては、AWS Batch API リファレンス の Actions を参照してください。
AWS Batch 用の Amazon リソースネーム
各 IAM ポリシーステートメントは、ARN を使用して指定したリソースに適用されます。
ARN には以下の一般的な構文があります。
arn:aws:[service]:[region]:[account]:resourceType/resourcePath
- service
-
サービス (例:
batch
)。 - リージョン
-
リソースのリージョン (例:
us-east-1
)。 - アカウント
-
ハイフンなしの AWS アカウント ID (例:
123456789012
)。 - resourceType
-
リソースの種類 (例:
compute-environment
)。 - resourcePath
-
リソースを識別するパス。パスにワイルドカードの * が使用できます。
AWS Batch API オペレーションでは、複数の API オペレーションにおけるリソースレベルのアクセス許可がサポートされるようになりました。詳細については、「AWS Batch API アクションでサポートされるリソースレベルのアクセス許可」を参照してください。すべてのリソースを指定する場合、または特定の API アクションが ARN をサポートしていない場合は、以下の要領で、Resource
エレメント内で * ワイルドカードを使用します。
"Resource": "*"
ユーザーが必要なアクセス許可を持っているかどうかを確認する
IAM ポリシーを本稼働環境に置く前に、そのポリシーがユーザーに特定の API アクションおよび必要なリソースを使用するアクセス許可を付与しているかどうかを確認することをお勧めします。
まずテスト目的の IAM ユーザーを作成し、IAM ポリシーをテストユーザーにアタッチします。次に、テストユーザーとしてリクエストを作成します。テストリクエストは、コンソールまたは AWS CLI を使用して行うことができます。
注記
IAM ポリシーシミュレーターを使用してポリシーをテストすることもできます。ポリシーシミュレーターの詳細については、IAM ユーザーガイド の「IAM ポリシーシミュレーターの使用」を参照してください。
ポリシーが想定したアクセス許可をユーザーに付与していない場合、または過度に許可されている場合、必要に応じてポリシーを調整できます。必要な結果を得るまで再テストします。
重要
ポリシーの変更が反映され、有効になるには数分間かかります。したがって、ポリシーの更新をテストするには 5 分かかると見ておいてください。
認証チェックが失敗した場合、リクエストでは診断情報でエンコードされたメッセージが返されます。DecodeAuthorizationMessage
アクションを使用してメッセージをデコードできます。詳細については、AWS Security Token Service API リファレンス の「DecodeAuthorizationMessage」、および「AWS CLI Command Reference」の「decode-authorization-message」を参照してください。