Amazon API Gateway
開発者ガイド

API Gateway のプライベート API 用に VPC エンドポイントポリシーを使用する

インターフェイス VPC エンドポイントを使用するように API Gateway を設定することで、プライベート API のセキュリティを強化できます。インターフェイスエンドポイントは、プライベート IP アドレスを経由して AWS サービスにプライベートにアクセスできるテクノロジーである AWS PrivateLink により強化されています。VPC エンドポイントの作成の詳細については、「インターフェイスエンドポイントの作成」を参照してください。

VPC エンドポイントポリシー は、インターフェイス VPC エンドポイントにアタッチできる IAM リソースポリシーで、エンドポイントへのアクセスを制御するためのものです。詳細については、「VPC エンドポイントによるサービスのアクセスコントロール」を参照してください。エンドポイントポリシーを使用して、内部ネットワークからプライベート API にアクセスするトラフィックを制限できます。VPC エンドポイントを経由してアクセスできる特定のプライベート API へのアクセスを許可または拒否するように選択できます。

VPC エンドポイントポリシーは、API Gateway リソースポリシーと一緒に使用できます。リソースポリシーは、API にアクセスできるプリンシパルを指定するために使用されます。エンドポイントポリシーは、VPC エンドポイント経由で呼び出せるプライベート API を指定します。リソースポリシーの詳細については、「Amazon API Gateway リソースポリシーを使用して API へのアクセスを制御する」を参照してください。

VPC エンドポイントのポリシーの例

Amazon API Gateway には Amazon Virtual Private Cloud エンドポイントのポリシーを作成することができます。このポリシーでは、以下の内容を指定できます。

  • アクションを実行できるプリンシパル。

  • 実行可能なアクション。

  • 自身に対してアクションを実行できたリソース。

VPC エンドポイントにポリシーをアタッチするには 、VPC コンソールを使用する必要があります。詳細については、「VPC エンドポイントによるサービスのアクセスコントロール」を参照してください。

例 1: 2 つの API へのアクセス権限を付与する VPC エンドポイントポリシー

次のポリシー例では、ポリシーが関連付けられている VPC エンドポイントを経由して 2 つの特定の API へのアクセスを許可しています。

{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/*", "arn:aws:execute-api:us-east-1:123412341234:aaaaa11111/*" ] } ] }

例 2:GET メソッドへのアクセス権限を付与するVPC エンドポイントポリシー

次のポリシー例では、ポリシーが関連付けられている VPC エンドポイントを経由して特定の API のGET メソッドへのアクセスを許可しています。

{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/stageName/GET/*" ] } ] }

例 3: 特定の API への特定のユーザーアクセスを付与する VPC エンドポイントポリシー

次のポリシー例では、ポリシーが関連付けられている VPC エンドポイントを経由して特定の API への特定のユーザーアクセスを許可しています。

{ "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::123412341234:user/MyUser" ] }, "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/*" ] } ] }