メニュー
Amazon API Gateway
開発者ガイド

API を呼び出すためのアクセスの制御

このセクションでは、API Gateway でのデプロイされた API の呼び出しを誰に許可するか誰に許可しないかを制御するための IAM ポリシーステートメントを記述する方法について説明します。また、API 実行サービスに関連する Resource フィールドと Action フィールドの形式など、ポリシーステートメントのリファレンスも提供します。

IAM ポリシーを使用した API Gateway API メソッドの呼び出しを誰に許可するかを制御する

デプロイされた API を IAM のアクセス権限を使用して呼び出すことを誰に許可するか誰に許可しないかを制御するには、必要なアクセス権限を設定した IAM ポリシードキュメントを作成します。そのようなポリシードキュメントのテンプレートを以下に示します。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Permission", "Action": [ "execute-api:Execution-operation" ], "Resource": [ "arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/Resource-path" ] } ] }

この場合、含まれているアクセス権限を付与または拒否するかどうかに応じて、PermissionAllow または Deny に置き換えられます。Execution-operation は、API 実行サービスでサポートされているオペレーションに置き換えられます。METHOD_HTTP_VERB は、指定されたリソースによってサポートされている HTTP 動詞を表します。Resource-path は、METHOD_HTTP-VERB をサポートしている、デプロイされた API Resource インスタンスの URL パスのプレースホルダーです。詳細については、「API Gateway で API を実行するための IAM ポリシーのステートメントの参照」を参照してください。

注記

IAM ポリシーが有効になるには、API メソッドで IAM 認証を有効にしている必要があり、そのためには API メソッドの authorizationType プロパティとして AWS_IAM を設定します。認証を有効にしない場合、これらの API メソッドは実質的にパブリックにアクセス可能になります。

特定のリソースで AWS アイデンティティ管理とアクセス管理が有効になっていると、API Gateway では現在クロスアカウント認証がサポートされていないため、呼び出し元がリソース所有者のロールを引き受けることができない限り、IAM ユーザーは複数の異なる AWS アカウントからそのリソースにアクセスすることはできません。

たとえば、指定された API で公開されているペットのリストを表示するアクセス権限は付与するが、リストにペットを追加するアクセス権限は拒否する場合は、次のようなポリシーステートメントを作成できます。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/*/GET/pets" ] }, { "Effect": "Deny", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/*/POST/pets" ] } ] }

API をテストする開発チームの場合は、次のようなポリシーステートメントを作成すると、チームは test ステージの任意の開発者による API の任意のリソースで任意のメソッドを呼び出すことができます。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke", "execute-api:InvalidateCache" ], "Resource": [ "arn:aws:execute-api:*:*:*/test/*" ] } ] }

API Gateway で API を実行するための IAM ポリシーのステートメントの参照

次の情報で API を実行するためのアクセス権限の IAM ポリシーステートメントのアクションおよびリソース形式について説明します。

API Gateway で API を実行するためのアクセス権限のアクション形式

API 実行の Action 式には、以下の一般的な形式があります。

Copy
execute-api:action

ここで、action は使用可能な API; 実行アクションです。

  • *。以下のすべてのアクションを表します。

  • [Invoke] は、クライアントリクエストに応じて、API を呼び出すために使用されます。

  • [InvalidateCache] は、クライアントリクエストに応じて、API キャッシュを無効にするために使用されます。

API Gateway で API を実行するためのアクセス権限のリソース形式

API 実行の Resource 式には、以下の一般的な形式があります。

Copy
arn:aws:execute-api:region:account-id:api-id/stage-name/HTTP-VERB/resource-path-specifier

各パラメーターの意味は次のとおりです。

  • region は、メソッドのデプロイされた API に対応する AWS リージョン (us-east-1、またはすべての AWS リージョンを表す *) です。

  • account-id は、REST API 所有者の 12 桁の AWS アカウント ID です。

  • api-id は、メソッドの API に割り当てられた API Gateway 識別子です (* は、API の識別子にかかわらず、すべての API を表すために使用できます)。

  • stage-name は、メソッドに関連付けられたステージの名前です (* は、ステージの名前にかかわらず、すべてのステージを表すために使用できます)。

  • HTTP-VERB はメソッドの HTTP 動詞です。これは、GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS のいずれかとすることができます。

  • リソースパス指定子は、目的のメソッドへのパスです (* はすべてのパスを表すために使用できます)。

以下に示しているのは、いくつかのリソース式の例です。

  • arn:aws:execute-api:*:*:*。任意の AWS リージョンの、任意の API の、任意のステージの、任意のリソースパスを表します (これは * に相当します)。

  • arn:aws:execute-api:us-east-1:*:*。AWS リージョンが us-east-1 の、任意の API の、任意のステージの、任意のリソースパスを表します。

  • arn:aws:execute-api:us-east-1:*:api-id/*。AWS リージョンが us-east-1 で、識別子が api-id の API の、任意のステージの、任意のリソースパスを表します。

  • arn:aws:execute-api:us-east-1:*:api-id/test/*。AWS リージョンが us-east-1 で、識別子が api-id の API で、ステージが test のリソースパスを表します。

  • arn:aws:execute-api:us-east-1:*:api-id/test/*/mydemoresource/*。AWS リージョンが us-east-1 で、識別子が api-id の API で、ステージが test の HTTP メソッドで、パスが mydemoresource の、任意のリソースパスを表します。

  • arn:aws:execute-api:us-east-1:*:api-id/test/GET/mydemoresource/*。AWS リージョンが us-east-1 で、識別子が api-id の API で、ステージが test で、パスが mydemoresource の、任意のリソースパスの GET メソッドを表します。