V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
drupal
V2EX  ›  程序员

关于系统权限的问题咨询

  •  
  •   drupal · 2 天前 · 2214 次点击

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

    31 条回复    2025-06-04 13:02:12 +08:00
    kk2syc
        1
    kk2syc  
       2 天前
    没明白需要解决什么权限问题,锁定办案人员 uid 赋予查看/编辑的权限不就好了。
    NoOneNoBody
        2
    NoOneNoBody  
       2 天前
    这个思路很简单:权限是独立隔离的,而不是层级的
    qping
        3
    qping  
       2 天前 via iPhone
    你描述了需求,很简单的需求,解决起来有什么问题呢
    beyondstars
        4
    beyondstars  
       2 天前
    RBAC: Role-Based Access Control ,

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

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

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

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

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

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

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

    以上都是建立在直接对数据库操作的权限是严格可控的情况下。要做到严格控制数据库权限,比较简单的办法可以考虑将数据库设置为管理账号只能在本机登录,要对数据库进行特殊操作时,必须提前提交操作脚本审核,并由多人同时在场的情况下进行操作。
    cookii
        21
    cookii  
       2 天前
    基于属性的访问控制( ABAC )
    drupal
        22
    drupal  
    OP
       2 天前
    @kk2syc 你这个思路不错。笔录视案件不同,权限也不同,夸张的说有些 Case 连 Boss 都不可以去了解。
    drupal
        23
    drupal  
    OP
       2 天前
    @hehe5120 这个解决方案不错,经验丰富。
    soul11201
        24
    soul11201  
       2 天前
    搜下 ARABC 基于属性的权限控制,或者直接用 casbin ~
    uxstone
        25
    uxstone  
       2 天前
    用户 角色 权限
    unhappy224
        26
    unhappy224  
       1 天前
    看看这个 https://skiff-org.github.io/whitepaper/Skiff_Whitepaper_2023.pdf 端到端加密,里面有一整套解决方案 包括共享啥的
    HaibaraDP
        27
    HaibaraDP  
       1 天前
    数据加密存储会有问题吗?用户和笔录做一个关联表,笔录 id 加密存储,用户输入密码才能解密出笔录 id
    drupal
        28
    drupal  
    OP
       1 天前
    @unhappy224 这个可以参考,感谢感谢,用心了,兄弟。
    @HaibaraDP 存在数据库里头,解密数据库,啥都能看得到,如果是以图片的方式存储,那不是更加容易解密?
    HaibaraDP
        29
    HaibaraDP  
       1 天前
    @drupal 笔录 id 用对称加密算法加密后不需要担心数据库被解密吧,图片也是同理,暴力破解应该不需要考虑?
    munan56
        30
    munan56  
       21 小时 3 分钟前
    用办案人员的密码加密笔录
    RandomJoke
        31
    RandomJoke  
       19 小时 24 分钟前
    如果说要从数据库,运维,服务器这些角度都要隔绝,那就是加密存储+CDC+流程管理了吧,以个人密码加密杜绝数据库泄密,CDC 保证修改历史,流程机制管理保证服务器数据库泄密被操作(比如需要多方联合才可以连接)。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2919 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:27 · PVG 08:27 · LAX 17:27 · JFK 20:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.