API GatewayのリソースポリシーでIPアドレスを制限

API Gatewayの「リソースポリシー」を使用するとAPIにアクセス制限を設定することができます。ここでは、特定の送信元IPアドレスだけAPIの利用を許可するように設定して動作確認します。

リソースポリシーを設定

リソースポリシーの設定

520-aws-api-resource-policies_1.png

API Gatewayの管理画面を開き、対象APIのリソースポリシーをクリックします。

以下の設定を登録します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:ap-northeast-1:account-id:api-id/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "xxx.xxx.xxx.xxx"
                }
            }
        }
    ]
}
項目 概要
account-id 12桁のAWSアカウントIDを指定します。

520-aws-api-resource-policies_3.png
api-id API Gateway識別子を指定します。

520-aws-api-resource-policies_2.png
xxx.xxx.xxx.xxx 許可するIPアドレスを指定します。

デプロイ

設定を変更したので再度APIをデプロイします。

動作確認

許可したIPの場合

$ curl https://xxxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/message?name=wakuwaku
Hello wakuwaku

正常にAPIを実行できました。

許可したIP以外の場合

$ curl https://xxxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/message?name=wakuwaku
{"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:ap-northeast-1:********XXXX:xxxxxxxxxxx/dev/GET/message"}

APIを実行できず、上記メッセージが表示されました。

参考