# 查看API Key
#### 操作场景
Supabase通过API Key为您的项目提供细粒度访问控制，决定哪些应用组件可以访问您的项目。API Key用于对应用组件（包括网页、移动应用或服务器）进行身份认证，使其能够访问Supabase服务。本章节介绍如何查看Supabase AI应用的API Key（API密钥）。
#### 前提条件
- [注册华为账号并开通华为云](https://support.huaweicloud.com/usermanual-account/account_id_001.html)
- 如果需要对华为云上的资源进行精细管理，请使用统一身份认证服务（Identity and Access Management，简称IAM）创建IAM用户及用户组，并授权，以使得IAM用户获得具体的操作权限，更多操作，请参见[通过IAM角色或策略授予使用RDS的权限](https://support.huaweicloud.com/usermanual-rds-pg/rds_pg_07_0002.html)。
- 登录账号需要具备授权项"rds:aiApplication:listApiKey"、"rds:aiApplication:getApiKeyValue"、"rds:aiApplication:get"和"rds:aiApplication:list"。
 
#### API Key功能说明
API Key是用于验证客户端（如Web、移动应用或服务器）身份并授权其访问Supabase后端服务（数据库、认证、存储等）的唯一标识符。API Key提供数据访问的第一层认证，而Supabase Auth（用户登录认证）在此基础上构建进一步的认证。API Key区分的是应用，而非用户。
Supabase应用的密钥分类，详见[表1]。
 表1Supabase应用API Key分类 
| 类型                                                                                                  | 格式               | 权限级别 | 可用途径      | 用途                                                                                  |
|:---|:---|:---|:---|:---|
| **[Publishable Key]** （可公开密钥） | sb_publishable_xxx | 低   | 平台        | 可安全地暴露在网络上：网页、移动/桌面应用、GitHub Actions、CLI、源代码。                                       |
| **[Secret Key]** （秘密密钥）     | sb_secret_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认证。
    表2Supabase应用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中的每一条安全发现。
     
   
- **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，则无需创建。
     
   
![](https://support.huaweicloud.com/usermanual-rds-pg/public_sys-resources/notice_3.0-zh-cn.png)
- 请您务必妥善管理API Key，避免Key值泄露造成安全隐患，避免因此被攻击破坏而引发业务损失。
- 关于如何使用API Key，请参见[Supabase SDK使用](https://support.huaweicloud.com/usermanual-rds-pg/rds_supabase_17.html)章节。
 
#### 约束限制
- AI应用已成功创建。
- Supabase AI应用当前仅支持每个Key类型只有一个生效的API Key。每次重置操作成功后会创建新的API Key，旧的API Key会失效。
 
#### 操作步骤
1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-rds-pg/zh-cn_image_0000002606863935.png)，选择区域。
3. 左侧导航栏，选择"AI应用开发平台"，进入AI应用开发平台管理界面。
4. 在"AI应用开发平台"列表页面，选择指定的AI应用，单击应用名称，进入应用详情页面。
5. 在左侧导航栏，选择"API Key"，进入API Key列表界面。 
   图1应用API Key列表   
   ![](https://support.huaweicloud.com/usermanual-rds-pg/zh-cn_image_0000002649785432.png "点击放大")
   
   
6. 可以选择状态为"正常"的API Key，单击操作列中"复制API Key值"，将对应的Key值复制到剪贴板中。
 
