Java权限模型的缺陷 - 编程入门网
步流程。其次,它要检查用户在此屏幕上是否可以看到和使用文本框和按钮,这需要一些其他 UI 权限(称之为 AccountEditButtonUIPermission、AccountTextUIPermission 和 AmountTextUIPermission)。第三,此页面中的一些数据(比如账号)可能需要隐藏;不幸的是,Java 没有提供任何机制来满足该需求(请参阅 数据和功能安全的一致性 部分)。
考虑到大型应用程序(尤其是在金融和医疗行业)通常拥有数千个元素,这很快会使已定义权限的总数飙升至数百甚至数千个,使整个权限的集合难以管理。 资源模型 每个权限(无论它是标准的还是自定义的)都将其自己的资源解释逻辑整合到评估过程。这意味着 permission 类要操作不同表现形式的应用程序资源,使安全管理员无法创建一个图 3 所示类型的一致的应用程序管理图。 图 3. 资源层次结构 例如,考虑 Java 的标准 FilePermission 和 SocketPermission。前者操作资源字符串,表示文件和文件夹,使用 "/MyDir1/MyDir2/*" 格式,而后者使用主机、套接字和端口:"localhost:1024-"。通常情况下,这样的差别使任何管理应用程序都无法解析任意 permission 类在应用程序中使用的资源字符串。 Java权限模型的缺陷(3)时间:2011-07-06 developers.sun.com.cn / Denis Pilipchuk策略层次结构 在 Java 权限模型中,与资源模型密切相关的是策略层次结构的缺乏。策略层次结构意味着,根据定义良好的混合算法,策略(在应用程序资源树的较高层定义)也可适用于较低的节点。在这里的优势是,安全管理员可以在较高的层次定义访问控制策略,并且在他的命令下它们将可以适用于所有的应用程序/域。 考虑图 3 的层次结构,根据公司的政策,在某个时间段,管理员可以限制交易人访问交易应用程序,以及他们可以执行的操作,基于 permission 的模型不允许这种水平的控制,因为它没有资源层次结构的概念,并且它唯一的策略组合机制存在于创建一个可应用的所有策略的 grant entries 的结合。 策略元素 访问控制另一个重要的方面是安全策略自身的功能。Java 的策略是非常基础的——它在 grant entries 中包含权限集,由 Principals、code origin 或 code signer(结合到 CodeSource 中)分配。 此模型缺少以下非常重要的授权策略的功能。 配置 DENY(拒绝)策略的功能 Java 将缺少明显的 GRANT(授权)当作是隐式的 DENY(拒绝)。但是,假设缺少统一的资源模型,为了拒绝用户或组访问某个特定资源,安全管理员必须仔细检查每个该策略中的授权项,以验证它们均未授权访问。一般情况下,这是一个开放式的任务,每次策略修改的时候都必须重做。一种更容易的替代方案是在应用程序分层结构的顶部定义一个拒绝策略,并且指定拒绝结果优先。 配置基于属性的约束的功能 该策略自己指定某个特殊用户(某个组的成员或具有某种角色)或代码(某个特殊来源或签名的代码)对某个特殊资源拥有某种权限(例如,FilePermission("/app/user/US/MA/*", "read") 分配 read(读取)的权限给资源 "/app/user/US/MA/*")。这表示该文件权限将必须授权给所有要求访问该区域的基于 Massachusetts 的用户、组或角色,并且在他们不需要它时会进行删除(例如,如果他们搬到基于 New York 的办公室)。对于基于 California 的雇员来说也是如此。 是基于属性的约束(也称为“条件”)在应用授权策略时提供真正的灵活性。这些约束允许包含外部元数据来控制何时以及如何应用策略的决策。真正的灵活性来自于从什么地方以及如何提取该元数据:目录(比如 LDAP)、环境(例如,操作系统),或者与实际的请求一起向应用程序提供。 回到前面的例子,应该定义 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |