こうこく
作 ▸
改 ▸

Amazon API Gatewayのリソースポリシーで呼び出し元IPをホワイトリスト制限

公式にIP範囲のホワイトリストのサンプルが無かったので一応

もくじ

設定方法

API Gatewayのトップ画面で対象のAPIを選択 → 左メニューの『リソースポリシー』を選択。

大きい入力欄が出てくるのでリソースポリシーをJSONで入力して保存。

左メニューの『リソース』 → 『アクション▼』 → 『APIのデプロイ』して、数分待つと反映される。

書き方は公式マニュアル参照。

Amazon API Gateway リソースポリシーを使用して API へのアクセスを制御する - Amazon API Gateway

全てのステージ・メソッド・パスで 1.1.1.1, 2.2.2.0 ~ 255 からの実行のみ許可

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/*/*/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": ["1.1.1.1", "2.2.2.0/24"]
                }
            }
        }
    ]
}

特定のステージ・メソッド・パスで 1.1.1.1 からの実行のみ許可

  • ステージ = teststage
  • メソッド = POST
  • パス = /user/update
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/teststage/POST/user/update",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "1.1.1.1"
                }
            }
        }
    ]
}

特定のステージ・メソッド・パスは 1.1.1.1 からの実行のみ許可、それ以外はどこからでも許可

  • ステージ = teststage
  • メソッド = POST
  • パス = /user/update
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/*"
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/teststage/POST/user/update",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "1.1.1.1"
                }
            }
        }
    ]
}
この記事に何かあればこちらまで (非公開)