Files
story/docs/permission-matrix.md
T

43 lines
2.5 KiB
Markdown
Raw Permalink Normal View History

2026-08-26 06:41:07 +08:00
# 家庭角色权限矩阵 V0.1
家庭角色用于控制一般管理能力,不代表录音、下载、分享或其他高敏感资源授权。资源访问始终继续检查客户组织、家庭成员、长者代理关系、分项授权、资源分享授权和资源状态。
家庭工作台调整非所有者成员角色时,先固定目标成员、当前角色和成员行版本,再选择管理员、编辑者或查看者,并展示本矩阵对应的能力变化。选择另一目标角色会要求重新确认;取消、切换家庭或刷新不会写入。最终PATCH继续由服务端验证`household.member.manage`、所有者保护、租户边界和`If-Match`,页面说明不能替代服务端授权。
| 能力 | 所有者 | 管理员 | 编辑者 | 查看者 |
|---|:---:|:---:|:---:|:---:|
| 查看家庭基本信息 | ✓ | ✓ | ✓ | ✓ |
| 修改家庭基本信息 | ✓ | ✓ | | |
| 管理成员 | ✓ | ✓ | | |
| 转移家庭所有权 | ✓ | | | |
| 查看长者基本资料 | ✓ | ✓ | ✓ | ✓ |
| 修改长者基本资料 | ✓ | ✓ | ✓ | |
| 查看通话文字结果 | ✓ | ✓ | ✓ | ✓ |
| 核对故事候选 | ✓ | ✓ | ✓ | |
| 管理普通设备配置 | ✓ | ✓ | ✓ | |
| 查看隐私请求进度 | ✓ | ✓ | | |
| 提交隐私请求 | ✓ | | | |
| 播放原录音 | 需独立授权 | 需独立授权 | 需独立授权 | 需独立授权 |
| 下载原录音 | 需独立授权 | 需独立授权 | 需独立授权 | 需独立授权 |
## 服务端判断顺序
1. 验证OIDC令牌签发方、使用对象、签名、有效期和Subject。
2. 通过`issuer + subject`查询平台账号,不接受浏览器指定租户边界。
3. 通过目标资源反查客户组织和家庭,再匹配当前身份的有效账号与成员关系。
4. 根据成员角色检查一般业务能力。
5. 后续领域接口继续检查长者关系、分项授权、具体资源授权和资源状态。
6. 跨客户组织、跨家庭和无权访问统一返回`RESOURCE_ACCESS_DENIED`,不泄露资源是否存在。
## 本地合成账号
本地Keycloak Realm为`voice-local`,仅用于合成数据联调:
| 用户名 | 密码 | 客户组织 | 家庭角色 |
|---|---|---|---|
| `owner` | `LocalOnly123!` | 合成数据一号客户组织 | 所有者 |
| `editor` | `LocalOnly123!` | 合成数据一号客户组织 | 编辑者 |
| `outsider` | `LocalOnly123!` | 合成数据二号客户组织 | 查看者 |
这些密码不得复制到任何共享、测试、预生产或生产环境。