关于系统权限的问题咨询

4 天前
 drupal

询问系统,笔录只办案人员才有查看和编辑,哪怕是上一级也未必能够看到笔录,系统管理员也无权查看和删除,这种特殊场景,要如何才能解决权限问题?

2314 次点击
所在节点    程序员
31 条回复
kk2syc
4 天前
没明白需要解决什么权限问题,锁定办案人员 uid 赋予查看/编辑的权限不就好了。
NoOneNoBody
4 天前
这个思路很简单:权限是独立隔离的,而不是层级的
qping
4 天前
你描述了需求,很简单的需求,解决起来有什么问题呢
beyondstars
4 天前
RBAC: Role-Based Access Control ,

Administrator 只是一个 account ,Administrator 没有 办案人员 的 role ,所以无权查看。笔录是 resources ,在系统的 ACL 里面,设置 (笔录,role: [办案人员])-> allow, default -> deny.
drupal
4 天前
uid 不行,数据库管理员或者系统管理员能够看的到。我的意思是只有办案人员能查看自己经办的笔录内容。
@kk2syc
@NoOneNoBody
beyondstars
4 天前
drupal
4 天前
办案人员能看到所有的内容,其他人员看不到是谁处理的,全部脱敏
drupal
4 天前
@beyondstars 谢谢兄弟,看完了。感觉这个笔录权限设置很难。也许只有纸面归档的方式是最稳妥的。
jworg
4 天前
@drupal 为啥会有这种奇怪的角色,数据库管理员或者系统管理员。涉密的数据都是应该物理隔离的,这两者要看也只能进断网有监控的小黑屋的电脑上看。其他管理操作都应该内联在管理模块上。
NoOneNoBody
4 天前
@drupal #5
你的数据库本身就要设计为分散的,增删改查都跟权限有关,管理员仅有备份权限,删除权限都没有
你这样想:权限赋予的标的不是人,而是事,而人还需要判断是否跟事有关才能获得权限

头痛的管理员的删除权限,没有删除权限他就难以管理了,实际上还是需要某个人有最高权限,而对他的限制,只能通过行政方式,而不是技术方式
laminux29
4 天前
笔录权限的设置,一点都不难。你的问题应该是,要不是你不会设置,要不就是你用的信息化系统太烂了,不支持完整的 RBAC 。
hanxiV2EX
4 天前
数据加密存储?
hymzhek
4 天前
在 Windows 系统中 user 用户使用 efs 加密的文件 Administrator 是看不了的. 是否可以参考这个机制
drupal
4 天前
@NoOneNoBody 想法相同,这种事情,流程一定要正确,规则一定要符合要求。
@laminux29 权限设置不难,难得是要符合用户的流程规范。
@hanxiV2EX 不可行
@hymzhek 这个不太懂,回头再了解一下。
@jworg 你做一下 jiwei ,阿 Sir 涉密的内容,你就清楚了。
drymonfidelia
4 天前
@NoOneNoBody 每一条记录末尾都存储前一条完整记录(含 sha512 部分)的 sha512 这样只要删掉一个,后面的 hash 就全对不上了
NoOneNoBody
4 天前
@drymonfidelia #15
这个思路是事后吧,OP 这个权限的目的是事前和事中
kk2syc
4 天前
@drupal 笔录内容直接用经办人的数字证书加密,两个人同步存两份加密笔录,用各自的证书解密完才能查看(编辑)。但是你说的不能让知道是谁就很匪夷所思了,案件经办人这都是公开信息啊
rm0gang0rf
4 天前
系统管理员是权限集合的, 可以很容易做, 没有任何问题,如果系统管理员是个 1 ,那就做不了,刚做完类似的
renmu
4 天前
单独为这种操作实现权限,当成业务去写
hehe5120
4 天前
如果不考虑直接从数据库删除的话还是有办法的,因为有数据库权限的用户始终是可以删除的,只能从行政上来管理。

基于上面的前提,软件系统的设计方案可以考虑:

1. 软件系统不提供删除记录的功能,数据库账号删除记录权限都不给。软件系统中只提供数据记录的状态设置,可以设置为办结或终止,并备注清楚,不提供删除记录的功能。

2. 办案人员新增记录时,设置加密密码,这个密码不在系统中保存,新增和打开时都必须输入这个密码(或者缓存在前端,关闭前端或退出登录就需要重新输入密码),所有字段保存时用此密码加密,查看记录时用此密码解密。或使用个人数字证书加密解密,个人数字证书的管理有各种办法,选一个适合你们的。

这样做的后果是如果忘记密码或证书丢失,谁也恢复不了,除非暴力破解。如果要避免这种情况,可以再设置一个全局的证书,每条数据保存时用全局证书公钥加密后另外保存一份。特殊情况下,可以用私钥解密,私钥备份在一个 u 盘,装信封加封条,锁保险柜。

不过以上方案也是有漏洞的,有权限的用户可以不删除记录,而是把所有字段都更新为其他无关内容,如果要解决,那可以把每次修改的版本都记录到另一张表,这张表从数据库级别设置只允许插入,不允许更新和删除。软件系统层面提供历史记录查看功能,可以看到每次保存的版本。

以上都是建立在直接对数据库操作的权限是严格可控的情况下。要做到严格控制数据库权限,比较简单的办法可以考虑将数据库设置为管理账号只能在本机登录,要对数据库进行特殊操作时,必须提前提交操作脚本审核,并由多人同时在场的情况下进行操作。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1135807

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX