查看API Key
操作场景
Supabase通过API Key为您的项目提供细粒度访问控制,决定哪些应用组件可以访问您的项目。API Key用于对应用组件(包括网页、移动应用或服务器)进行身份认证,使其能够访问Supabase服务。本章节介绍如何查看Supabase AI应用的API Key(API密钥)。
前提条件
- 注册华为云账号
- 如果需要对华为云上的资源进行精细管理,请使用统一身份认证服务(Identity and Access Management,简称IAM)创建IAM用户及用户组,并授权,以使得IAM用户获得具体的操作权限,更多操作,请参见通过IAM角色或策略授予使用RDS的权限。
- 登录账号需要具备授权项“rds:aiApplication:listApiKey”、“rds:aiApplication:getApiKeyValue”、“rds:aiApplication:get”和“rds:aiApplication:list”。
API Key功能说明
API Key是用于验证客户端(如Web、移动应用或服务器)身份并授权其访问Supabase后端服务(数据库、认证、存储等)的唯一标识符。API Key提供数据访问的第一层认证,而Supabase Auth(用户登录认证)在此基础上构建进一步的认证。API Key区分的是应用,而非用户。
| 类型 | 格式 | 权限级别 | 可用途径 | 用途 |
|---|---|---|---|---|
| (可公开密钥) | sb_publishable_xxx | 低 | 平台 | 可安全地暴露在网络上:网页、移动/桌面应用、GitHub Actions、CLI、源代码。 |
| (秘密密钥) | sb_publishable_xxx | 高 | 平台 | 仅用于后端组件:服务器、已受保护的 API(管理面板)、Edge Function、微服务等。拥有对项目数据的完全访问权限,绕过行级安全(RLS)。 |
| Anon Key (匿名密钥) | JWT(长期有效) | 低 | 平台、CLI | Publishable key 的旧版形式。 |
| Service Role Key (服务角色密钥) | JWT(长期有效) | 高 | 平台、CLI | Secret key 的旧版形式。 |
- Publishable Key说明
- Publishable key用于标识应用的公开组件。公开组件运行在无法保护任何机密的环境中,包括以下场景:
- 网页:密钥被打包在源代码中。
- 移动/桌面应用:密钥被打包在编译后的包或可执行文件中。
- CLI、脚本、工具或其他预构建的可执行文件。
- 其他公开可用的API(无需额外授权即可返回密钥)。
- 与Supabase Auth的交互
使用Publishable key并不代表您的用户是匿名的,您可以用Publishable Key认证应用,同时用户通过Supabase Auth获得个人JWT认证。
表2 Supabase应用API Key与Auth交互关系 密钥
用户是否通过Supabase Auth登录
用于RLS等的Postgres角色
Publishable key
否
anon
Publishable key
是
authenticated
- 安全注意事项
Publishable key无法防范以下情况(因为从公开组件中获取密钥始终是可行的):
- 静态或动态代码分析与逆向工程。
- 浏览器网络检查器。
- 跨站请求伪造(CSRF)、跨站脚本(XSS)、钓鱼攻击。
- 中间人攻击。
- 使用Publishable key时,您的项目数据访问由Postgres通过内置的anon和authenticated角色保护。为确保完整防护,请务必注意以下几点:
- 在所有表上启用行级安全(Row Level Security)。
- 定期审查RLS策略,检查授予anon和authenticated角色的权限。
- 不要在未充分理解的情况下修改角色属性。
- 仔细审查项目的Security Advisor中的每一条安全发现。
- Publishable key用于标识应用的公开组件。公开组件运行在无法保护任何机密的环境中,包括以下场景:
- Secret Key说明
- 与Publishable key不同,Secret Key允许对项目数据进行高级别访问。它仅应用于安全、由开发者控制的组件中,例如:
- 实现了自身授权的服务器(Edge Function、微服务、传统/专用Web服务器)。
- 定时任务、队列处理器、消息订阅者。
- 管理和后台工具(仅有前置授权检查)。
- 数据处理管道(分析、报表、备份、数据库同步等)。
- 访问控制:
Secret key通过内置的service_role Postgres角色授权访问项目数据。该角色拥有对项目数据的完全访问权限,并使用 BYPASSRLS 属性,跳过所有行级安全策略。
Secret key是旧版JWT格式service_role key的改进版本,新增了防滥用检查:
- 不能在浏览器中使用(通过 User-Agent 头检测),将始终返回:HTTP 401 Unauthorized。
- 如果不需要使用Secret key,则无需创建。
- 与Publishable key不同,Secret Key允许对项目数据进行高级别访问。它仅应用于安全、由开发者控制的组件中,例如:
- 请您务必妥善管理API Key,避免Key值泄露造成安全隐患,避免因此被攻击破坏而引发业务损失。
- 关于如何使用API Key,请参见Supabase SDK使用章节。
约束限制
- AI应用已成功创建。
- Supabase AI应用当前仅支持每个Key类型只有一个生效的API Key。每次重置操作成功后会创建新的API Key,旧的API Key会失效。
操作步骤
- 登录RDS管理控制台。
- 单击管理控制台左上角的
,选择区域。 - 左侧导航栏,选择“AI应用开发平台”,进入AI应用开发平台管理界面。
- 在“AI应用开发平台”列表页面,选择指定的AI应用,单击应用名称,进入应用详情页面。
- 在左侧导航栏,选择“API Key”,进入API Key列表界面。 图1 应用API Key列表
- 可以选择状态为“正常”的API Key,单击操作列中“复制API Key值”,将对应的Key值复制到剪贴板中。