跳转到内容
搜索文档

所有权质询常见问题

最后更新 查看 MarkdownAgent 设置

所有权质询是一次性验证,用于在 Cloudflare 向目标存储桶推送日志之前,证明您对该目标存储桶具有读取权限。此机制可防止您意外将 Logpush 作业配置为向您无法控制的存储桶推送数据。

工作原理

当您创建指向存储目标的 Logpush 作业时,Cloudflare 会要求您证明对该目标的所有权:

  1. 您为 destination_conf 请求所有权质询。
  2. Cloudflare 将 JWT 写入您存储桶中的 ownership-challenge.txt 文件。
  3. 您从存储桶中读取该令牌,并在创建作业请求时一并提交。
  4. Cloudflare 验证令牌后创建作业。

有关分步说明,请参阅 使用 cURL 管理 Logpush

质询可防范的情况

所有权质询主要防止意外配置错误。若无此验证,您可能会无意中将作业配置为推送到非预期存储桶——例如,推送到实际由他人拥有的存储桶。

质询还可防范恶意场景,例如有人可能:

  • 将 Logpush 作业指向另一客户的存储桶
  • 向该存储桶推送虚假或恶意日志数据
  • 污染或破坏受害者的日志存储

质询令牌结构

所有权质询是一个 JSON Web Token (JWT),其中包含将其绑定到特定上下文的声明。令牌包括:

  • 对象类型 - 作业是 zone 作用域、账户作用域还是租户作用域
  • 对象 ID - 具体的 zone 或账户标识符
  • 目标配置 - 完整的目标配置字符串
  • 目标指纹 - 存储桶名称与路径/前缀的哈希
  • 过期时间 - 令牌在 7 天后过期

提交质询令牌时,Cloudflare 会验证所有声明是否与您的作业创建请求匹配。这可防止令牌被用于不同的账户、zone 或目标。

安全注意事项

被泄露的令牌是否会被利用?

实际上,使用被泄露的所有权质询令牌发起攻击的可能性极低。攻击者需要:

  1. 访问您的 Cloudflare 账户(以匹配令牌中的对象 ID)
  2. 知晓确切的存储桶名称和路径/前缀(以匹配目标指纹)
  3. 在 7 天内采取行动(在质询过期之前)

您存储桶的 IAM/访问控制以及 Cloudflare 账户安全才是主要安全层,而非所有权质询令牌。

最佳实践

  • 创建作业后删除质询文件 - Logpush 作业创建完成后,可安全地从存储桶中删除 ownership-challenge.txt 文件。
  • 限制存储桶权限 - 仅向 Cloudflare 的服务账户授予写入权限。对于 AWS S3,向 arn:aws:iam::391854517948:user/cloudflare-logpush 授予 PutObject 权限。对于 GCS,向 logpush@cloudflare-data.iam.gserviceaccount.com 授予 Storage Object Admin 权限。
  • 监控 Logpush 作业 - 使用 Logpush 健康状况仪表板 监控作业状态并检测异常。

哪些目标需要所有权质询?

目标 是否需要所有权质询
AWS S3 是(或使用访问密钥/密钥)
Google Cloud Storage
Azure Blob Storage
Sumo Logic
兼容 S3 的存储
HTTP 端点
Datadog
Splunk
New Relic

对于不需要所有权质询的目标,Cloudflare 使用 API 密钥或令牌等替代身份验证方法。

相关资源

这篇文档对您有帮助吗?