API Gateway リソースポリシーにIPホワイトリスト

概要

  • API Gatewayでは、S3のバケットポリシーの様にリソースポリシーを定義することが可能です。今回は、API Gateway のリソースポリシーを使い、アクセス元IPアドレスのホワイトリストを作成する方法をご紹介します。
 

リソースポリシーの書き方

  • リソースポリシーには、許可(Allow)、拒否(Deny)のどちらでも記載が可能です。以下サンプルは、許可(Allow)のパターンとなります。
  • Conditionには、「SourceIp」だけでなく、「SourceVpc」を指定することも可能です。詳細は、下記ドキュメントを参照ください。
 
  • 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"}
   

APIGateway, AWS

Posted by takaaki