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

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

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

プライベート API の場合、API Gateway リソースポリシーと VPC エンドポイントポリシーを組み合わせて使用する必要があります。詳細については、次のトピックを参照してください。

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

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

{ "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 は、Resource をサポートしている、デプロイされた API METHOD_HTTP-VERB インスタンスの URL パスのプレースホルダーです。詳細については、「API Gateway で API を実行するための IAM ポリシーのステートメントの参照」を参照してください。

注記

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

たとえば、指定された API で公開されているペットのリストを表示するユーザーアクセス許可を付与するものの、リストにペットを追加するユーザーアクセス許可を拒否する場合は、次のステートメントを IAM ポリシーに含めます。

{ "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" ] } ] }

GET /pets/{petId} として設定された API によって公開されている特定のペットを表示するユーザーアクセス許可を付与するには、IAM ポリシーに以下のステートメントを含めることができます。

{ "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/a1b2" ] } ] }

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

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

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

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

execute-api:action

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

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

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

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

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

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

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 です。

  • stage-name は、メソッドに関連付けられたステージの名前です。

  • HTTP-VERB はメソッドの HTTP 動詞です。GET、POST、PUT、DELETE、PATCH のいずれかになります。

  • resource-path-specifier は、目的のメソッドへのパスです

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

  • 任意のステージの任意のリソースパス、任意の AWS リージョンの任意の API には arn:aws:execute-api:*:*:*

  • 任意のステージの任意のリソースパス、AWS リージョンが us-east-1 の任意の API には arn:aws:execute-api:us-east-1:*:*

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

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

詳細については、「API Gateway Amazon リソースネーム (ARN) リファレンス」を参照してください。