诚心请教: 如何优雅的实现对数据的权限控制?
資深大佬 : igeeky 4
我实现了一个RBAC
的权限系统. 它能很好的对 api 接口的权限进行控制. 具体功能及实现请参考这里: https://github.com/iGeeky/wolf/blob/master/README-CN.md
我现在想添加数据的权限控制, 如下下面一个例子:
用户 A
只能查询及审核属于自己业务范围的视频数据(比如通过 tag 区分)
目前的 RBAC 只能实现, 如果给了用户 A
查询及审核视频的权限, 也就对所有视频都有了相应权限.
我考察了一下, 感觉使用ABAC
实现对数据的访问控制, 可能是一个比较常用的方法, 比如上面的例子中, 可以定义这样的策略:
测试数据:
用户: {用户名: 用户 A, 角色: 短视频审核员, 部门: 运营 1 组, ...} 视频: {标题: 短视频, TAG: 短视频, ...}
策略(这里不是严格按照 ABAC 或 RBAC 的架构及概念来描述的):
用户: 用户.角色 = 短视频审核员 资源: 视频 动作: 读取,审核 匹配策略: 视频.TAG = 短视频
如果在业务系统内实现上面的逻辑, 应该是比较好实现这样一套控制策略的. wolf 的架构是与业务系统完全解耦的, 它是在 http 代理层实现的. 因此在目前 wolf 中实现却有一些难题:
- 视频信息并不在 wolf 系统中,所以也拿不到视频的 TAG 信息. Wolf 也不希望读取业务系统数据.
- 视频的读取及审核操作是在业务系统中实现的, Wolf 并不能直接控制.
对于以上问题, 大家有什么好的解决方案没?
大佬有話說 (33)