概要
- API Gatewayでは、S3のバケットポリシーの様にリソースポリシーを定義することが可能です。今回は、API Gateway のリソースポリシーを使い、アクセス元IPアドレスのホワイトリストを作成する方法をご紹介します。
リソースポリシーの書き方
- リソースポリシーには、許可(Allow)、拒否(Deny)のどちらでも記載が可能です。以下サンプルは、許可(Allow)のパターンとなります。
- Conditionには、「SourceIp」だけでなく、「SourceVpc」を指定することも可能です。詳細は、下記ドキュメントを参照ください。
API Gateway リソースポリシーの例 - Amazon API Gateway
このページでは、API Gateway リソースポリシーの一般的なユースケースの例をいくつか紹介します。このポリシーでは、 account-id および api-id の文字列がリソース値に使用されます。これらのポリシーをテストするには、これらの文字列を独自のアカウント ID および API ID に置き換える必要があります。アクセスポリシー言語の詳細については、「 」を参照してください。
API Gateway リソースポリシーで使用できる AWS の条件キー - Amazon API Gateway
以下のテーブルに、API Gateway の API のリソースポリシーで使用できる AWS 条件キーの詳細なリストを認証タイプごとに示します。
- API Gatewayコンソールに接続し、対象となるAPIを選択します。左側の展開されたメニューより、「リソースポリシー」を選びます。
- 下記の通り、リソースポリシーをJSONで記載します。「保存」を押します。
- 以下、ポリシーのサンプルです。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:ap-northeast-1:123456789012:abcdefg456/*" ], "Condition" : { "IpAddress": { "aws:SourceIp": [ "162.XXX.XXX.XXX/30", "204.XXX.XXX.XXX/32" ] } } } ] }
ポリシー変更後に行う大切なこと
- リソースポリシーを更新後に行う大切なこととして、再度APIのデプロイを行う必要があります。再デプロイを忘れると、エラーメッセージに記載の403 Forbiddenが返ります。ご注意ください。
エラーメッセージ
- IPホワイトリストに許可されていないIPアドレスからアクセスを行った場合、403 Forbiddenが返ります。前述の手順通り、IPアドレスをホワイトリストに登録しましょう。
{"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:ap-northeast-1:********9012:abcdefg456/prod/test"}