Supabase 的令牌可以只开一扇门了:作用域令牌开始逐步放量
Supabase 的个人访问令牌(PAT)一直是两种用法混在一起的:你自己在终端里 supabase login 用它,CI 里部署用它,MCP server 让 AI agent 读数据库也用它。官方这次把这件事拆开了。
老的 classic 令牌有多大
文档里写得很直白:classic 令牌带着你账号的全部权限,覆盖你现在属于的每个组织和每个项目,以及你今后创建或加入的每一个。一年前生成的 classic 令牌,今天照样能操作你新建的项目。
新的作用域令牌长什么样
创建时选组织、选项目、选权限。文档给的例子是”只能读某一个项目的配置、看它的日志,碰不到账单和组织设置”。生成的令牌前缀是 sbp_fc,方便你一眼区分。官方文档的推荐是:所有自动化场景——AI agent、脚本、CI——一律用作用域令牌,classic 令牌只留在自己手里。
有一句话值得单独拎出来:作用域只会收窄你已有的权限,不会放大。你账号角色里没有的权限,勾了也没用,调的时候照样是 403。这避免了”勾多了反而越权”的误伤。
今天该做的
-
盘一遍令牌都躺在哪。CI 的 secrets、MCP 配置文件(
~/.cursor/mcp.json之类)、.env、docker-compose、n8n 或 Dify 的凭据库。搜sbp_这个前缀,能找出大半。 -
一个用途一张。给部署流水线一张(只给某个项目的数据库和 Edge Functions 写权限),给 MCP agent 一张(只给某个项目的读权限加日志),不要复用。
-
加一条验收命令。用新令牌去调一个它不该碰的端点,比如:
curl -i "https://api.supabase.com/v1/projects/$PROJECT_REF/types/typescript" \ -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN"没给 Database 权限的话,这里应该返回 403。返回 200 说明你勾多了,重开一张。
泼冷水
两个坑先说在前面。第一,这是 public alpha 且逐步放量——你创建令牌时如果看不到选权限的界面,说明账号还没轮到,得提工单申请。别因为”我的账号没有这个选项”就以为这事还没发生。
第二,文档里的权限对照表有注脚:部分权限目前既不对应任何公开的 Management API 端点,也不对应任何 MCP 工具。也就是说你勾了它,实际等于什么都没给。给 MCP agent 配权限之前,先去表里查 get_logs、list_tables 这类工具各自需要哪个权限,别照着名字猜。
顺带一句:这件事跟用不用 Supabase 关系不大。一人公司最常见的安全事故不是被黑客攻破,是自己的令牌躺在一个三个月没看过的配置文件里,而那张令牌能打开整个账号。
原文:https://supabase.com/docs/guides/platform/personal-access-tokens