权限管理之基于ACL的实现:针对需求做分析和设计

几乎所有的系统都需要进行权限管理,可见权限管理是非常基础而重要的。比如系统包含很多模块,以模块为单位,针对不同用户进行不同操作。比如张三对组织模块只能查看,而李四既可以进行查看,也可以进行修改。所以需要对模块进行权限管理,即权限授予和验证权限两个过程。

 

实现思路

使用角色达到复用。角色,即权限的集合。通过授予用户角色,达到控制权限的目的。好处很明显,角色具有通用性,比如既可以授予张三管理员角色,也可以授予李四管理员角色。

 

也需要个性化。在享受复用的同时,也需要个性化。比如授予张三管理员的权限了,但针对张三这个人,有个操作不同于管理员,其他都一样。这时就需要个性化,继承角色的同时,也有自己的东西,就像子类继承父类,是一个道理。

 

抽取Model

主要负责类:用户(User),角色(Role)、资源(module)和操作许可(Permission)

衍生类:用户角色(UserRole)和用户(或者角色)对某个资源的某个操作(ACL)


 

RoleUser多对多的关系,通过中间UsersRoles拆分成两个多对一关联。

Module自关联,用以实现模块的树形结构。

ACL(访问控制列表)的主要要素RoleUserModulePermissionstatus允许/禁止用于记录用户或者角色对资源拥有的权限。

 

设计

问题一:多个角色授予同一用户造成权限冲突

为模块授权,通过创建角色,并为该角色分配权限,然后便可以为用户分配角色了(可以为多个),从而达到复用和统一控制的目的。

 

一个用户可以拥有多个角色,给客户提供灵活方便的同时问题来了——多个角色被授予同一个用户时出现授权冲突,比如:角色A对模块A有删除权限,但角色B对模块A的删除权限则被禁止,这时候,如果将角色A和角色B同时授予用户A,则会造成困扰,它应该是以角色A的授权为准,还是应该以角色B的授权为准?

 

办法总比问题多,那么我们应该考虑解决方案,并从中选择最优解。针对这个问题,可以考虑如下解决办法:

1如果多个角色之间有授权冲突,则不允许将这些角色同时授予同一个用户,比如,在上述例子中,不允许将角色A和角色B同时授予用户A

2允许将有授权冲突的角色同时授予同一个用户,但用户在某个时刻只能扮演其中的某个角色。在用户登陆后台管理界面之后,可以通过切换角色,来执行不同的操作!

3允许将有授权冲突的角色同时授予同一个用户,对用户的这些角色来说,有优先级的概念,当将角色分配给用户的时候,应该设置它的优先级。同一个角色在不同的用户那里可能具有不同的优先级。当授权有冲突的时候,以优先级更高的角色授权为准。

前两种方法不够灵活,比较死板,过于强硬,而第三种方法比较人性化。

 

问题二:模块操作状态的存储问题

操作状态存储在ACL中,但操作至少有增删改查”四种,最直观的方式是ACL需要针对每种操作设置一个属性,来存储“允许/禁止”标识。

但是这种设计会造成灵活性的缺失。比如有可能随着需求的变更,添加了其它的操作类型,那时候必须对ACL做更改才能适应需求,更改ACL意味着更改数据库表,系,这是多么可怕的事情呀

为了适应这种可预见的需求,可将操作及其“允许/禁止”标识设计如下:

在ACL中,设计一个int类型的状态位:intaclState,在Java中,int类型有32位,用位(bit)来表示操作类型,假设从右向左,分别代表CRUD ,位的值表示“允许/禁止”。这样,操作类型及其“允许/禁止”标识便能合二为一,而且提高了灵活性,因为最多能支持32种操作类型

 

问题三:控制用户对授予权限的继承状态,实现个性化。

通过aclTriState字段来标识的办法来满足这种需求。这个额外状态位用-1(一个32位全1的int类型值),表示针对用户的授权无效,即使用继承角色的权限;用0(一个32位全0的int类型值),表示针对用户的授权有效,即使用直接授予用户的权限


这些是对权限管理做的分析和设计,关于实现,请关注下篇博客

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
目录 第一章: DNS 的起源和背景 .................................................................................................................1 第二章: DNS 的体系结构和原理 .........................................................................................................3 2.1 域名空间和体系结构....................................................................................................................3 2.2 域和域名........................................................................................................................................3 2.3 区和域的不同................................................................................................................................4 2.4 域名服务器的类型........................................................................................................................5 2.4.1 主域名服务器.........................................................................................................................6 2.4.2 辅域名服务器(次级域名服务器) ....................................................................................6 2.4.3 隐藏服务器(stealth server) ..............................................................................................6 2.4.4 高速缓存域名服务器(caching only server) .....................................................................6 2.4.5 转发服务器(forwarding server) .......................................................................................6 2.5 DNS 基本原理...............................................................................................................................6 第三章:建立 DNS 系统服务 ................................................................................................................8 3.1 DNS 系统的来源...........................................................................................................................8 3.2 系统的要求....................................................................................................................................8 3.2.1 硬件需求................................................................................................................................8 3.2.2 CPU 需求................................................................................................................................8 3.2.3 内存需求................................................................................................................................8 3.2.4 域名服务器的高配置问题....................................................................................................8 3.2.5 支持操作系统........................................................................................................................9 3.2.6 获得 bind 9.2.3........................................................................................................................9 第四章:域名服务器配置....................................................................................................................10 4.1 配置实例.....................................................................................................................................10 4.1.1 高速缓冲域名服务器(Caching-Only DNS) ...................................................................10 4.1.2 授权的域名服务器(Authoritative-only DNS) ................................................................10 4.2 负载分担.....................................................................................................................................11 4.3 通告(NOTIFY) .........................................................................................................................12 4.4 域名服务器的运行.....................................................................................................................12 4.4.1 域名服务器后台进程工具的使用......................................................................................12 4.4.1.1 诊断工具........................................................................................................................................12 4.4.1.2 管理工具.......................................................................................................................................13 4.4.2 信号(Signals) ..................................................................................................................16 第五章 高级理念..................................................................................................................................17 5.1 动态更新.....................................................................................................................................17 5.1.1 日志文件(journal file) ....................................................................................................17 5.2 增量域传输(IXFR) ................................................................................................................17 5.3 拆分 DNS....................................................................................................................................18 5.4 TSIG(信号安全处理) .............................................................................................................21 5.4.1 为每对主机产生共享密匙..................................................................................................21 5.4.1.1 自动产生....................................................................................................................................... 5.4.1.2 手工生成....................................................................................................................................... 5.4.2 把共享密匙拷到两台机器中..............................................................................................2 5.4.3 通知服务器密匙的存在......................................................................................................2 5.4.4 通知服务器使用密匙..........................................................................................................2 5.4.5 基于 TSIG 密匙的访问控制 ...............................................................................................2 5.4.6 错误......................................................................................................................................2 5 TKEY ...........................................................................................................................................2 6 SIG(0)...........................................................................................................................................2 7 DNSSEC ......................................................................................................................................2 5.7.1 产生密匙..............................................................................................................................2 5.7.2 产生 keyset...........................................................................................................................2 5.7.3 标志子域系列(Child’s Keyset) .......................................................................................2 5.7.4 对域进行标记......................................................................................................................2 5.7.5 配置服务器..........................................................................................................................2 8 BIND9 的 IPV6 支持 ...................................................................................................................2 5.8.1 使用 AAAA 记录的地址查找 ..............................................................................................2 5.8.2 使用 A6 记录查询地址 ........................................................................................................2 5.8.2.1 A6 链(Chains) ...........................................................................................................................2 5.8.2.2 DNS 服务器的 A6 记录 .........................................................................................................2 5.8.3 使用 Nibble 格式进行地址到名字的查询 .........................................................................2 5.8.4 使用 bitstring 格式进行地址到名字的查询........................................................................2 5.8.5 用 DNAME 来标示 IPV6 的反向地址 .................................................................................2 章 BIND9 LIGHTWEIGHT 解析 ..............................................................................................3 1 LIGHTWEIGHT 解析库...................................................................................................................3 2 运行后台解析.............................................................................................................................3 章 BIND9 配置参考 .....................................................................................................................3 1 配置文件的组成元素.................................................................................................................3 7.1.1 地址匹配表...........................................................................................................................3 7.1.1.1 语法 ............................................................................................................................................... 7.1.1.2 定义和使用................................................................................................................................... 7.1.2 语法注释...............................................................................................................................3 7.1.2.1 语法............................................................................................................................................... 7.1.2.2 定义和用法.................................................................................................................................... 2 配置文件语法..............................................................................................................................3 7.2.1 acl 语句语法.........................................................................................................................3 7.2.2 acl 语句定义和使用............................................................................................................3 7.2.3 控制语句语法.......................................................................................................................3 7.2.4 controls 语句定义和用法.....................................................................................................3 7.2.5 include 语句语法..................................................................................................................3 7.2.6 包含语句定义和使用...........................................................................................................3 7.2.7 键语句语法..........................................................................................................................3 7.2.8 key 语句的定义和使用.........................................................................................................3 7.2.9 logging 语句语法.................................................................................................................36 7.2.10 Logging 语句定义和使用..................................................................................................37 7.2.10.1 channel 短语 ................................................................................................................................37 7.2.10.2 category 短语...............................................................................................................................39 7.2.11 lwres 语句语法....................................................................................................................40 7.2.12 lwres 语句定义和用法 ......................................................................................................41 7.2.13 options 语句语法................................................................................................................41 7.2.14 options 语句定义和用法 ....................................................................................................43 7.2.14.1 Boolean 选项 ...............................................................................................................................44 7.2.14.2 转发.............................................................................................................................................47 7.2.14.3 访问控制.....................................................................................................................................48 7.2.14.4 接口.............................................................................................................................................49 7.2.14.5 查询地址.....................................................................................................................................49 7.2.14.6 域传输.........................................................................................................................................50 7.2.14.7 操作系统资源限制.....................................................................................................................51 7.2.14.8 服务器资源限制.........................................................................................................................52 7.2.14.9 周期性任务间隔.........................................................................................................................52 7.2.14.10 拓扑...........................................................................................................................................53 7.2.14.11 sortlist 语句................................................................................................................................54 7.2.14.12 RRset 排序.................................................................................................................................55 7.2.14.13 合成的 IPV6 响应 ....................................................................................................................56 7.2.14.14 调谐...........................................................................................................................................56 7.2.14.15 统计文件...................................................................................................................................57 7.2.15 服务器语句语法................................................................................................................57 7.2.16 服务器语句定义和使用....................................................................................................58 7.2.17 trusted-keys 语句语法.........................................................................................................59 7.2.18 trusted-keys 语句定义和使用.............................................................................................59 7.2.19 视图语句语法....................................................................................................................59 7.2.20 视图语句定义和使用........................................................................................................59 7.2.21 zone 语句语法 ....................................................................................................................60 7.2.22 zone 语句定义和使用.........................................................................................................61 7.2.22.1 域文件类型.................................................................................................................................61 7.2.22.2 类 ................................................................................................................................................63 7.2.22.3 zone 选项 .....................................................................................................................................63 7.2.22.4 动态更新政策.............................................................................................................................65 .3 域文件.........................................................................................................................................66 7.3.1 资源记录类型及使用..........................................................................................................66 7.3.1.1 资源记录.......................................................................................................................................66 7.3.1.2 RRs 的原文表达............................................................................................................................68 7.3.2 MX 记录的讨论....................................................................................................................69 7.3.3 设置 TTLs .............................................................................................................................69 7.3.4 IPV4 的反向解析..................................................................................................................70 7.3.5 其他的域文件指令..............................................................................................................70 7.3.5.1 $ORIGIN 指令...............................................................................................................................70 7.3.5.2 $INCLUDE 指令 ...........................................................................................................................71 7.3.5.3 $TTL 指令 .....................................................................................................................................71 第八章、 BIND9 的安全性 ...................................................................................................................73 8.1 访问控制列表..............................................................................................................................73 8.2 CHROOT 和 SETUID(对与 UNIX 服务器) ................................................................................73 8.2.1 chroot 环境 ..........................................................................................................................74 8.2.2 使用 setuid 函数 ...................................................................................................................74 8.3 动态更新安全性.........................................................................................................................74 第九章、疑难解答................................................................................................................................75 9.1 一般性问题..................................................................................................................................75 9.1.1 BIND 不工作了,如何才能找出问题的根源? .................................................................75 9.2 增加和改变序列号.....................................................................................................................75 9.3 从哪里可以获得帮助.................................................................................................................75 附录 A:附录...........................................................................................................................................76 A.1 致谢.............................................................................................................................................76 A.1.1 DNS 与 BIND 的历史...........................................................................................................76 A.2. 历史的 DNS 信息 .....................................................................................................................76 A.2.1. 记录资源类 ........................................................................................................................77 A.2.1.1. HS = hesiod..................................................................................................................................77 A.2.1.2. CH = chaos...................................................................................................................................77 A.3. 一般的 DNS 参考信息 .............................................................................................................77 A.3.1 IPv6 地址 (A6)....................................................................................................................77 A.4. 参考和建议阅读文献 ...............................................................................................................78 A.4.1. 注释的要求 (RFCs)...........................................................................................................78 A.4.2. 互联网草案 ........................................................................................................................80 A.4.3. 关于 BIND 的其他文件 .....................................................................................................80
一、启用guest来宾帐户; 二、控制面板→管理工具→本地安全策略→本地策略→用户权利指派里,“从网络访问此计算机”中加入guest帐户,而“拒绝从网络访问这台计算机”中删除guest帐户; 三、我的电脑→工具→文件夹选项→查看→去掉“使用简单文件共享(推荐)”前的勾; 四、设置共享文件夹; 五、控制面板→管理工具→本地安全策略→本地策略→安全选项里,把“网络访问:本地帐户的共享和安全模式”设为“仅来宾-本地用户以来宾的身份验证”(可选,此项设置可去除访问时要求输入密码的对话框,也可视情况设为“经典-本地用户以自己的身份验证”); 六、右击“我的电脑”→“属性”→“计算机名”,该选项卡中有没有出现你的局域网工作组名称,如“work”等。然后单击“网络 ID”按钮,开始“网络标识向导”:单击“下一步”,选择“本机是商业网络的一部分,用它连接到其他工作着的计算机”;单击“下一步”,选择“公司使用没有域的网络”;单击“下一步”按钮,然后输入你的局域网的工作组名,如“work”,再次单击“下一步”按钮,最后单击“完成”按钮完成设置。 访问网上邻居时显示:" windows xp系统访问局域网时显示 "WORKGROUP无法访问.您可能没有权限使用网络资源.请与这台服务器的管理员联系以查明您是否有访问权限.此工作组的服务器的列表当前无法使用." 我用的是xp系统 我也遇到过这样的情况,当时也是着急得不轻,后来看到了以下的内容,照着一步步的,真的好了。内容不少,但是仍然希望你能耐住性子,仔细的看看自己属于那种情况,应该会有所收获。 局域网互访 - [ 网络 ] 我也是类似问题。 以前一个局域网10多台机子互访问。安了蕃茄花园v2.3,感觉主题漂亮,桌面壁纸自动换,很爽。访问局域网计算机没问题。可网内其它机子在工作组内能看到我的机子,但打不开。说什么“没有权限”。所有设置都作了如下改动(网上找的),依然无效,何故?但求高手指点。 “网上邻居”无法互访问题解决方法大全 “网上邻居”无法互访的问题实在是太常见了,无论在学校,网吧还是家里多台电脑联机,都有可能遇到网上邻居无法互访的故展。“网上邻居”无法访问的故障多种多样,总结起来基本上有下面的几个: 1,没有共享资源/共享服务未启用。 症状:电脑与电脑间可以Ping通,但无法访问共享资源,在“计算机管理”中查看“本地共享”后会弹出“没有启动服务器服务”的错误对话框。 解决:在控制面板-管理工具-服务中启动Server服务。并设置“启动类型”为“自动”。 2,IP设置有误。 症状:双机之间无法互Ping,连接用的双绞线经过测试没有问题,没有安装防火墙。 解决:检查两台电脑的IP是否处在同一网段,还有子掩码是否相同。 3,WINXP默认设置不正确。 症状:从WIN98/2000/2003上无法访问另一台WINXP的机器。 解决:在“控制面板”中的“用户帐户”启用Guest帐号。然后在运行中输入secpol.msc启动“本地安全策略”。 本地策略 -> 用户权利指派,打开“从网络访问此计算机”,添加Guest帐户 本地策略 -> 安全选项,禁止"帐户:使用空白密码的本地帐户只允许进行控制台登陆"。 另外有时还会遇到另外一种情况:访问XP的时候,登录对话框中的用户名是灰的,始终是Guest用户,不能输入别的用户帐号。 解决:本地策略 -> 安全选项 -> "网络访问:本地帐户的共享和安全模式",修改为"经典-本地用户以自己的身份验证" 4,系统漏洞修补软件修改了安全策略。 症状:在“网上邻居”中可以看到对方的计算机,但是访问共享时却提示“没有权限访问网络” 解决:在开始菜单运行中输入secpol.msc启动“本地安全策略”,本地策略 -> 用户权利分配,打开“拒绝从网络访问这台计算机”,删除guest用户。 5,防火墙规则。 症状:安装了防火墙(包括WINXP系统自带的防火墙),出现无法Ping通,或者是访问共享资源的时候提示"XXX无法访问"、"您可能没有权限使用网络资源"、"请与这台服务器的管理员联系以查明您是否有访问权限"、"找不到网络路径"等类似的提示。 解决:停止防火墙或者添加局域网的访问规则。 WINXP自带的防火墙:打开控制面板 -> 网络和Internet连接 -> Windows防火墙 -> 例外,勾选“文件和打印机共享”。 6,Win2000/XP与Win98互访 症状:Ping命令可以通过,但无法在“网上邻居”中实现互访。 解决:在WIN2000/XP系统中:控制面板 -> 管理工具 -> 计算机管理 -> 本地用户和组 -> 用户,在Guest帐户上点击鼠标右键,选择属性,在常规项里取消
好的,关于基于RBAC和ACL自定义开发一个权限框架的Java实现,我可以给您一些建议。RBAC指的是基于角色的访问控制,ACL指的是访问控制列表。这两种访问控制模型可以互相结合,实现更加精细的权限控制。以下是一些实现框架的建议: 1.定义用户、角色和资源 首先,需要定义用户、角色和资源这三个基本概念。在Java中,通常通过类来表达这些概念,例如User、Role和Resource类。其中,用户可以拥有多个角色,角色可以拥有多个资源。具体实现时可以使用集合来存储这些对象,并通过ID或名称进行关联。 2.实现RBAC模型 接下来,可以实现基于角色的访问控制模型。首先,需要定义角色的权限,例如对某个资源的访问权限。这可以通过一个Permissions类来实现。然后,可以给每个角色分配一组权限,表示该角色可以访问哪些资源。最后,在访问该资源时,需要根据用户所拥有的角色来检查其是否有访问权限。 3.实现ACL模型 除了RBAC模型,还可以实现ACL模型来进行更细粒度的权限控制。在ACL模型中,需要为每个资源定义一个访问控制列表,该列表包含可以访问该资源的用户和对应的权限。这可以通过一个AccessControlList类来实现。然后,在访问该资源时,需要在访问控制列表中查找该用户是否有相应的权限。 4.结合RBAC和ACL模型 RBAC和ACL模型可以结合使用,实现更为精细的访问控制。例如,可以使用RBAC模型来控制对资源的访问,使用ACL模型对资源的操作进行管理。具体实现时,需要为每个角色分配一组资源,然后给每个资源定义一个访问控制列表,列表中包含可以对该资源进行操作的用户和相应的权限。 总之,以上就是一个基于RBAC和ACL模型的自定义权限框架的实现建议。在具体实现时,可以根据实际需求进行调整和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值