AWS CLI を使用して AWS WAF IPSet を作成、一覧表示、更新する方法を教えてください。

最終更新日: 2020 年 1 月 22 日

AWS コマンドラインインターフェイス (AWS CLI) を使用して、AWS WAF で IPSet を作成、一覧表示、更新する方法を教えてください。

簡単な説明

IPSet は、リクエストの送信元の IP アドレスに基づいて許可または拒否するウェブリクエストを指定します。IPSet を使用すると、AWS CLI を使用してウェブアクセスコントロールリスト (ACL) の IP アドレスのセットを定義できます。

解決方法

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

この解決方法では、waf-regional CLI (利用可能な botocore バージョン 1.4.85 以降) を使用して、特定の AWS リージョンに IPSet を作成します。Amazon CloudFront でグローバル IPSet を作成する場合は、waf CLI を使用できます。

重要: waf-regional コマンドを使用する場合は、先に進む前に AWS CLI のデフォルトのリージョンを確認し、IPSet を作成するリージョンであることを確認します。それ以外の場合は、コマンドで IPSet に正しい AWS リージョンを指定する必要があります (--region オプションを使用)。

IPSet の作成

1.   AWS CLI にサインインします。

2.   コマンド get-change-token を使用して変更トークンを生成します。

注意: 変更トークンにより、アプリケーションが AWS WAF に競合するリクエストを送信できなくなります。変更トークンを取得し、AWS WAF オブジェクトを作成、更新、または削除するすべてのリクエストに含める必要があります。各リクエストは、一意の変更トークンを使用する必要があります。詳細については、GetChangeToken を参照してください。

出力例:

$ aws waf-regional get-change-token
{
    "ChangeToken": "96836241-b667-4f0a-a655-e4bc49eaa2c4"
}

3.   create-ip-set コマンドを使用して IPSet を作成します。出力例:

$ aws waf-regional create-ip-set --name test_ipset --change-token 96836241-b667-4f0a-a655-e4bc49eaa2c4
{
    "IPSet": {
        "IPSetId": " bd37ef8c-102b-4d7a-9532-80fb97e4c281",
        "Name": "test_ipset",
        "IPSetDescriptors": []
    },
    "ChangeToken": "96836241-b667-4f0a-a655-e4bc49eaa2c4"
}

IPSet の一覧表示

IPSet を一覧表示するには、list-ip-sets コマンドを使用します。レスポンスは IPSetSummary オブジェクトの配列を返します。

出力例:

$ aws waf-regional list-ip-sets
{
    "IPSets": [
        {
            "IPSetId": "bd37ef8c-102b-4d7a-9532-80fb97e4c281",
            "Name": "test-ipset"
        }
    ],
    "NextMarker": "bd37ef8c-102b-4d7a-9532-80fb97e4c281"
}

注意: [Limit] の値を指定し、この値より多くの IPSet がある場合、AWS WAF は NextMarker 値を返します。リクエストパラメータを参照してください。

IPSet の更新

IPSet を更新するには、短縮構文または JSON ファイルを使用して、update-ip-set コマンドを使用します。

注意: API 呼び出しごとに最大 1,000 の IP アドレスを更新できます。 

短縮構文メソッド:

$ aws waf-regional update-ip-set --ip-set-id bd37ef8c-102b-4d7a-9532-80fb97e4c281 --change-token c47ddcba-d128-4ec9-acd6-ce981c6655c5 --updates Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.1/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.2/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.3/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.4/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.5/32"}'
{
    "ChangeToken": " c47ddcba-d128-4ec9-acd6-ce981c6655c5"
}

JSON ファイルメソッド:

1.   前のセクションの IPSet の作成で説明したように、コマンド get-change-token を使用して変更トークンを生成します。

2.   任意のエディタを使用して、更新リクエストの構文で JSON ファイル (test.json など) を作成します。例:

$ nano test.json
{
       "ChangeToken": "b3d8178a-666a-484a-92af-1dcd02cafcfa",
       "IPSetId": "bd37ef8c-102b-4d7a-9532-80fb97e4c281",
       "Updates": [{
              "Action": "DELETE",
              "IPSetDescriptor": {
                      "Type": "IPV4",
                      "Value": "192.168.2.5/32"
              }
       }]
}

3.   update-ip-set コマンドを使用し、先ほど作成した JSON ファイルを用いて IPSet にリクエストされた変更を行います。例:

$ aws waf-regional update-ip-set --ip-set-id bd37ef8c-102b-4d7a-9532-80fb97e4c281 --cli-input-json file:///home/ec2-user/test.json
{
    "ChangeToken": "b3d8178a-666a-484a-92af-1dcd02cafcfa"
}

4.   get-ip-set コマンドを使用して、IPSet に対してリクエストした変更を検証します。例:

$ aws waf-regional get-ip-set --ip-set-id bd37ef8c-102b-4d7a-9532-80fb97e4c281
{
    "IPSet": {
        "IPSetId": "bd37ef8c-102b-4d7a-9532-80fb97e4c281",
        "Name": "test-ipset",
        "IPSetDescriptors": [
            {
                "Type": "IPV4",
                "Value": "192.168.2.2/32"
            },
            {
                "Type": "IPV4",
                "Value": "192.168.2.3/32"
            },
            {
                "Type": "IPV4",
                "Value": "192.168.2.1/32"
            },
            {
                "Type": "IPV4",
                "Value": "192.168.2.4/32"
            }
        ]
    }
}

AWS WAF (サポートされる API アクション)

IP 一致条件の操作 (AWS WAF コンソール)

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?