Cloudflare

本文档介绍了如何将 Cloudflare 与 Google Security Operations 集成。

产品应用场景

执行实体丰富化

在 Google Security Operations 中配置 Cloudflare 集成

有关如何在 Google SecOps 中配置集成的详细说明,请参阅配置集成。

集成参数

使用以下参数配置集成:

参数显示名称 类型 默认值 为必填项 说明
API 根 字符串 https://api.cloudflare.com 是 Cloudflare 实例的 API 根。
API 令牌 密码 不适用 是 Cloudflare 实例的 API 令牌。
账号名称 字符串 不适用 是 需要在集成中使用的账号的名称。
验证 SSL 复选框 勾选 否 如果启用此设置,系统会验证与 Cloudflare 服务器连接的 SSL 证书是否有效。

如何配置令牌

  1. 前往个人资料设置,然后点击 API 令牌。
  2. 前往创建令牌 > 创建自定义令牌,然后选择以下权限:
账号 账号 WAF 读取
账号 规则政策 读取
账号 账号过滤条件列表 修改
账号 账号防火墙访问权限 修改
账号 DNS 防火墙 读取
账号 账号设置 读取
可用区 可用区 WAF 修改
可用区 可用区设置 读取
可用区 可用区 读取
可用区 日志 读取
可用区 防火墙服务 修改
可用区 防火墙服务 读取
可用区 Analytics 读取

所需权限列表

操作

将 IP 添加到规则列表

说明

将 IP 地址添加到 Cloudflare 中的规则列表。支持的实体:IP 地址。

参数

参数显示名称 类型 默认值 为必填项 说明
规则名称 字符串 不适用 是 指定要向其添加规则列表项的规则列表的名称。
说明 字符串 不适用 否 为新添加的规则列表项指定说明。

运行时间

此操作在 IP 地址实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "result": {
        "operation_id": "f16b978552ca49f88b36fe628de31142"
    },
    "success": true,
    "errors": [],
    "messages": []
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果针对一个实体报告了 200 状态代码 (is_success=true):“已成功将以下实体添加到 Cloudflare 中的‘{name}’规则列表:{entity.identifier}。”

如果对某个实体不成功 (is_success=true):“操作未能将以下实体添加到 Cloudflare 中的‘{name}’规则列表:{entity.identifier}。”

如果所有实体均未成功添加 (is_success=false):“提供的实体均未添加到‘{name}’规则列表。”

操作应失败并停止 playbook 执行:

如果报告了严重错误(例如凭据错误、无法连接到服务器或其他错误):“执行‘将 IP 添加到规则列表’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果未找到列表:“执行‘将 IP 添加到规则列表’操作时出错。原因:在 Cloudflare 中找不到规则列表“{name}”。

如果列表类型无效:“Error executing action "Add IP To Rule List". 原因:规则列表“{name}”不是“IP”类型。

常规

将网址添加到规则列表

说明

将网址添加到 Cloudflare 中的规则列表。支持的实体:网址。

参数

参数显示名称 类型 默认值 为必填项 说明
规则名称 字符串 不适用 是 指定要向其添加规则列表项的规则列表的名称。
源网址 字符串 不适用 是 指定规则列表项的来源网址。
说明 字符串 不适用 否 为新添加的规则列表项指定说明。
状态代码 DDL

301

可能的值:

  • 301
  • 302
  • 307
  • 308
否 指定规则列表项的状态。
保留查询字符串 复选框 尚未核查 否 如果启用,规则列表项会保留查询字符串。
包含子网域 复选框 尚未核查 否 如果启用,规则列表项会包含子网域。
子路径匹配 复选框 尚未核查 否 如果启用,规则列表项会与子路径匹配。
保留路径后缀 复选框 尚未核查 否 如果启用,规则列表项会保留路径后缀。

运行时间

此操作在 IP 地址实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "result": {
        "operation_id": "f16b978552ca49f88b36fe628de31142"
    },
    "success": true,
    "errors": [],
    "messages": []
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果一个实体的状态代码为 200 (is_success=true):“已成功将以下实体添加到 Cloudflare 中的‘{name}’规则列表:{entity.identifier}。”

如果对某个实体不成功 (is_success=true):“操作未能将以下实体添加到 Cloudflare 中的‘{name}’规则列表:{entity.identifier}。”

如果所有实体均未成功 (is_success=false):“提供的实体均未添加到‘{name}’规则列表。”

操作应失败并停止 playbook 执行:

如果报告了严重错误,例如凭据错误、无法连接到服务器或其他错误:“执行‘将网址添加到规则列表’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果找不到列表:“执行‘将网址添加到规则列表’操作时出错。原因:在 Cloudflare 中找不到规则列表“{name}”。

如果列表类型无效:“执行‘将网址添加到规则列表’操作时出错。原因:规则列表“{name}”不是“重定向”类型。

常规

创建防火墙规则

说明

在 Cloudflare 中创建防火墙规则。

参数

参数显示名称 类型 默认值 为必填项 说明
地区名称 字符串 不适用 是 指定包含防火墙规则的可用区的名称。
名称 字符串 不适用 否 指定防火墙规则的名称。
操作 DDL

屏蔽

可能的值:

  • 允许
  • 屏蔽
  • 绕过
  • 日志
  • 旧版人机识别系统
  • 托管式验证
  • JS 质询
否

指定防火墙规则的操作。

如果选择“屏蔽”,则需要在“产品”参数中提供值。

表达式 字符串 不适用 是 指定防火墙规则的表达式。
产品 CSV 不适用 否

以英文逗号分隔列表的形式指定防火墙规则适用的产品。

注意:仅当为“操作”参数选择“绕过”时,此参数才是必需的。

可能的值:zoneLockdown、uaBlock、bic、hot、securityLevel、rateLimit、waf

优先级 整数 不适用 否 指定防火墙规则的优先级。
参考标记 字符串 不适用 否

为防火墙规则指定引用标记。

注意:长度不得超过 50 个字符。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
        {
            "id": "b520c154bdeb4fe2a1f647b2c6b35829",
            "paused": false,
            "description": "Blocks traffic identified during investigation for MIR-31",
            "action": "block",
            "priority": 50,
            "filter": {
                "id": "fc6dfad848c24a42ae5be0114db09fb9",
                "expression": "(ip.geoip.continent eq \"ASIA\")",
                "paused": false
            },
            "created_on": "2022-07-25T11:19:22Z",
            "modified_on": "2022-07-25T11:19:22Z",
            "index": 0
        }
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果报告了 200 状态代码 (is_success=true):“已在 Cloudflare 的‘{zone_name}’区域中成功创建新的防火墙规则。”

操作应失败并停止 playbook 执行:

如果报告了严重错误(例如凭据错误、无法连接到服务器等):“执行‘创建防火墙规则’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果错误列表不为空:“执行‘创建防火墙规则’操作时出错。Reason: {0}''.format(errors/message)

如果未找到可用区:“执行‘创建防火墙规则’操作时出错。原因:在 Cloudflare 中找不到可用区 {zone_name}。''

常规

创建规则列表

说明

在 Cloudflare 中创建规则列表。

参数

参数显示名称 类型 默认值 为必填项 说明
名称 字符串 不适用 是 指定规则列表的名称。
类型 DDL

IP 地址

可能的值:

  • IP 地址
  • 重定向
否 指定规则列表的类型。
说明 字符串 不适用 否 指定规则列表的说明。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "id": "d19589d629f140c0b961c467feadf99d",
    "name": "123",
    "kind": "ip",
    "num_items": 0,
"description": "description",
    "num_referencing_filters": 0,
    "created_on": "2022-07-25T12:13:46Z",
    "modified_on": "2022-07-25T12:13:46Z"
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果报告了 200 状态代码 (is_success = true):“已在 Cloudflare 中成功创建规则列表。”

操作应失败并停止 playbook 执行:

如果报告了严重错误(例如凭据错误、无法连接到服务器或其他错误):“执行操作‘创建规则列表’时出错。Reason: {0}''.format(error.Stacktrace)

如果错误列表不为空:“执行‘创建规则列表’操作时出错。Reason: {0}''.format(errors/message)

常规

列出防火墙规则

说明

列出 Cloudflare 中的可用防火墙规则。

参数

参数显示名称 类型 默认值 为必填项 说明
地区名称 字符串 不适用 是 指定将包含防火墙规则的可用区的名称。
过滤键 DDL

选择一项

可能的值:

  • 选择一项
  • 名称
  • ID
  • 操作
否 指定需要用于过滤{商品种类}的键。
过滤逻辑 DDL

选择一项

可能的值:

  • 请选择一项
  • 等于
  • 包含
否

指定应应用的过滤逻辑。

过滤逻辑基于“过滤键”参数中提供的值。

过滤值 字符串 不适用 否

指定应在过滤条件中使用的值。

如果选择“等于”,该操作会尝试在结果中查找完全匹配项。

如果选择“包含”,该操作会尝试查找包含该子字符串的结果。

如果此参数中未提供任何内容,则不会应用过滤条件。

过滤逻辑基于“过滤键”参数中提供的值。

返回的记录数上限 整数 50 否

指定要返回的记录数。

如果未提供任何内容,该操作将返回 50 条记录。

运行时间

此操作不会对实体执行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
    "id": "55ec8db30f9e4640b5d0d13cff6b5429",
    "paused": false,
    "description": "rulle2",
    "action": "allow",
    "filter": {
        "id": "2bb05df8c4f547bd9792d8dc38a86b81",
        "expression": "(ip.geoip.country eq \"BG\")",
        "paused": false
    },
    "created_on": "2022-07-05T13:53:39Z",
    "modified_on": "2022-07-05T13:53:39Z"
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果数据可用 (is_success=true):“已在{商品名称}中成功找到符合所提供条件的{项目名称}”。

如果数据不可用 (is_success=false):“在{商品名称}中找不到符合所提供条件的{项目名称}”

如果“过滤条件值”参数为空 (is_success=true):

“由于参数‘过滤条件值’的值为空,因此未应用过滤条件。”

操作应失败并停止 playbook 执行:

如果“过滤键”参数设置为“选择一个”,并且“过滤逻辑”参数设置为“等于”或“包含”:

“执行操作‘{action name}’时出错。原因:您需要从“过滤键”参数中选择一个字段。

如果为“要返回的记录数上限”参数提供了无效值:“执行操作‘{action name}’时出错。原因:为“要返回的记录数上限”提供的值无效:。应提供正数。

如果报告了严重错误(例如凭据错误、无法连接到服务器等),则会显示以下消息:“执行操作‘{action name}’时出错。Reason: {0}''.format(error.Stacktrace)

常规
案例墙表格

表名称:Available {商品组}

表列:{fields}

常规

Ping

说明

使用 Google SecOps Content Hub 页面中的集成配置页面上提供的参数,测试与 Cloudflare 的连接性。

参数

不适用

运行时间

该操作不使用任何 Google SecOps 范围实体,也没有强制性输入参数。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
N/A
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果成功:“已使用提供的连接参数成功连接到 SpyCloud 服务器!”

操作应失败并停止 playbook 执行:

如果不成功:“Failed to connect to the SpyCloud server! 错误为 {0}”。format(exception.stacktrace)

如果未找到该账号,则会显示以下消息:“Failed to connect to the Cloudflare server! 提供的账号名称无效。请检查拼写。”

常规

更新防火墙规则

说明

在 Cloudflare 中更新防火墙规则。

运行时间

此操作不会对实体执行。

参数

参数显示名称 类型 默认值 为必填项 说明
规则名称 字符串 不适用 是 指定需要更新的规则的名称。
地区名称 字符串 不适用 是 指定包含防火墙规则的可用区的名称。
操作 DDL

屏蔽

可能的值:

  • 允许
  • 屏蔽
  • 绕过
  • 日志
  • 旧版人机识别系统
  • 托管式验证
  • JS 质询
否

指定防火墙规则的操作。

如果选择“屏蔽”,则需要在“产品”参数中提供值。

表达式 字符串 不适用 是 指定防火墙规则的表达式。
产品 CSV 不适用 否

以英文逗号分隔列表的形式指定防火墙规则适用的产品。

注意:仅当为“操作”参数选择“绕过”时,此参数才是必需的。

可能的值:zoneLockdown、uaBlock、bic、hot、securityLevel、rateLimit、waf

优先级 整数 不适用 否 指定防火墙规则的优先级。
参考标记 字符串 不适用 否

为防火墙规则指定引用标记。

注意:长度不得超过 50 个字符。

运行时间

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
JSON 结果
{
        {
            "id": "b520c154bdeb4fe2a1f647b2c6b35829",
            "paused": false,
            "description": "Blocks traffic identified during investigation for MIR-31",
            "action": "block",
            "priority": 50,
            "filter": {
                "id": "fc6dfad848c24a42ae5be0114db09fb9",
                "expression": "(ip.geoip.continent eq \"ASIA\")",
                "paused": false
            },
            "created_on": "2022-07-25T11:19:22Z",
            "modified_on": "2022-07-25T11:19:22Z",
            "index": 0
        }
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果报告了 200 状态代码 (is_success=true):“已成功更新 Cloudflare 中‘{zone_name}’区域的防火墙规则。”

操作应失败并停止 playbook 执行:

如果报告了严重错误(例如凭据错误、无法连接到服务器等):“执行‘更新防火墙规则’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果错误列表不为空:“执行‘更新防火墙规则’操作时出错。Reason: {0}''.format(errors/message)

如果未找到可用区:“执行‘更新防火墙规则’操作时出错。原因:在 Cloudflare 中找不到可用区 {zone_name}。''

常规

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。