一年前,Cloudflare 承诺减少因套餐不同而产生的“两级产品体验”。这次进展更新表明,这项承诺正从理念转化为具体能力:Logpush、多账户治理以及更高的平台限额已经扩展到所有账户。对开发团队而言,关键变化不只是“功能能不能点开”,而是日志、安全策略和资源管理能否进入统一的工程流程。
从功能开放到工程能力开放
过去,平台能力如果与套餐强绑定,很容易形成两套运维模式:大型账户可以集中导出日志、统一管理多个账户,小型团队则依赖控制台操作、零散脚本或人工巡检。长期下来,差异会直接反映在故障定位速度和治理成本上。
本次更新涉及三个互相关联的方向:
- Logpush:把边缘平台产生的日志持续发送到外部存储或分析系统,便于检索、告警和长期留存。
- 多账户治理:让拥有多个 Cloudflare 账户的组织以更统一的方式管理资源、权限和策略。
- 更高的平台限额:减少团队因为默认上限过低而拆分配置、申请例外或设计临时绕行方案的情况。
需要注意的是,“面向所有账户开放”并不等于所有账户拥有完全相同的容量、数据集或默认配置。具体限额、可选日志类型、目标存储和权限要求仍应以当前控制台与产品文档为准。团队在迁移前应验证实际账户,而不是把开放资格直接理解为无限资源。
为什么 Logpush 是可观测性基础设施,而不只是导出按钮
日志只有进入可查询、可关联的系统后,才会真正产生价值。将 Logpush 纳入日常运维,可以把边缘请求数据送入对象存储、日志平台或安全分析流水线,再与应用日志、部署记录和告警事件建立关联。
一个可执行的落地路径通常包括:
- 明确需要保留的数据集,而不是默认收集一切。
- 为日志接收端设置生命周期和访问控制。
- 记录 Logpush 作业的负责人、目标地址和预期状态。
- 对作业停用、发送失败或数据量异常建立监控。
- 定期检查日志字段是否包含敏感信息。
更多日志也意味着更多存储成本和隐私责任。团队应提前定义保留周期、脱敏规则以及谁可以查询原始数据,避免把“可观测性升级”变成新的数据治理缺口。
可直接改造的账户与 Logpush 盘点脚本
下面的脚本展示了一种可实践的方法:调用 Cloudflare API 列出指定账户中的 Zone,并检查每个 Zone 已配置的 Logpush 作业。它只做读取操作,适合用作治理盘点的起点。
运行前需要安装 curl 和 jq,并准备具有相应账户、Zone 与日志读取权限的 API Token。将 ACCOUNT_ID 替换为目标账户 ID。不同资源和日志数据集可能需要不同权限,请按最小权限原则配置 Token。
#!/usr/bin/env bash
set -euo pipefail
: "${CLOUDFLARE_API_TOKEN:?请设置 CLOUDFLARE_API_TOKEN}"
: "${ACCOUNT_ID:?请设置 ACCOUNT_ID}"
API_BASE="https://api.cloudflare.com/client/v4"
AUTH_HEADER="Authorization: Bearer ${CLOUDFLARE_API_TOKEN}"
workdir="$(mktemp -d)"
trap 'rm -rf "$workdir"' EXIT
echo "== 当前 Token 可见的账户 =="
curl --silent --show-error --fail \
-H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
"$API_BASE/accounts" \
| jq -r '.result[] | [.id, .name] | @tsv'
echo
echo "== 账户 ${ACCOUNT_ID} 下的 Zone 与 Logpush 作业 =="
curl --silent --show-error --fail --get \
-H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
--data-urlencode "account.id=${ACCOUNT_ID}" \
--data-urlencode "per_page=50" \
"$API_BASE/zones" > "$workdir/zones.json"
jq -r '.result[] | [.id, .name] | @tsv' "$workdir/zones.json" \
| while IFS=$'\t' read -r zone_id zone_name; do
echo
echo "Zone: ${zone_name} (${zone_id})"
curl --silent --show-error --fail \
-H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
"$API_BASE/zones/${zone_id}/logpush/jobs" \
| jq -r '
if (.result | length) == 0 then
" 未发现 Zone 级 Logpush 作业"
else
.result[] |
" id=\(.id) enabled=\(.enabled) dataset=\(.dataset // \"unknown\") destination=\(.destination_conf // \"unknown\")"
end
'
done
可以将脚本保存为 audit-cloudflare.sh,然后执行:
chmod +x audit-cloudflare.sh
export CLOUDFLARE_API_TOKEN='替换为只读 Token'
export ACCOUNT_ID='替换为账户 ID'
./audit-cloudflare.sh
示例只读取前 50 个 Zone。账户规模更大时,应根据 API 返回的分页信息继续请求后续页面。生产环境中也不建议直接把完整目标地址写入公开日志,因为其中可能包含存储桶路径或其他敏感配置。
多账户治理的重点是统一边界
多账户能力开放之后,不必立刻把所有资源迁移到一个账户。更稳妥的方式是先定义组织边界:哪些账户对应生产环境,哪些用于开发或独立业务单元;谁可以修改 DNS、安全规则和日志配置;哪些变更必须经过代码审查。
可以建立一份轻量级治理清单:
- 每个账户都有明确的业务负责人和技术负责人。
- API Token 使用最小权限,并设置轮换与撤销流程。
- 关键配置通过 Terraform、API 脚本或其他版本化方式管理。
- 所有生产 Zone 都有日志、告警和应急联系人。
- 定期盘点账户、成员、Token、Zone 和 Logpush 作业。
- 对平台限额进行监控,不把更高限额当作容量规划的替代品。
Cloudflare 在内部使用这些工具,也就是常说的 dogfooding,其意义在于让产品团队直接承受真实治理流程中的摩擦。对外部团队而言,同样值得采用这一思路:平台团队应亲自使用自己制定的账户模板、权限模型和审计脚本,而不是只把它们交给业务团队执行。
采用时不要只确认“已经可用”
这次更新降低了高级平台能力的访问门槛,但能力开放只是起点。真正的收益来自把日志导出、账户治理和容量检查变成持续执行的流程。
建议按以下顺序推进:先用只读 Token 完成现状盘点,再选择一个非关键 Zone 验证 Logpush 和日志成本,随后统一多账户权限模型,最后把检查脚本接入 CI、定时任务或内部治理平台。对于后续更新,与其猜测具体产品名称,不如持续关注三个指标:更多功能是否摆脱套餐壁垒、不同账户之间是否拥有一致的管理接口,以及平台限额能否支撑真实生产负载。