API を呼び出すためのアクセスの制御
このセクションでは、IAM アクセス許可を使用して API へのアクセスを制御するためのアクセス許可モデルについて説明します。テンプレートの IAM ポリシーステートメントとポリシーステートメントのリファレンスを示します。ポリシーステートメントのリファレンスには、API 実行サービスに関連する Action
フィールドと Resource
フィールドの形式が含まれています。これらのリファレンスを使用して、IAM ポリシーステートメントを作成します。IAM ポリシーステートメントを作成するときは、API Gateway リソースポリシーが承認ワークフローにどのように影響するかを検討する必要がある場合があります。詳細については、「API Gateway リソースポリシーが認可ワークフローに与える影響」を参照してください。
プライベート 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
" ] } ] }
この場合、含まれているアクセス許可を付与または拒否するかどうかに応じて、
は Permission
Allow
または Deny
に置き換えられます。
は、API 実行サービスでサポートされているオペレーションに置き換えられます。Execution-operation
は、指定されたリソースによってサポートされている HTTP 動詞を表します。METHOD_HTTP_VERB
は、Resource-path
をサポートしている、デプロイされた API METHOD_HTTP_VERB
Resource
インスタンスの URL パスのプレースホルダーです。詳細については、「API Gateway で API を実行するための IAM ポリシーのステートメントの参照」を参照してください。
注記
IAM ポリシーが有効になるには、API メソッドで IAM 認証を有効にしている必要があり、そのためには API メソッドの authorizationType
プロパティとして AWS_IAM
を設定します。認証を有効にしない場合、これらの 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/
として設定された API によって公開されている特定のペットを表示するユーザーアクセス許可を付与するには、IAM ポリシーに以下のステートメントを含めることができます。{petId}
{ "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
は、目的のメソッドへのパスです
注記
ワイルドカード (*
) を指定すると、Resource
式はそのワイルドカードを式の残りの部分に適用します。
以下に示しているのは、いくつかのリソース式の例です。
-
arn:aws:execute-api:*:*:*
。任意の AWS リージョンの、任意の API の、任意のステージの、任意のリソースパスを表します。 -
arn:aws:execute-api:us-east-1:*:*
。us-east-1
の AWS リージョンにおける、任意の API の、任意のステージの、任意のリソースパスを表します。 -
任意のステージの任意のリソースパス、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) リファレンス」を参照してください。