权限控制
CloudBase 提供两套权限模型,分别对应不同的环境模式,两者解决的核心问题相同——"用户能访问哪些资源",但实现机制完全不同:
| 环境模式 | 权限模型 | 配置方式 |
|---|---|---|
| 传统模式 | 角色 + 策略(RBAC) | 控制台可视化配置 |
| PG 模式 | 三种数据库角色(anon / authenticated / service_role) + GRANT + 行级安全策略(RLS) | SQL 语句(同时支持控制台辅助配置) |
- PG 模式用户:完整的权限模型说明请阅读 PG:身份认证(含三角色、GRANT、RLS、典型场景),本页不适用
- 传统模式用户:继续阅读下文
角色 + 策略(传统模式)
CloudBase 权限控制通过角色体系实现精细化的权限管理,解决"用户能访问哪些资源"的问题。
前往 云开发平台/身份认证/权限控制 查看权限控制。
权限模型
CloudBase 权限控制基于 角色-策略 模型:
用户 → 角色 → 网关权限 + 资源权限 + 数据权限
- 角色:权限的载体,将用户分配到不同角色
- 网关权限:在用户尝试访问资源时的第一道防线,鉴权时间早于资源健全,查看网关权限控制
- 资源权限:该角色可以访问哪些资源(数据模型、云函数、云存储等)
- 数据权限:可以访问哪些数据(全部数据、仅自己创建的数据、特定条件数据)
角色体系
系统角色
CloudBase 提供五种内置系统角色,满足常见的权限场景:
| 角色类型 | 说明 | 典型使用场景 |
|---|---|---|
| 管理员 | 拥有所有权限,可管理环境、成员、资源 | 项目负责人、技术主管 |
| 所有用户 | 包含所有已登录和未登录用户 | 公开内容访问控制 |
| 组织成员 | 添加到组织架构的用户 | 企业内部应用访问 |
| 注册用户 | 除组织成员外的非匿名登录用户,在用户管理中查看 | C 端应用用户(如电商应用、社交应用) |
| 匿名用户 | 使用匿名登录的访客 | 公开页面、营销落地页 |
⚠️ 安全警告:管理员角色拥有系统最高权限(删除数据、修改配置、管理成员等),请谨慎使用。建议为日常操作创建权限受限的自定义角色,仅在必要时使用管理员账号。
自定义角色
当系统角色无法满足业务需求时,可以创建自定义角色以实现更精细的权限控制。
创建步骤:
- 访问 云开发平台/身份认证/权限控制 页面
- 点击「创建角色」
- 设置角色标识和描述(标识用于代码中引用)
- 配置该角色的资源访问权限
常见自定义角色示例:
| 角色标识 | 角色名称 | 适 用场景 |
|---|---|---|
content_editor | 内容编辑 | 管理文章、商品等内容数据 |
data_analyst | 数据分析 | 查看统计数据和分析报表 |
finance_admin | 财务管理 | 管理订单、交易等财务数据 |
customer_support | 客服人员 | 处理用户反馈和工单 |
多角色权限合并规则
当用户拥有多个角色时,最终权限按以下规则合并:
- 允许权限取并集:用户拥有所有角色的允许权限之和
- 拒绝权限优先:任一角色的拒绝规则会覆盖其他角色的允许规则
示例:
用户同时拥有:内容编辑 + 数据分析
角色权限:
- 内容编辑:允许访问文章表(读、写、改)
- 数 据分析:允许访问订单表(仅读)
最终权限:
- 可以读写文章表的所有数据
- 可以查看订单表的数据(仅读)
成员管理
将用户添加到角色,实现权限分配。
添加成员的两种方式
方式一:在角色中添加成员
- 访问 云开发平台/身份认证/权限控制 页面
- 找到目标角色,点击「配置成员」
- 点击「添加成员」批量选择用户
- 确认后立即生效
方式二:在组织架构中管理
- 访问 云开发平台/身份认证/组织架构 页面
- 创建部门和岗位结构
- 将用户添加到对应的组织节点
- 为用户批量关联角色
💡 提示:组织架构方式适合企业应用,可以基于部门和岗位批量管理用户权 限。
修改用户权限
修改用户权限有两种途径:
修改角色权限
- 在角色的权限配置中调整资源和数据权限
- 该角色下所有用户自动继承新权限
- 适合批量调整多个用户的权限
调整用户角色
- 将用户从某个角色移除
- 或添加用户到新角色
- 适合单个用户的权限调整
⚠️ 注意:权限变更可能需要一定时间生效,建议用户退出重新登录,立即应用新权限。
权限配置
为角色配置具体的访问权限,包括资源权限、数据权限两个维度。
资源权限
资源权限决定角色可以访问哪些 CloudBase 资源。
配置步骤:
- 在角色卡片中点击「配置权限」
- 选择「添加自定义策略」
- 选择要授权的资源类型和具体资源
支持的资源类型:
| 资源类型 | 说明 | 典型应用场景 |
|---|---|---|
| 文档型数据库 | NoSQL 数据库权限配置,文档 型数据库权限说明 | 业务数据储存 |
| MySQL 数据库 | 关系型数据库权限配置,MySQL 数据库权限说明 | 复杂业务数据 |
| 云函数 | 处理后端业务逻辑,云函数权限说明 | API 调用、数据处理 |
| 云存储 | 文件存储,云存储权限管理 | 图片、视频、文档上传 |
| 微搭应用 / 数据模型 / APIs / 工作台 | 可在权限控制页面直接进行管理, 前往云开发平台/身份认证/权限控制,进入权限策略配置窗口,如下图 | 后台应用、内容管理、工作台(即云后台)等 |
权限策略配置窗口:
数据权限
数据权限控制角色可以访问哪些数据,支持行级和列级两种维度。
行级权限(数据行)
控制用户可以访问哪些数据行,实现数据隔离。
常见配置方式:
| 权限类型 | 说明 | 适用场景 |
|---|---|---|
| 所有数据 | 访问 全部数据行 | 管理员、数据分析人员 |
| 仅自己的数据 | 只能访问自己创建的数据 | 普通用户、个人数据管理 |
| 特定条件数据 | 满足特定条件的数据(如部门) | 部门经理、区域负责人 |
配置示例:
实际应用:
- 销售人员只能查看自己负责的客户数据
- 部门经理可以查看本部门的所有数据
- 区域经理可以查看所负责区域的数据
列级权限(数据列)
控制用户可以访问哪些字段(列),隐藏敏感信息。
配置选项:
- 可读字段:用户可以查看的字段列表
- 隐藏字段:对用户不可见的敏感字段
配置示例:
实际应用:
- 隐藏销售人员的成本和利润字段
- 隐藏客服人员的用户手机号和身份证号
- 隐藏普通员工的薪资和绩效数据
💡 提示:行级权限和列级权限可以同时使用,实现更精细的数据访问控制。
配置说明:
不同资源类型支持的操作权限可能有所差异,具体配置方式请参考对应的资源 文档:
典型应用场景
场景一:个人博客网站
需求分析
个人博客需要支持游客浏览、用户评论和博主管理三种角色。
角色规划
| 角色 | 权限范围 | 使用对象 |
|---|---|---|
| 匿名用户 | 浏览文章、查看评论 | 所有访客 |
| 注册用户 | 浏览文章、发表评论、点赞 | 注册读者 |
| 管理员 | 发布文章、管理评论、网站设置 | 博客所有者 |
数据权限配置
文章表(blog_articles):
| 角色 | 查看权限 | 创建权限 | 修改权限 | 删除权限 |
|---|---|---|---|---|
| 匿名用户 | 已发布文章 | ❌ | ❌ | ❌ |
| 注册用户 | 已发布文章+草稿 | ✅ | 仅自己的草稿 | 仅自己的草稿 |
| 管理员 | 所有文章 | ✅ | ✅ | ✅ |
评论表(comments):
| 角色 | 查看权限 | 创建权限 | 修改权限 | 删除权限 |
|---|---|---|---|---|
| 匿名用户 | 所有评论 | ❌ | ❌ | ❌ |
| 注册用户 | 所有评论 | ✅ | 仅自己的评论 | 仅自己的评论 |
| 管理员 | 所有评论 | ✅ | ✅ | ✅ |
实施步骤
1. 启用匿名登录
在 登录方式管理 开启「允许匿名登入」。
2. 配置数据库权限
在数据库集合的权限设置中配置对应角色的访问权限,参考 文档型数据库权限。
3. 前端调用匿名登录
import cloudbase from '@cloudbase/js-sdk';
const app = cloudbase.init({
env: 'your-env-id'
});
const auth = app.auth();
// 页面加载时执行匿名登录
auth.signInAnonymously().then(() => {
console.log('