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

所要時間3分
0

AWS コマンドラインインターフェイス (AWS CLI) を使用して、AWS WAF の IPSet を作成、一覧表示、取得、更新したいです。

解決策

**注:**AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

この解決策では wafv2 を使用し、特定の AWS リージョンの IPSet または、Amazon CloudFront で使用するグローバル IPSet を作成します。

先に進む前に、AWS CLI のデフォルトリージョンが IPSet を作成する対象のリージョンであることを確認してください。必要に応じて、**-region ** オプションを使用してリージョンを更新します。CloudFront を使用する場合は、米国東部 (バージニア北部) の us-east-1 リージョンに IPSet を作成します。

IPSet を作成する

次の手順を実行します。

  1. AWS CLI にサインインします。
  2. create-ip-set コマンドを実行して IPSet を作成します。
    注: -scope で、IPSet が CloudFront ディストリビューション用かリージョナルアプリケーション用かを指定します。リージョナルアプリケーションには、Application Load Balancer、Amazon API Gateway、REST API、AWS AppSync、GraphQL API、Amazon Cognito ユーザープールなどがあります。
    次の出力は、リージョン IPSet の例です。
    $ aws wafv2 create-ip-set --name ipv4-block --scope REGIONAL --ip-address-version IPV4 --addresses 10.1.1.1/32 --region us-west-1{
        "Summary": {
            "Name": "ipv4-block",
            "Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
            "Description": "",
            "LockToken": "c54cc0d5-42dc-4b4b-9335-a86c7ad784a6",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b"
        }
    }
    次の出力は、CloudFront IPSet の例です。
    $ aws wafv2 create-ip-set --name ipv4-block-cf --scope CLOUDFRONT --ip-address-version IPV4 --addresses 10.1.1.1/32 --region us-east-1{
        "Summary": {
            "Name": "ipv4-block-cf",
            "Id": "1fef3860-8b6e-4201-8a56-6d8d49e93057",
            "Description": "",
            "LockToken": "9e9bc59e-678e-4b83-98d8-5a4c119b0123",
            "ARN": "arn:aws:wafv2:us-east-1:1111222233334444:global/ipset/ipv4-block-cf/1fef3860-8b6e-4201-8a56-6d8d49e93057"
        }
    }

IPSet を一覧表示する

すべての IPSet を一覧表示するには、list-ip-sets コマンドを実行します。

次の出力は、リージョン IPSet の例です。

$ aws wafv2 list-ip-sets --scope REGIONAL --region us-west-1{
    "NextMarker": "ipv4-block",
    "IPSets": [
        {
            "Name": "ipv4-block",
            "Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
            "Description": "",
            "LockToken": "c54cc0d5-42dc-4b4b-9335-a86c7ad784a6",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b"
        }
    ]
}

次の出力は、CloudFront IPSet の例です。

$ aws wafv2 list-ip-sets --scope CLOUDFRONT --region us-east-1{
    "NextMarker": "ipv4-block-cf",
    "IPSets": [
        {
            "Name": "ipv4-block-cf",
            "Id": "1fef3860-8b6e-4201-8a56-6d8d49e93057",
            "Description": "",
            "LockToken": "9e9bc59e-678e-4b83-98d8-5a4c119b0123",
            "ARN": "arn:aws:wafv2:us-east-1:1111222233334444:global/ipset/ipv4-block-cf/1fef3860-8b6e-4201-8a56-6d8d49e93057"
        }
    ]
}

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

IPSet を取得する

特定の IPSet を取得するには、get-ip-set コマンドを実行します。

次の出力は、リージョン IPSet の例です。

$ aws wafv2 list-ip-sets --scope CLOUDFRONT --region us-east-1{
    "NextMarker": "ipv4-block-cf",
    "IPSets": [
        {
            "Name": "ipv4-block-cf",
            "Id": "1fef3860-8b6e-4201-8a56-6d8d49e93057",
            "Description": "",
            "LockToken": "9e9bc59e-678e-4b83-98d8-5a4c119b0123",
            "ARN": "arn:aws:wafv2:us-east-1:1111222233334444:global/ipset/ipv4-block-cf/1fef3860-8b6e-4201-8a56-6d8d49e93057"
        }
    ]
}

IPSet を更新する

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

短縮構文

次の手順を実行します。

  1. get-ip-set コマンドを実行し、更新する IPSet の ID および LockToken を取得します。
    次の出力は、IPSet を取得するための短縮構文の例です。

    $ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id fbce0c08-476b-4487-af2c-e38f0303ac5f --region eu-west-1
    {
        "IPSet":
        {
           "Name": "ipv4-block",
           "Id": "fbce0c08-476b-4487-af2c-e38f0303ac5f",
           "ARN": "arn:aws:wafv2:eu-west-1:11111111:regional/ipset/ipv4-block/fbce0c08-476b-4487-af2c-e38f0303ac5f",
            "Description": "",
            "IPAddressVersion": "IPV4",
            "Addresses": [
            "10.1.1.2/32",
            "10.1.1.1/32"
                ]
        },
     "LockToken": "14562ba3-f99b-4e39-a232-51a703302c88"
    }

    注: AWS WAF はオプティミスティックロックにトークンを使用します。トークンに関連付けられているエンティティを変更するには、更新削除などの操作にトークンを含めます。AWS WAF はトークンを使用して、最後にエンティティを取得した後にエンティティに変更が加えられていないことを確認します。変更が行われた場合、WAFOptimisticLockException が発生し、更新は失敗します。この問題を解決するには、get-ip-set コマンドを再実行します。次に、操作によって返される新しいトークンを使用します。

  2. update-ip-set コマンドを実行し、現在の IPSet 設定を新しい設定で上書きします。ID および LockToken の値を含めます。

    $ aws wafv2 update-ip-set --name ipv4-block --scope REGIONAL --id 952c5e24-2352-4a1e-a90b-01499086be1b --addresses "10.1.1.1/32" "10.1.1.2/32" --lock-token c54cc0d5-42dc-4b4b-9335-a86c7ad784a6 --region us-west-1{
        "NextLockToken": "a459c121-f160-4475-9352-fa602ff33df7"
    }
  3. get-ip-set コマンドを実行し、IPSet への変更を確認します。ID および NextLockToken の値を含めます。

    $ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --region us-west-1{
        "IPSet": {
            "Name": "ipv4-block",
            "Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b",
            "Description": "",
            "IPAddressVersion": "IPV4",
            "Addresses": [
                "10.1.1.2/32",
                "10.1.1.1/32"
            ]
        },
        "LockToken": "a459c121-f160-4475-9352-fa602ff33df7"
    }

JSON ファイル

次の手順を実行します。

  1. 任意のエディタを使用して、更新したリクエスト構文で JSON ファイルを作成します。

    $ nano ip.json{
        "Addresses": ["10.1.1.0/24", "10.1.2.0/24", "10.1.3.0/24"]
    }
  2. get-ip-set コマンドを実行し、更新する IPSet の ID および LockToken を取得します。

    $ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --region us-west-1{
        "IPSet": {
            "Name": "ipv4-block",
            "Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b",
            "Description": "",
            "IPAddressVersion": "IPV4",
            "Addresses": [
                "10.1.1.2/32",
                "10.1.1.1/32"
            ]
        },
        "LockToken": "a459c121-f160-4475-9352-fa602ff33df7"
    }
  3. update-ip-set コマンドを実行し、現在の IPSet 設定を新しい設定で上書きします。IP アドレスは、インラインでリストしないでください。代わりに、JSON ファイルを参照する必要があります。ID および LockToken の値を含めます。

    $ aws wafv2 update-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --lock-token a459c121-f160-4475-9352-fa602ff33df7 --region us-west-1 --cli-input-json file://ip.json{
        "NextLockToken": "238872dc-fcfb-4a45-93fd-115cfcc94480"
    }
  4. get-ip-set コマンドを実行し、IPSet への変更を確認します。ID および NextLockToken の値を含めます。

    $ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --region us-west-1{
        "IPSet": {
            "Name": "ipv4-block",
            "Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b",
            "Description": "",
            "IPAddressVersion": "IPV4",
            "Addresses": [
                "10.1.1.0/24",
                "10.1.2.0/24",
                "10.1.3.0/24"
            ]
        },
        "LockToken": "238872dc-fcfb-4a45-93fd-115cfcc94480"
    }

関連情報

AWS WAFV2

AWS WAF V2 用のアクション、リソース、条件キー

IP セットの作成と管理

AWS公式
AWS公式更新しました 10ヶ月前
コメントはありません