ACL : access control list
访问权限管理
在企业服务里,算是个基础服务。今天谈谈关与它的设计。
网上有好多资料,给出了ER图,类图。讲得都非常好,试用于各个场景。但是用起来,前期没什么问题,到后期发现有很大的问题。
分析原因,是因为以开发的角度去解决这个问题,去思考ACL。少了从运营的角度去分析ACL。
首先,明确一些问题与误区:
----------------------------------------------
ACL本身仅仅是负责了存储。
一个具体业务,根据那个维度进行数据权限划分,还是来自业务,存储成什么样的格式,ACL本身是不知道的。业务只是基于ACL快速建立数据权限模型。
ACL分为功能权限和数据权限
用户能访问那写表单和页面,属于功能权限。多个用户访问同一个表格,但是看到的数据不一样,这是数据权限。
正确理解角色、资源、用户三者关系
网上好多资料,对三者进行了抽象,抽象得非常好。可以适应各种场景。完美。
这里强调的是建立数据模型时,没有统一的方式。要跟具体业务来。具体分成如下
(1)用户-角色关系 (多对一)
在这个模型中,是不需要资源的。举例,针对我的系统用户,我只想给部分人提供发放邮件的功能,我只关心给哪些人发邮件,所谓的功能权限,下放到业务代码中,不需要维护到ACL里。
(2)角色-资源关系 (一对多)
系统会经常创建一个报表,要把新创建的报表分配给系统用户。那么新创键一个资源,就要绑定几十个用户,显然运营成本会很大。要事前把用户和觉色进行关联,然后把新创建的资源与角色绑定。
(3)角色-资源 (多对多)
举例,一个全国的销售人员管理系统,资源分级,至上而下:全国,大区,省,市,区
公司各个人员与期资源进行关联。而且这个关联关系,会在多个业务单元中使用,导致弱化角色的概念,只关心数据权限。
(4)账户-角色-资源
三者,两两关联,再加上一个全的。共四个场景。
没有必要用统一的方式去做存储,要根据具体业务场景套用上面的模型。
没有必要,把所有的权限,都搞成 固定的模型,账户-角色-资源。这样不方便理解。
资源设计,以及查询
我发现,目前提供的资料,仅仅强调了存储,没有强调查寻接口如何设计。这也是导致ACL不好用的根本原因。要结合上面的模型,提工一系列查询接口,要贴近业务,换位思考。
独立维护业务线的用户信息
----------------------------------------------
我设计的ACL管理系统
可以无缝迁移到各个公司系统中。
预留接口与SSO打通。
多个业务线都可一使用。选定业务线后,所有操作都在该业务线下操做。
维护账户、角色、资源以及三者映射关系。
提供批量上传的功能。针对账户、角色、资源以及三者映射关系都可以批量上传。
提供丰富,能满足业务需求的查询功能。
默认提供登陆功能,建议对代码做修改,接入公司的SSO。
特殊说明:
通过存储和查询,解决了一个业务上的复杂功能。
资源:
1 全国 华东大区 浙江省 杭州市 西湖区
某个人,可能跟资源有多条绑定关系。
最后想知道这些绑定关系,涉及哪些市,人可能绑定到任意层级,要反回某一层级的管线数据。
一个五层树状结构,用户可能绑定到任何一层。求某一层的涉及的资源。
这个需求很长用,处理起来很复杂。提供的解决方案,解决了这个问题。
代码已经实现,后面会上传到github上
- 大小: 72.7 KB
分享到:
相关推荐
SSH(Spring、Struts、...综上所述,这个SSH实现的OA系统利用了Java的技术栈来构建一套安全、可扩展的办公自动化平台,通过ACL权限管理确保了不同用户只能访问他们被授权的功能,从而提高了系统的安全性与效率。
NAT + VLAN + ACL 管理企业网络 在企业中实现网络管理是非常重要的,因为企业中有多个部门,每个部门都有其特定的需求和权限。为了满足这些需求,我们可以使用 NAT、VLAN 和 ACL 技术来管理企业网络。 首先,让...
**ACL权限介绍** 在计算机系统中,访问控制列表(Access Control List,简称ACL)是一种用于精细化权限管理的技术,尤其在Linux和Unix系统中被广泛使用。传统的Linux权限模型基于所有者(owner)、用户组(group)...
UGO(User、Group、Other)和ACL(Access Control List,访问控制列表)权限管理方式是 Linux 安全体系的文件权限管理的两种主要方式。 UGO 权限管理方式是传统的 Unix 文件系统的权限管理方式,Linux 继承了 Unix ...
在实现ACL权限管理时,通常需要建立一个配置文件,根据用户登录后的身份分配相应的权限,然后在需要控制访问权限的地方使用acl模块进行权限校验。 例如,我们可以通过配置文件定义不同的角色以及它们的权限: ```...
### Linux ACL(权限管理)详解 #### 一、引言 在Linux系统中,权限管理是维护系统安全和用户访问控制的重要组成部分。传统的文件权限管理主要通过用户(user)、组(group)和其他(other)三个基本权限类别来实现。...
### Linux账号管理与ACL权限设置 #### 一、Linux账号管理概述 Linux系统中的账号管理是确保系统安全和资源合理分配的重要组成部分。通过账号管理,系统管理员可以有效地控制用户对系统资源的访问权限。 ##### ...
Java 连接 ZooKeeper 并增加 ACL 权限 ZooKeeper 是一个开源的分布式应用程序协调服务,由 Apache 软件基金会提供。它提供了许多功能,如配置管理、名字服务、分布式同步、组服务等。 Java 是一种广泛使用的编程...
项目4 管理用户和用户...删除ACL权限;练习2;删除ACL权限;*ACL的mask权限;ACL的mask权限演示;*mask权限验证;思考;课堂活动验证&结论;*ACL的有效权限演示;ACL的有效权限验证;默认权限(拓展选学);默认权限;默认权限验证
Go-ACL,全称为Access Control List(访问控制列表),是一种在Go编程语言中实现轻量级权限管理的库。这个库的设计目标是为了帮助开发者轻松地处理用户或对象的访问权限,确保系统的安全性与数据的隐私。在Go语言中...
ACL:Access Control List 实现灵活的权限管理 除了文件的所有者,所属组和其他人,可以对更多的用户设置权限 CentOS7默认创建的xfs和ext4文件系统具有ACL功能 CentOS7之前版本,默认手工创建的ext4文件系统无ACL...
支持 ACL、RBAC、ABAC 多种模型的 PHP 权限管理框架。支持 ACL、RBAC、ABAC 多种模型的 PHP 权限管理框架。支持 ACL、RBAC、ABAC 多种模型的 PHP 权限管理框架。支持 ACL、RBAC、ABAC 多种模型的 PHP 权限管理框架。...
Lotus Domino 是一款强大的协作平台,其核心组件之一是Access Control List(ACL),它负责管理数据库的访问权限。本文将详细讲解如何使用LotusScript复制一个数据库的ACL到另一个数据库,以及在处理过程中的一些...
删除文件权限,方便windows下一些ACL控制的限制!
**ACL(Access Control List,访问控制列表)在校园网管理中的应用** 访问控制列表是网络管理中的重要工具,尤其在校园网这样的复杂环境中,它扮演着至关重要的角色。ACL允许网络管理员设定规则,以控制数据包在...
本文将详细讲解账号管理中的sudo、ACL权限设置以及用户身份切换的相关知识。 首先,sudo是一个允许用户以其他用户(通常是root)的身份执行命令的工具。当用户尝试使用sudo时,系统会检查/etc/sudoers文件,确认该...
例如,对"/dubbo"节点设置ACL权限,需要使用以下命令: ./zkCli.sh -server ip:port setAcl /dubbo ip:**.**.***.***:cdrwa,ip:**.**.***.***:cdrwa 其中,setAcl命令用于设置指定节点的权限,后面的参数定义了...
C#对文件夹通过ACL进行权限管理