Open FGA:多层结构中的自定义角色配置咨询
Open FGA:多层结构中的自定义角色配置咨询
嘿,看你正在搭建一个多层级的Open FGA权限模型,涉及用户、组、角色还有不同业务实体的权限关联,先帮你把当前的模型整理成更清晰的格式,再聊聊一些可以优化的地方:
model schema 1.1 type user type group relations define member: [user] type role relations define assignee: [user, group#member] type holding_company relations define basic_read: [user, group#member, role#assignee] or full_read define full_read: [user, group#member, role#assignee] define subsidiary_list: [user, group#member, role#assignee] define subsidiary_create: [user, group#member, role#assignee] define subsidiary_delete: [user, group#member, role#assignee] type subsidiary relations define parent: [holding_company] define order_list: [user, group#member, role#assignee] define order_create: [user, group#member, role#assignee] define staff_list: [user, group#member, role#assignee] define staff_create: [user, group#member, role#assignee] type order relations define parent: [subsidiary] define read_basic: [user, group#member, role#assignee]
从当前模型来看,你已经搭好了基础的权限关联逻辑:
- 用户可以加入组,组内成员能继承组的权限
- 角色可以分配给单个用户或者组内成员,实现权限的批量管控
- 控股公司、子公司、订单形成了父子级的业务实体关联,权限可以围绕这些实体展开
这里有几个小建议供你参考:
- 权限复用优化:比如
holding_company里的basic_read依赖full_read,意味着拥有full_read权限的用户自动具备basic_read,这个逻辑没问题,但如果后续要加更多权限,可以考虑用角色来统一管理这些权限集合,避免反复写[user, group#member, role#assignee]这段重复内容 - 订单权限补全:当前
order的read_basic内容没写完,你可以根据业务需求补充更新、删除类的权限,或者设置权限继承规则——比如让子公司的权限持有者自动拥有旗下订单的对应权限 - 层级权限继承:可以尝试让子公司的权限关联到控股公司的对应权限,比如
subsidiary的order_list可以关联holding_company#subsidiary_list,这样控股公司有权查看子公司列表的用户,也能直接查看对应子公司的订单列表,减少重复配置
备注:内容来源于stack exchange,提问作者Leonardo
相关产品推荐
相关产品推荐

