当前位置: 首页 > 知识库问答 >
问题:

如何处理用户角色权限的异常?

轩辕实
2023-03-14

假设一个web安全系统由5个表组成,这些表处理web应用程序的授权部分:

  1. 用户
  2. 角色
  3. 权限
  4. 角色权限(角色和权限之间的多对多)
  5. 用户角色(用户和角色之间的多对多)

有时,用户需要被授予对权限规则的短时间访问权限,然后再次删除,例如当某人外出度假,而其他人需要接管他的任务时。简单的回答是创建一个新角色,将该角色分配给用户,当不再需要该角色时,从用户中删除该角色或完全删除该角色。

我不想一直为这样的事情创造角色。建议的一种解决方案是使用一个名为userPermissionChanges的单独表,该表将记录以下内容:

  1. 用户ID
  2. PermissionID
  3. addDenyFlag(位非空)

如果这是要添加到用户的额外权限,则addDenyFlag为true;如果这是需要删除的权限,则addDenyFlag为false。在服务器范围内查询和缓存用户权限时,我们还将包括/排除更改表,并对每个用户的权限进行必要的更改。

建议的解决方案在理论上是可行的,但我不太确定这是处理这个问题的好方法。有人对如何最好地进行这项工作有什么建议吗?对于这种情况,我应该遵循什么标准?

共有1个答案

张森
2023-03-14

对于这种情况,我应该遵循什么标准?

有。您试图做的是以与实际应用程序分离的方式实现您自己的授权逻辑。这称为外部化授权管理。

OASIS在过去10年中开发了一种称为XACML的标准,它是可扩展访问控制标记语言的缩写。XACML给你什么?

  1. 一个体系结构,具有一个用于查询决策的授权引擎,一个用于查询引擎并执行决策的实施点。强制点保护您的应用程序和管理组件,您可以在其中管理所有授权逻辑
  2. 一种策略语言,用于定义您的授权要求,例如您拥有的临时访问权限
  3. 用于创建授权请求和响应的请求/响应格式

XACML实现了一个称为基于属性的权限改造(ABAC由NIST定义)的模型,并使用策略来表示授权约束。

示例:

  • 一个用户可以对类型为博客文章的项目执行action=view。

您拥有的用例处理临时分配和代理委派用例。您可以按如下方式实现前者:

  • 有一个名为temporaryRole的表,其中包含两个字段:角色名称和到期日期

后一种情况需要

  • 包含两个字段的表:用户id和代表id。
  • 一个新规则:角色为manager的用户或作为manager代表的用户可以对类型为blog post的项目执行action=view

动作、角色、委托、项目类型都是属性。你可以使用多少属性是没有限制的。你只需要弄清楚从哪里读它们。

使用XACML有几个好处:

  • 它是基于标准的

查看我的SlideShare帐户了解更多信息,或查看我的博客了解示例。

 类似资料:
  • 有些企业会对向用户发送的营销内容进行严格的管理——基层的运营或营销经理拟定的活动必须经过上级管理者的审批,方可生效执行。为此,诸葛的智能触达中提供了基于用户角色的触达活动权限管理,以支撑上述的企业需求。 如果您的团队需要使用权限控制,可通过以下步骤开启使用: 开启权限控制:智能触达的权限控制默认是关闭的,需要开启后方能使用; 分配用户角色:为团队成员分别分配设定「管理员」和「运营人员」角色; 开始

  • 主要内容:一、用户管理,二、权限管理,三、权限表,四、角色管理一、用户管理 1.创建用户 用户名参数表示新建用户的账户,由用户(User) 和主机名(Host) 构成,默认host为'%',表示所有主机(ip)都可登录,也可以使用如'lxc'@'192.168.%.%'的形式 可以不指定用户密码,无需密码登录; 2.查看用户 3.修改用户 4.删除用户 1.使用DROP USER语句来删除用户时,必须用于DROP USER权限。DROP USER语句的基本语

  • 在我的第一个nodejs应用程序中实现授权时,我遇到了一个问题,该应用程序使用expressjs、sequelize和jsonwebtoken进行身份验证。在内部,我想禁止/允许不同用户的路由,我不想使用另一个包,如oauth2或为我处理授权的东西。 目前,我已经创建了一个jsonwebtoken,它的有效负载中包含权限角色: 否我想在“GET/user”这样的调用中检查是否允许经过身份验证的用户

  • 6.0 版本开始,管理员可以在用户管理界面为一个用户赋予一个角色,不同角色可以配置不同权限,目前支持 10 种权限。 6.1 版本开始,我们添加了一个新的权限 relo_quota(角色配额),该权限用来给某个用户的角色设置空间配额。例如,我们可以通过添加 'role_quota': '100g' 为 employee 角色设置100GB的空间配额,同时其他用户还是使用默认的空间配额。 Seafi

  • 角色是分配给用户的权限集合。默认情况下,Navicat Monitor 包含三个预定义的角色供你分配给不同用户以限制其访问权限。它还允许你创建具自定义权限设置的新角色。苃要配置角色及其权限,请前往“配置”->“角色和权限”。 每个预定义的角色都有不同的权限: 角色 权限 管理员 可以完全控制访问所有页面。此角色的权限是不可编辑的。 DBA 可以访问所有页面,但以下功能“除外”: - 激活令牌密钥,

  • 我目前的理解是Spring没有区分角色和权威,唯一的区别是角色名称的缩写。 我希望实现的是具有权威的角色。另外,如果我给一个用户ADMIN这个角色,他就会获得所有相关的特权(举个例子,我们可以访问网站上的路由以更新页面) 我当前的实现如下:我有一个自定义特权类,它与Roles类有多对多的关系,而Roles类与用户的类有多对多的关系。当,它迭代所有权限并获取。 我的问题是:有没有更好的方法(最好是s