Cloudflare
本文档介绍了如何将 Cloudflare 与 Google Security Operations 集成。
产品使用场景
丰富实体信息
在 Google Security Operations 中配置 Cloudflare 集成
有关如何在 Google SecOps 中配置集成的详细说明,请参阅配置集成。
集成参数
使用以下参数配置集成:
| 参数显示名称 | 类型 | 默认值 | 为必需参数 | 说明 |
|---|---|---|---|---|
| API 根 | 字符串 | https://api.cloudflare.com |
是 | Cloudflare 实例的 API 根。 |
| API 令牌 | 密码 | 不适用 | 是 | Cloudflare 实例的 API 令牌。 |
| 账号名称 | 字符串 | 不适用 | 是 | 集成中需要使用的账号的名称。 |
| 验证 SSL | 复选框 | 勾选 | 否 | 如果启用,则验证与 Cloudflare 服务器的连接所用的 SSL 证书是否有效。 |
如何配置令牌
- 前往个人资料设置,然后点击 API 令牌。
- 依次前往 Create Token > Create Custom Token,然后选择以下权限:
| 账号 | 账号 WAF | 读取 |
| 账号 | 规则政策 | 读取 |
| 账号 | 账号过滤条件列表 | 修改 |
| 账号 | 账号防火墙访问权限 | 修改 |
| 账号 | DNS 防火墙 | 读取 |
| 账号 | 账号设置 | 读取 |
| 可用区 | 可用区 WAF | 修改 |
| 可用区 | 区域设置 | 读取 |
| 可用区 | 可用区 | 读取 |
| 可用区 | 日志 | 读取 |
| 可用区 | 防火墙服务 | 修改 |
| 可用区 | 防火墙服务 | 读取 |
| 可用区 | 分析 | 读取 |

操作
将 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 执行: 如果报告了致命错误(例如凭据错误、无法连接到服务器或其他错误):“Error executing action "Add IP To Rule List"”(执行操作“将 IP 添加到规则列表”时出错)。原因:{0}''.format(error.Stacktrace) 如果找不到列表:“Error executing action "Add IP To Rule List"(执行操作“将 IP 添加到规则列表”时出错)。原因:在 Cloudflare 中找不到规则列表“{name}”。 如果列表不是有效类型:“执行操作‘将 IP 添加到规则列表’时出错。原因:规则列表 {name} 的类型不是“IP”。 |
常规 |
将网址添加到规则列表
说明
在 Cloudflare 中将网址添加到规则列表。支持的实体:网址。
参数
| 参数显示名称 | 类型 | 默认值 | 为必需参数 | 说明 |
|---|---|---|---|---|
| 规则名称 | 字符串 | 不适用 | 是 | 指定要向其添加规则列表项的规则列表的名称。 |
| 源网址 | 字符串 | 不适用 | 是 | 为规则列表项指定来源网址。 |
| 说明 | 字符串 | 不适用 | 否 | 为新添加的规则列表项指定说明。 |
| 状态代码 | DDL | 301 可能的值:
|
否 | 指定规则列表项的状态。 |
| 保留查询字符串 | 复选框 | 尚未核查 | 否 | 如果启用,规则列表项会保留查询字符串。 |
| 包含子网域 | 复选框 | 尚未核查 | 否 | 如果启用,规则列表项将包含子网域。 |
| 子路径匹配 | 复选框 | 尚未核查 | 否 | 如果启用,规则列表项与子路径匹配。 |
| 保留路径后缀 | 复选框 | 尚未核查 | 否 | 如果启用,规则列表项会保留路径后缀。 |
运行于
此操作在 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 执行: 如果报告了致命错误(例如凭据错误、未连接到服务器或其他错误):“Error executing action "Add 网址 To Rule List".”(执行“将网址添加到规则列表”操作时出错)。原因:{0}''.format(error.Stacktrace) 如果找不到列表:“执行操作‘将网址添加到规则列表’时出错。原因:在 Cloudflare 中找不到规则列表“{name}”。 如果列表类型无效:“执行操作‘将网址添加到规则列表’时出错。”原因:规则列表 {name} 的类型不是“重定向”。 |
常规 |
创建防火墙规则
说明
在 Cloudflare 中创建防火墙规则。
参数
| 参数显示名称 | 类型 | 默认值 | 为必需参数 | 说明 |
|---|---|---|---|---|
| 地区名称 | 字符串 | 不适用 | 是 | 指定包含防火墙规则的区域的名称。 |
| 名称 | 字符串 | 不适用 | 否 | 指定防火墙规则的名称。 |
| 操作 | DDL | 屏蔽 可能的值:
|
否 | 指定防火墙规则的操作。 如果选择“屏蔽”,您需要在“产品”参数中提供值。 |
| 表达式 | 字符串 | 不适用 | 是 | 指定防火墙规则的表达式。 |
| 产品 | 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 执行: 如果报告了致命错误(例如凭据错误、无法连接到服务器、其他错误):“Error executing action "Create Firewall Rule". 原因:{0}''.format(error.Stacktrace) 如果错误列表不为空:“执行操作‘创建防火墙规则’时出错。原因:{0}''.format(errors/message) 如果找不到相应区域:“执行操作‘创建防火墙规则’时出错。原因:在 Cloudflare 中找不到可用区 {zone_name}。 |
常规 |
创建规则列表
说明
在 Cloudflare 中创建规则列表。
参数
| 参数显示名称 | 类型 | 默认值 | 为必需参数 | 说明 |
|---|---|---|---|---|
| 名称 | 字符串 | 不适用 | 是 | 指定规则列表的名称。 |
| 类型 | DDL | 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 执行: 如果系统报告了致命错误(例如凭据错误、无法连接到服务器或其他错误):“Error executing action "Create Rule List".”(执行操作“创建规则列表”时出错。)原因:{0}''.format(error.Stacktrace) 如果错误列表不为空:“执行操作‘创建规则列表’时出错。原因:{0}''.format(errors/message) |
常规 |
列出防火墙规则
说明
列出 Cloudflare 中的可用防火墙规则。
参数
| 参数显示名称 | 类型 | 默认值 | 为必需参数 | 说明 |
|---|---|---|---|---|
| 地区名称 | 字符串 | 不适用 | 是 | 指定将包含防火墙规则的区域的名称。 |
| 过滤键 | DDL | 选择一项 可能的值:
|
否 | 指定需要用于过滤{商品种类}的键。 |
| 过滤逻辑 | 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):“Successfully found {item name} for the provided criteria in {product name}”(已成功在 {product name} 中找到符合所提供条件的 {item name})。 如果数据不可用 (is_success=false):“{product name} 中未找到符合所提供条件的{item name}” 如果“过滤条件值”参数为空 (is_success=true): “未应用过滤条件,因为参数‘过滤条件值’的值为空。” 操作应失败并停止 playbook 执行: 如果“过滤键”形参设置为“选择一个”,并且“过滤逻辑”形参设置为“等于”或“包含”: “执行操作‘{action name}’时出错。原因:您需要从“过滤键”参数中选择一个字段。 如果为“要返回的最大记录数”参数提供的值无效:“执行操作‘{action name}’时出错。原因:为“要返回的最大记录数”提供的值无效:。应提供正数。” 如果报告了致命错误(例如凭据错误、无法连接到服务器、其他错误):“Error executing action "{action name}". 原因:{0}''.format(error.Stacktrace) |
常规 |
| “案例墙”表格 | 表格名称:Available {item group} 表列:{fields} |
常规 |
Ping
说明
使用 Google Security Operations Marketplace 标签页中的集成配置页面上提供的参数测试与 Cloudflare 的连接。
参数
不适用
运行于
该操作不使用任何 Google SecOps 范围实体,也没有强制性输入参数。
操作执行结果
脚本结果
| 脚本结果名称 | 值选项 | 示例 |
|---|---|---|
| is_success | True/False | is_success:False |
JSON 结果
N/A
案例墙
| 结果类型 | 值 / 说明 | 类型 |
|---|---|---|
| 输出消息* | 操作不应失败,也不应停止 playbook 执行: 如果成功:“Successfully connected to the SpyCloud server with the provided connection parameters!” 操作应失败并停止 playbook 执行: 如果未成功:“Failed to connect to the SpyCloud server! 错误为 {0}".format(exception.stacktrace) 如果未找到相应账号,系统会显示以下消息:“Failed to connect to the Cloudflare server!提供的账号名称无效。请检查拼写。” |
常规 |
更新防火墙规则
说明
更新 Cloudflare 中的防火墙规则。
运行于
此操作不会在实体上运行。
参数
| 参数显示名称 | 类型 | 默认值 | 为必需参数 | 说明 |
|---|---|---|---|---|
| 规则名称 | 字符串 | 不适用 | 是 | 指定需要更新的规则的名称。 |
| 地区名称 | 字符串 | 不适用 | 是 | 指定包含防火墙规则的区域的名称。 |
| 操作 | DDL | 屏蔽 可能的值:
|
否 | 指定防火墙规则的操作。 如果选择“屏蔽”,您需要在“产品”参数中提供值。 |
| 表达式 | 字符串 | 不适用 | 是 | 指定防火墙规则的表达式。 |
| 产品 | 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 执行: 如果报告了致命错误(例如凭据错误、无法连接到服务器等):“Error executing action "Update Firewall Rule". 原因:{0}''.format(error.Stacktrace) 如果错误列表不为空:“执行操作‘更新防火墙规则’时出错。原因:{0}''.format(errors/message) 如果找不到相应区域:“执行操作‘更新防火墙规则’时出错。原因:在 Cloudflare 中找不到可用区 {zone_name}。 |
常规 |
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。