Cloudflare Worker 权限细化:把客户部署锁定到单个 Worker

Cloudflare 现已支持按单个 Worker 配置细粒度权限。本文说明代理商如何用账户拥有的 API Token 将客户 CI 部署限制在一个现有 Worker,并梳理 Editor、Admin、绑定资源、Durable Objects 与 Routes 的实际权限边界,帮助团队缩小凭证泄露后的排查与处置范围。

Tuesday, September 15, 2026Omid Saffari
Cloudflare Worker 权限细化:把客户部署锁定到单个 Worker

Cloudflare 的 4 种 Worker 角色,把一套共享部署凭证变成了按客户划分的 Cloudflare Worker 权限边界。自 2026 年 9 月 15 日起,只要没有更宽泛的策略叠加放大权限,代理商就能允许客户的 CI 任务只部署某个现有 Worker,同时不给它删除权限,也不让它访问账户里的其他所有 Worker。

Cloudflare Worker 权限真正改变的是作用域

一项权限由两部分构成:角色决定可以做什么,作用域限定可以在哪里做。

Cloudflare 现在允许将 Worker 角色与单个 Worker 作用域组合,再授予团队成员、User Group、Agent 或 API Token。同一个角色仍可覆盖全部 Worker,但已不必如此。

这看起来只是个小型管理功能。可对在同一 Cloudflare 账户中承载多个客户项目的工作室或代理商来说,交接方式由此改变:Client A 的部署凭证可以只触达 Client A 的 Worker。

9 月 15 日发布的更新 面向所有客户开放,可通过控制面板、API 或 Terraform 使用。

以下是 Workers 角色参考文档 中的完整角色列表:

角色可以做什么不能做什么
Metadata Read-Only查看设置、指标、日志和追踪查看 Worker 代码或进行更改
Content Read-Only读取 Worker 代码、设置和可观测性数据修改或部署 Worker
Editor读取、更新、部署和重命名现有 Worker创建或删除 Worker
Admin完整管理选定的 Worker在单个 Worker 作用域下创建另一个 Worker

这种拆分很实用,因为调试、代码审查、发布代码和删除服务本来就是 4 类不同的工作,不该默认共用同一套凭证。

Cloudflare 旧版 Workers 权限以账户为作用域。替代它的新模型既可覆盖整个 Developer Platform,也可覆盖全部 Workers,或只限定到某个现有 Worker。产品级 Workers 策略覆盖当前及未来的每个 Worker;单 Worker 策略则只覆盖明确选中的 Worker。

这里有一个结构性限制:尚未存在的 Worker 无法成为作用域。创建新 Worker 仍然需要产品级 Admin。

交接给客户时,具体变了什么

以一家小型代理商为例,它为每位客户托管一个 Worker。其部署流程只需发布 client-a-api 的新版本,无需创建 Worker、删除这个 Worker,也不该触碰 client-b-checkout。

在此次更新之前,Cloudflare 现已标为 legacy 的常见 Workers CI 权限均为账户级。此前只有两个清晰选项:接受一套权限宽泛的凭证,或把客户拆到另一个账户。单 Worker 作用域带来了第三条路:保留原有账户结构,但只给部署 Token 对 client-a-api 的 Editor 权限。

由于 Worker 级权限控制向所有客户开放,订阅成本没有变化,运维成本的计算方式却变了。

这个模型没有计入一项重要代价:与一套共享 Token 相比,12 套按客户限定的凭证意味着要签发、存储和轮换更多密钥。收益并不是凭证变少,而是在某套凭证失效或泄露时,需要排查的项目范围更小。

如果独立开发者只有一个 Worker,也不共享部署权限,变化并不明显。有意让平台团队管理全部 Worker 的组织也是如此。真正受益的是那些让多位成员、客户或自动化任务共用一个 Cloudflare 账户,却不希望它们共享同一故障影响范围的团队。

给单个客户部署任务配置刚刚好的权限

最适合先交接的,是已经存在、且 Route 或 Custom Domain 稳定不变的 Worker。这样,部署任务无需负责创建 Worker,也不需要修改域名连接。

  1. 先写清任务,再选择角色

    先用一句话定义任务:“这个流程负责部署现有 client-a-api Worker 的新版本。”

    这句话对应的是单个 Worker 作用域下的 Editor。如果任务必须创建新 Worker,就需要产品级 Admin;如果必须添加、更改或移除 Route 或 Custom Domain,还需要对每个受影响的 zone 拥有 Workers Routes Write。

  2. 创建账户拥有的 API Token

    在 Cloudflare 中进入 Manage Account > Account API Tokens,创建一个由账户拥有的 Token。将作用域设为 Specified Workers,选择 client-a-api,再选择 Editor。

    工作流应使用账户拥有的 Token,而不是某个人的用户 Token。Cloudflare 将账户拥有的 Token 定位为持久集成所用的服务主体,因此即使创建者离职,部署也不会随之中断。创建或更新这类 Token 需要 Super Administrator 权限。

  3. 使用该 Token 运行 Wrangler

    把 Token 存入部署系统的密钥存储。Cloudflare 为 Wrangler 提供了以下环境变量:

    Bash
    export CLOUDFLARE_API_TOKEN="<YOUR_API_TOKEN>"
    export CLOUDFLARE_ACCOUNT_ID="<YOUR_ACCOUNT_ID>"
    npx wrangler deploy

    请在已配置好现有 Worker 的项目中运行这些命令。这里不能用 wrangler login 替代,因为它的 OAuth 流程目前不支持细粒度授权。

  4. 完成切换,再移除宽权限通道

    先用新 Token 部署一个无影响的版本,并确认更新发生在目标 Worker 上。检查该 Token 没有产品级 Workers 角色,也没有无关的资源作用域。

    随后,从这个工作流中移除旧的宽权限部署密钥。测试期间同时保留两套凭证很合理;测试结束后继续保留,则会让这道权限边界失去意义。

常规部署的完整交接到这里就结束了。由于更新、上传、部署、回滚、重命名以及管理该 Worker 的密钥都属于 Editor 权限,客户任务可以完成这些操作;但它无法删除 Worker,单 Worker 策略也不会授予它访问其他 Worker 的权限。

4 类任务,4 套合理策略

只需收集证据的支持 Agent

给调试 Agent 授予目标 Worker 的 Metadata Read-Only。它可以检查设置、指标、日志和追踪,却无法读取源代码或更改服务。

这样,支持流程可以收集证据,而不会悄然变成代码审查或部署流程。同一角色也足以在该 Worker 上运行 wrangler tail。

审查客户项目的外部开发者

给承包方授予客户 Worker 的 Content Read-Only。他们可以查看已部署的源代码和设置,但不能修改或部署它。

这样能形成更清晰的审查边界。审查者只是需要了解当前运行的内容,并不意味着必须获得 Editor。

客户专用的 CI 流水线

让账户拥有的 Token 只对一个现有 Worker 拥有 Editor。它可以发布和回滚版本,却不能删除该 Worker,也无法触达其他 Worker。

这是最适合代理商交接的方案,因为凭证属于工作流,而不是某位员工。如果还会为客户运行浏览器 Agent,Cloudflare 的获准主机控制解决的是边界的另一半:浏览器可以访问哪里。此次更新控制的则是部署身份可以更改哪个 Worker。

负责生命周期变更的平台负责人

Admin 应只留给确实需要删除权限的成员或自动化任务。创建 Worker 的负责人继续持有产品级 Admin,再把已完成的 Worker 交给权限更窄的日常策略。

这样,生命周期管理与日常交付之间便有了清晰分工。部署任务不需要拥有与创建和停用客户服务的负责人同等的权限。

权限边界更窄,但并非完全隔离

核心收益确实存在,但把它简单理解为“只能访问一个 Worker”可能很危险。

Durable Objects 也需要同样谨慎。它们没有独立的角色或作用域,而是继承实现它们的 Worker 的访问权限。Metadata Read-Only 包含 Durable Object 的指标、日志和追踪,但不包含存储数据访问;不过,按文档列出的门槛,Editor 也足以使用 Data Studio 查询或修改基于 SQLite 的 Durable Object 中的数据。

Routes 是另一道独立边界。如果现有 Route 或 Custom Domain 保持不变,Editor 足以部署新版本;若要更改这种连接,还必须对每个受影响的 zone 拥有 Workers Routes Write。Cloudflare 还说明,Custom Domains 目前不支持单 Worker 角色。

最后,Cloudflare 的权限会叠加。直接授予的窄权限策略,不会抵消通过 User Group 继承的宽权限策略。Members 视图显示直接权限,继承的群组策略则必须到 Groups 标签页检查。跳过这一步,界面上或许显示的是预期的窄权限策略,实际生效的权限范围却仍然很宽。

哪些团队现在就该行动

如果一个账户承载多个客户 Worker,而某位成员、Agent 或 CI 任务为了只操作一个 Worker,仍然持有覆盖全部 Workers 的权限,就应在本周采取行动。目标 Worker 已经存在,且日常部署不会更改其域名连接时,收益最明显。

如果工作流需要创建 Worker、更改 Route 或 Custom Domain,或依赖直接访问绑定的数据产品,先不要急着收紧 Token。应先梳理这些操作,否则下一次部署可能进行到一半就失败。

如果从不共享 Worker 访问权限、只运行一个 Worker,或有意让承担账户级职责的平台团队统一掌管部署,则基本不受此次变化影响。

周一先做这一件事

先改造一个现有客户 CI 部署背后的权限策略:将一个账户拥有的 Token 设为 Editor,把作用域限定到该 Worker,列出它可以影响的每项绑定及继承的 Durable Object,检查直接策略和群组策略,然后在不更改 Route 或 Custom Domain 的情况下完成部署。

确认这次部署通过后,移除旧的全 Workers 密钥。完成这一次切换,就有了一道真正的边界,也得到了一套可复用于下一个客户的做法。

如果希望继续阅读用直白语言解读平台变化的实操内容,欢迎订阅邮件通讯。

最近更新
2026年9月15日
分类
Explained

在 Google 中优先显示本站

将 omidsaffari.com 添加为 Google 搜索的优先来源

把 omidsaffari.com 设为优先来源,Google 会在 Top Stories、AI Overviews 和 AI Mode 中为您优先展示。

Grok 语音转文字升级 2.0:价格不变,默认模型已切换

Grok 语音转文字升级 2.0:价格不变,默认模型已切换

Grok Voice Transcribe 2.0 的批处理仍为每音频小时 $0.10,流式处理仍为 $0.20,但省略 model 参数时默认模型已经切换。本文拆解价格、适用场景和迁移风险,并给出用真实音频对比 1.0 与 2.0、核对人工校正时间和下游结果,再显式锁定生产模型的操作清单。2026年9月20日Explained
Cloudflare Browser Run 加强浏览器自动化调试:失败任务先查再重跑

Cloudflare Browser Run 加强浏览器自动化调试:失败任务先查再重跑

Cloudflare 为已完成的 Browser Run 录制加入 Inspect 面板,可集中查看控制台日志、网络请求、HAR 和最终 DOM。本文讲清如何启用 Session Recording、按 target 获取网络轨迹,并判断哪些失败应先查现有证据,哪些仍需截图与应用日志,减少浏览器重跑和人工复现时间。2026年9月19日Explained
v0 接入 npm 私有包:让原型直接复用团队组件库

v0 接入 npm 私有包:让原型直接复用团队组件库

v0 现已支持通过共享环境变量安装 npm 私有包,让原型直接复用团队现有组件库。本文拆解 NPM_TOKEN 与 NPM_RC 的适用场景、最小权限配置、真实仓库交接检查,以及上线前仍需补齐的文档、安全与工程验证,帮助团队判断这项能力能否减少组件替换返工,并厘清凭证如何留在模型与沙箱文件系统之外。2026年9月19日Explained
Claude Code 自动模式不再单收分类器费用,但有前提

Claude Code 自动模式不再单收分类器费用,但有前提

Claude Code 2.1.278 可在符合条件的 API 与 Enterprise 会话中取消自动模式分类器的单独费用,但网关、区域或凭证仍可能触发计费回退。本文说明如何通过 /status 确认服务端路径、排查 safeguards 等透传字段,并在调整智能体预算前验证真实生产链路。2026年9月19日Explained
Vercel 构建费用新机制:Turbo 可按单次部署启用

Vercel 构建费用新机制:Turbo 可按单次部署启用

Vercel 现在允许 Pro 和 Enterprise 项目仅为一次部署启用 Turbo,无需修改项目默认构建机器。本文拆解 GitHub、CLI 与 API 三种用法,并用同一组计费数据说明何时值得为紧急发布支付更高的 Vercel 构建费用,以及如何验证下一次部署已恢复原配置。2026年9月18日Explained
ChatGPT for Word 上线:写文档不再来回复制

ChatGPT for Word 上线:写文档不再来回复制

ChatGPT for Word 将起草、摘要、选中文本修改和基础排版直接带进 Word 侧边栏。本文详解插件的安装条件、Microsoft 与 ChatGPT 双重管理权限、共享用量和 token 费率、数据边界,以及一套可执行的文档编辑流程,帮助团队判断是否值得启用,并用真实文档衡量省下的搬运时间与新增的审核成本。2026年9月18日Explained
Antigravity 迁移指南:10 月 5 日前升级本地任务

Antigravity 迁移指南:10 月 5 日前升级本地任务

Google 将于 2026 年 10 月 5 日停用 5 月版 Antigravity 智能体。本指南拆解 Antigravity 迁移路径:仅消费最终输出的远程任务只需更换智能体 ID;使用本地工具或解析 function_call 的集成,还必须更新工具适配器、参数校验与测试流程,避免定时任务在截止日后悄然中断。2026年9月18日Explained
Cloudflare Workers RPC 链路追踪:慢请求卡在哪一跳,一眼看清

Cloudflare Workers RPC 链路追踪:慢请求卡在哪一跳,一眼看清

Cloudflare Workers 现已支持跨 JavaScript RPC 边界追踪请求,把调用方、下游 Worker、Durable Object、嵌套调用与回调串进同一条时间线。本文详解慢请求定位、span 读取、采样设置和按 span 计费逻辑,帮助团队在全面启用前测清事件量、保留期与配额影响。2026年9月17日Explained
订阅通讯

每周日,一封信。写运转中的系统,不写热评。

每周一期。无垃圾邮件。随时退订。