快速业务通道

Java权限模型的缺陷 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
一个单独的基于属性的策略(适用于公司内的所有用户和地点),而不是将文件权限授权给多个用户组:

GRANT {User, Resource, "read"} IF (User.location IN Resource.location)

将责任返回给调用者的功能

应用程序经常不足以知道访问是否得到授权或被拒绝了,因为它需要知道与决策相关的其他信息。例如,策略可能指定一个广泛的 GRANT,但是对某些领域进行一些约束,这需要被返回给调用应用程序(也称为 Policy Enforcement Point 或 PEP)。这样的返回数据叫做责任,并且提供了一个重要的扩展机制,用于扩展应用程序功能,而无需核心安全逻辑。Java 安全策略完全不提供这样的功能。

控制

控制 (governance) 任务的目的是为进行审核回答“谁可以在什么条件下做什么”的问题。在通常情况下这个问题很难解决,但是 Java 的基于权限的模型使其几乎无法进行任何大型部署。由于权限自身拥有解释资源的任务,外部工具需要考虑任意应用程序所有可能使用的权限,以便了解哪些应用程序资源被保护了,以及如何被保护的。另外,这样的工具将必须随着应用程序的每个版本更新。很明显,这使维护变成了噩梦,并且不能为此部署一个通用的审计工具。

数据和功能安全的一致性

最后但同样重要的是,Java 的安全模型都是关于功能安全的;例如,它被设计为回答有关对特定代码功能进行访问的问题。但是,在很多应用程序中,同样重要的是提供数据的一致视图,根据用户的权利编写。有关在何处以及如何应用此功能的例子,请参阅 权限扩散。

一种替代方案(Java 中可使用)通常要求要么另外开发一个机制(例如,通过利用数据库查询),要么显示整个列表,然后在用户试图访问特定记录时执行访问控制。第一种替代方案(拥有两个模型)完全无法管理,并且会导致不一致。第二个(只在访问时执行检查)暴露了太多信息,并且当向用户显示了记录,但是用户无法访问它们的时候,会导致糟糕的可用性。

Java权限模型的缺陷(4)

时间:2011-07-06 developers.sun.com.cn / Denis Pilipchuk

运行时功能

运行时体验展示了另一半问题,由于下面解释的原因,Java 的模型也存在不足。

不必要的堆栈审核

前面已经多次指出,Java 的模型是用于基于代码的安全。相应地,每次请求 checkPermission(Permission) 时,会触发一个 堆栈审核,以确定堆栈上的所有代码框架是否具有所需的权限。

但是,大型与程序的安全策略不关心代码,而关心用户检查。实际上,这意味着每次对检查用户权限的调用会变成不必要的堆栈审核。此外,只要该策略处理代码(称之为 Policy Decision Point,或 PDP)和应用程序处于同一过程,这就行得通。由于 AccessController 的硬编码的评估逻辑(另请参阅 评估逻辑的可扩展性),任何外部化 PDP 的企图都会导致对每个 checkPermission(Permission) 调用的多个远程调用,使整个系统不可用。

评估逻辑的可扩展性

Java 的安全模型的逻辑智能以一种方式更改:通过替换 安全策略提供程序。这种限制使得无法自定义堆栈评估算法,在 AccessController 中硬编码,使远程调用更高效,或者优化基于用户的访问控制检查。

批量授权

当需要对单个组件的多个元素进行授权时,通过将多个请求包装到一个对 PDP 的调用中,批量授权确实可以帮助提高应用程序的性能。例如,查看 管理功能 部分中的网页图片。该页面必须进行多个请求,以验证页面中所有要求的元素。但是,如果把他们打包在一起,只进行一个调用,那效率就会高得多。不幸的是,Java 对此也不提供任何支持。

与批量授权类似的还有 querying access(查询访问)的问题,这表示应用程序询问“使用给定的操作和属性,在某个资源节点下某个特殊用户可以访问哪些资源?”根

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号