设计原则
权限矩阵不是普通设置表格。它是安全、组织结构、资源范围和审计责任的交汇点;用户必须能区分直接授权、角色授权、团队/组继承、默认权限、外部访客和显式拒绝。
大理论
权限管理失败通常不是因为少了一个开关,而是用户无法解释最终权限从哪里来。角色、组、团队、空间、项目、仓库、全局权限和对象级权限会叠加;如果界面只展示勾选框,管理员无法判断一个用户为什么拥有删除、邀请、导出、billing 或 admin 能力。健康的权限矩阵要把权限来源、继承路径、覆盖规则、危险能力和保存影响放在同一个审查流程里。
小知识点
- 先分清对象层级:organization、space/project/repository、team/group/role、user、resource、capability。
- 每个单元格显示最终状态和来源:direct、role、group/team inherited、default、external guest、denied、pending invite、system locked。
- 危险权限单独标记并分组,例如 billing、delete、export、invite external、change security policy、manage roles。
- 修改前展示 diff:哪些用户/组/资源被增加或移除权限,是否触发通知,是否需要审批,是否写入审计日志。
- 单个用户详情要能展开来源路径和例外,不要让管理员在大表中猜继承关系。
- 矩阵要支持键盘导航、行列标题、冻结首列/表头、搜索、筛选和可访问名称;状态不能只靠颜色或图标。
设计判断
如果管理员能回答“这个人为什么有这个权限、改动会影响谁、能否回滚、谁有权保存”,矩阵是可信的;如果页面只是一堆复选框,保存按钮会变成安全风险。
实现建议
建立 permission change model:subject、subjectType、resource、scope、capability、currentEffectiveState、sourcePath、requestedState、riskLevel、approver、notificationImpact、auditReason。前端用表格或虚拟矩阵呈现,但把预览面板、危险权限确认、批量 diff 和审计理由作为保存前必经步骤。批量操作要禁用行内单项操作,保存后显示审计编号和回滚入口。
反例/风险
所有权限都用同一种勾选框、继承权限可被误以为直接授权、危险权限藏在普通列中、批量保存没有 diff、外部访客和内部成员混在一起、只显示角色名不显示资源范围、键盘用户无法定位行列关系。
案例分析
Atlassian 的 Jira 权限资料把权限拆成 global、space 和 work item 等层级,并说明 permission schemes 会被分配到具体空间;GitHub 文档把 repository access 与 organization roles 分开,并允许通过 repository roles 控制细粒度访问;Carbon Data Table 的批量操作模式要求选择行后出现 batch action bar,并在批量模式下禁用单行操作。可学习点是:权限 UI 要同时表达层级、对象范围和批量修改状态,不能只复制普通数据表。
来源链接
Atlassian Jira permissions overview: https://www.atlassian.com/software/jira/guides/permissions/overview Atlassian permission schemes: https://support.atlassian.com/jira-cloud-administration/docs/what-are-permission-schemes-in-jira/ GitHub repository roles: https://docs.github.com/organizations/managing-user-access-to-your-organizations-repositories/repository-roles-for-an-organization GitHub managing repository access: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-teams-and-people-with-access-to-your-repository Carbon Data Table: https://carbondesignsystem.com/components/data-table/usage/
Agent 指令
生成权限管理界面前必须输出 subject/resource/capability/sourcePath/diff/auditReason 模型;保存前提供继承来源、危险权限、批量影响和审计预览。