如何使用 AWS CLI 创建、列出、获取或更新 AWS WAFV2 IPSet?

3 分钟阅读
0

如何使用 AWS 命令行界面(AWS CLI) 在 AWS WAFV2 中创建、列出、获取或更新 IPSet?

简短描述

IPSet 根据请求源自的 IP 地址指定允许或阻止的 Web 请求。通过 AWS CLI,您可以使用 IPSet 来定义 web 访问控制列表(ACL)的 IP 地址集。

解决方法

**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

此解决方案使用 wafv2 CLI 在特定的 AWS 区域创建一个 IPSet 或一个全球 IPSet,用于 Amazon CloudFront。

**重要:**在继续操作之前,您必须检查 AWS CLI 的默认 AWS 区域,以验证这是您要创建 IPSet 的区域。否则,您必须在命令中为 IPSet 指定正确的 区域(使用 --region 选项)。使用 Amazon CloudFront 时,您必须在美国东部(弗吉尼亚州北部)us-east-1 Region创建 IPSet。

创建 IPSet

1.     登录到 AWS CLI。

2.    使用 create-ip-set 命令创建一个 IPSet。

注意:****—scope 选项指定此 IPSet 是用于 Amazon CloudFront 发行版还是用于区域应用程序。区域应用程序包括:应用程序负载均衡器 (ALB)、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 命令。此命令的响应将会返回一组 IPSetSummary 对象。

区域 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 WAFV2 会返回一个 NextMarker 值。请参阅请求参数

更新 IPSet

要更新 IPSet,请通过速记语法或 JSON 文件使用 update-ip-set 命令。

速记语法方法

1.    使用 list-ip-sets 命令检索要更新的 IPSet 的 IPSet IdLockToken。    

注意:AWS WAFV2 使用令牌进行乐观锁定。要更改与令牌关联的实体,请将令牌提供给更新删除等操作。WAFV2 使用该令牌来确认自您上次检索实体以来未对其进行任何更改。如果进行了更改,则更新失败并出现 WAFOptimisticLockException。如果发生这种情况,请执行另一个listget,然后使用该操作返回的新令牌。

速记语法示例:

$ 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"
        }
    ]
}

2.    使用 update-ip-set 命令以新的所需配置覆盖当前的 IPSet 配置。您必须包含在上述步骤 1 中检索到的 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 的更改。你您必须包含步骤 1 中的 IPSet Id 和步骤 2 中的 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 文件(例如 ip.json)。使用您的首选编辑器执行此操作。

示例:

$ nano ip.json
{
    "Addresses": ["10.1.1.0/24", "10.1.2.0/24", "10.1.3.0/24"]
}

2.    使用 list-ip-setsget-ip-set 命令检索要更新的 IPSet 的 IPSet IdLockToken

示例:

$ 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": "238872dc-fcfb-4a45-93fd-115cfcc94480",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b"
        }
    ]
}

3.    使用 update-ip-set 命令以新的所需配置覆盖当前的 IPSet 配置。您将引用在步骤 2 中创建的“ip.json”文件,而不是内联地址。您必须包含在上述步骤 2 中检索到的 IPSet 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 的更改。你必须包含步骤 2 中的 IPSet Id 和步骤 3 中的 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 WAFV2 的操作、资源和条件键

使用 IP 匹配条件

AWS 官方
AWS 官方已更新 1 年前