如何使用 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,请在美国东部(弗吉尼亚北部)创建 IPSet,即 us-east-1 区域。

创建 IPSet

完成以下步骤:

  1. 登录 AWS CLI。
  2. 运行 create-ip-set 命令来创建 IPSet。
    注意:****-scope 指定 IPSet 是用于 CloudFront 分配还是区域应用程序。区域应用程序包括:应用程序负载均衡器、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"
        }
    ]
}

**注意:**如果您为 Limit 指定一个值并且拥有的 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 的 IDLockToken
    以下输出是获取 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 配置。包括 IDLockToken 值:

    $ 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 的更改。包括 IDNextLockToken 值:

    $ 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 的 IDLockToken

    $ 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 文件。包括 IDLockToken 值:

    $ 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 的更改。包括 IDNextLockToken 值:

    $ 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 官方已更新 1 年前