API Keys
使用此功能请升级 @cloudbase/js-sdk 至 2.21.0 及以后版本
了解 API Keys
API Keys 是腾讯云开发(Tencent Cloud Base)的核心身份验证凭证,用于控制资源访问权限。
其功能定位是决定哪些资源可被访问(如 HTTP API、云函数、云托管等),而非用户身份认证。
与登录认证的区别:
类型 | 含义 | 举例 |
---|---|---|
API Keys | 资源访问权限控制 | HTTP API、云函数、云托管、云数据库、数据模型、AI 等 |
登录认证 | 用户身份验证与权限管理 | 默认访客、默认外部用户、默认内部用户等 |
API Keys 类型
API Keys 用于验证资源访问的权限,使应用能够访问腾讯云的资源服务。资源可以是 HTTP API、云函数、云托管等。API Keys 不用于区分用户,只区分资源类型。
目前腾讯云支持 2 类 API Keys,需在 API Key 配置进行管理,配置示例如下:

API Keys 的含义如下所示:
类型 | 格式 | 使用场景 | 安全要求 |
---|---|---|---|
客户端 Publishable key | JWT(长期有效) | 可以暴露在浏览器,用于请求公开访问的资源,如云函数、云托管等。Publishable Key 实际是一个匿名用户权限,可以有效降低 MAU | 禁止用于敏感操作 |
服务端 API Key | JWT(可配置有效期) | API Key 用于请求云开发的 HTTP API,仅在创建时可见,请妥善保管。 | 请勿与他人共享你的 API Key,也不要将其暴露于浏览器或其他客户端代码之中 |
API Keys 使用规范
API Keys 提供最基础的腾讯云公共资源保护,但访问公共资源的应用可能运行在不受任何密钥保护的环境中,例如:
- Web 应用,API Keys 会被暴露在源代码中
- 移动或桌面应用程序,API Keys 被暴露在编译后的包或可执行文件中
- 小程序应用,API Keys 会被暴露在打包的产物中
- 其他公开发布的 API,无需事先额外授权即可返回密钥
所以使用 API Keys 清注意对以下行为进行保护
- 静态或动态代码分析和逆向工程尝试获取
- 在浏览器中使用网络检查器
- 跨站请求伪造、跨站脚本、网络钓鱼攻击
- 中间人攻击
Publishable Key 可能需配合默认访客角色权限限制数据访问。
服务端 API Key 推荐存储于安全环境(如服务器内存),避免写入代码/配置文件
Publishable Key 与登录认证的关系
使用 Publishable Key 并不意味着已经采用默认访客的身份进行了登录,可以理解为仅仅是使用可公开访问的密钥进行资源访问,而不携带任何其他用户信息。
在应用中可以使用 Publishable Key 进行腾讯云资源访问,而使用应用的用户也可以通过登录认证的方式使用个人的 JWT 进行访问,二者并不冲突,关系如下图所示:

例如:当用户访问应用时,未进行任何登录认证,存在 Publishable Key 的情况下,使用 Publishable Key 进行资源访问;当用户进行登录认证后,他将不再以 Publishable Key 的方式进行资源访问,而是使用个人的 JWT 进行资源访问。
使用方式
客户端 Publishable Key 使用
首先前往 API Key 配置页面获取长期有效的 Publishable Key,然后在初始化 sdk 时将其赋值给 accessKey 字段
Publishable Key 只能生成一次,并且是长期有效的、不能删除的,请妥善保管
const app = cloudbase.init({
env: "xxxx-yyy",
clientId: "xxxxx",
accessKey: "Publishable Key",
});
// 此时访问资源时会带上 accessKey
// 调用云函数,携带在参数中的 access_token
app.callFunction({ name: "test" });
// 调用云托管,携带在请求头中的 Authorization
app.callContainer({
name: "xxx",
method: "POST",
path: "/",
header: {
"Content-Type": "application/json; charset=utf-8",
},
data: {},
});
// 调用数据模型,携带在请求头中的 Authorization
app.models.test.get();
服务端 API Key 使用
首先前往 API Key 配置页面获取 API Key,然后在使用 HTTP API 请求时带上 API Key,详见 HTTP API 使用说明
服务端 API Key 可以创建多个,并且可以单独设置过期时间,创建 API Key 时系统不会保存对应的值,仅在创建时可见,请妥善保管。请勿与他人共享,也不要将其暴露于浏览器或其他客户端代码之中