级别: 初级 Judith M. Myerson (jmyerson@bellatlantic.net), 系统架构师和工程师
2005 年 1 月 01 日 在本系列教程的第 4 部分,Judith M. Myerson 解释了企业如何将它们的安全管理集中到统一位置,以便对面向服务的架构中的多个 Web 服务以及相关的其它服务和应用程序的访问控制列表进行更好的管理,她同时还说明了为什么对多个 Web 服务设置 ACL 很重要。在异构的 SOA 中,安全开放、松耦合的 Web 服务系统需要一个更为复杂的方法来解决多个管理员的问题,而不是采用紧密耦合的非 Web 服务和 EAI 应用程序的传统方法。EAI 应用程序的安全协议相对于 Web 服务要成熟的多。
第 2 代 Web 服务范例中的 3R
在讨论什么是访问控制列表(ACL)、怎样设置访问控制列表、如何控制它的内容和条目之前,让我们简单看一下第二代 Web 服务范例。本系列的第 2 部分描述了范例中每个应用层之间的双向交互过程。
文章介绍的比较深入,演示了范例中的每一个参与者如何来读、写或执行一个进程。如下
图 1 是 第 2 代 Web 服务范例的一个说明。
图 1. 第 2 代服务范例
范例说明了应用程序提供者如何请求来启动应用程序代理的
写进程
,这个请求要在代理的数据库、目录或注册中心如 IBM ® 的统一描述、发现和注册中心(UDDI)来寻找一个 Web 服务。如果代理成功地
执行了请求并发现了 Web 服务,它
发出一个消息给客户来确认发现是成功的。在接收到消息后,客户
阅读它,如果代理不能够找到 Web 服务,它发送一个消息给客户通知查找行为失败。
在
阅读了代理关于成功发现的消息后,客户
发送一个消息给提供者来说明它希望绑定 Web 服务。提供者
阅读消息,然后决定是否需要其它 Web 服务来共同完成启动 Web 应用程序这一任务。如果是的话,提供者将与客户就下一步客户应该
执行 哪个动作进行通信。
几乎同时,这一提供者向代理
发出一个请求来向 IBM 的 UDDI 注册中心发布一个 Web 服务。如果代理成功地
完成了请求,提供者
阅读来自代理地通知来确认 Web 服务地成功发布。否则,代理发送一个发布行为失败的消息。
ACL:访问和缺省
尽管你可以对范例中的每一个参与者设置文件许可权限,但读(r)、写(W)、执行(x)的许可模型在一个由 SOA 的 Web 服务、非 Web 服务和企业应用集成(EAI)应用程序组成的异构的环境下是不够的。为了克服上述模型的限制,可以采用 ACL。作为 Web 服务的特色之一,它在发布之前必须经过测试,正如本系列
第 2 部分所述。
那么什么是 ACL? 它源于 Linux 和 Unix 相关的系统中的 2 个概念:访问和缺省,它们都是基于 2003 版的 IEEE 标准 1003.1 -- 2001 POSIX ® (参见
参考文献)。对于访问和缺省,下面 3 种用户类型中的每一个都有相同的权限集:
可以设置时间限制来定义哪一天或哪一小时授权用户和组能够访问特定的文件和目录。
利用访问 ACL,在哪些用户和组可以读、写或执行文件和目录这一问题上管理员可以有更大的灵活性并且能够实现更好的控制。聪明的(且被授权)的开发人员应该以 root 的身份登录以编译、修改、存储和恢复 ACL 。
缺省 ACL 只应用于目录。ACL 定义了一个新建的文件或目录的从它的父目录上继承下来的许可权限。在这种情况下,缺省指的是低层次的局部从高层次的目录集成许可权限。这意味着,当你在一个已经有缺省 ACL 的目录内部新建一个目录,新的目录将继承缺省 ACL 作为它的访问 ACL 和缺省 ACL 。
在一个异构的 SOA 中,开发人员与管理员相协调,可以通过改变 ACL 中用户和组的权限许可来测试 Web 服务。在公开发布 Web 服务之前,开发人员可以定义或推荐在产品环境中如何改变许可权限来运行 Web 服务。每一个用户或组许可权限都是一个 ACL 条目。
ACL 条目
对于每个 Web 服务,你必须考虑文件系统所能够容纳的 ACL 条目的最大数量。例如,IBM 的 JFS 可以支持超过 8000 个条目,但 EXT2 和 EXT3 却只能限制为 32 个条目,XFS 可以支持 25 个条目。除了基本的用户和组条目,ACL 还包含以下扩展条目:
图 2 是一个非常简单的 ACL 的示例。
图 2. 掩盖条目
如图所示,第二和第三行是掩盖条目。第一个掩盖条目是一个带有不同许可集的命名用户条目。
带有多个 ACL 条目的系统性能将会降低,因此将会影响到运行时 SLA 的效率保证。为了减小性能下降的风险,您不应当以 root、boot、usr、甚至交换分区来使用它们。你还应当在一个非商业应用的环境中来测试系统性能来确保在用户和组许可条目变化的情况下 ACL 能够正常执行。
你必须保证每个参与者都被授权以进行双向通信。你决不能够允许一个未经授权的用户成功地访问一个只有管理员授权后才能使用的控件,甚至发出一个消息表明进程是成功的但事实却并非如此。你必须考虑到多个用户的 ACL 对于一个 Web 服务组件或对于相同或相似的多个 Web 服务组件将具有不同的权限许可。
时刻牢记多个 Web 服务很少自己执行,经常需要 SOA 中的高层服务来协调多个服务的执行。EAI 应用程序有时可以运行来作为 Web 服务(和非 Web 服务)的协调组织程序,因此,在 ACL 层次表的根部需要一个协调程序。
ACL 场景
假设 ACL 有两个客户。每一个都有一组权限来向代理发送请求来查找 Web 服务并阅读来自代理的查找状态的消息。客户 A 允许发送请求来查找特定门类的 Web 服务(如旅游),客户 B 被允许查找 2 或 3 个门类的 Web 服务(如教育、旅馆预定和汽车出租),但是不包含指定给客户 A 的门类。客户 A 和 B 都被允许阅读来自代理的关于 Web 服务查找行为的状态的消息。
假设在同一个 ACL 中,你有 2 个不同 UDDI 。代理 A 允许发送某一门类的标准消息(例如,成功或失败的查找行为的简要描述)给客户 A。代理 B 允许发布一个不同门类的数字签名的消息(例如,一个冗长的描述)给客户 B。
同样的,提供者 A 允许发送请求给代理 A 来发布一个特定门类的 Web 服务,发送请求给代理 B 来发布另外一个特定门类的 Web 服务。提供者 A 以一种方式与客户 A 进行通信,以另外一种方式与客户 B 进行通信,这取决与在接收到绑定到 Web 服务的请求后提供者应该执行什么行为。
多个基于 ACL 的 Web 服务
然而,基于 ACL 的 Web 服务是巨大的 SOA 体系中的一小部分。如
图 3 所示,Web 服务可以与其它 Web 服务(用小三角表示)、非 Web 服务(用小圆圈表示)和 EAI 应用程序(用小方块表示)进行交互。正如你所看到的,小三角、方块和圆圈具有不同的颜色。每一种颜色具有不同的意义。
例如,一个小的橙色三角指向一个深颜色边界的橙色三角说明发起 Web 服务是一个短暂运行的 Web 服务,它与一个长期运行的 目标服务或应用程序进行交互,它还可以指向一个 EAI 应用程序,这个应用程序反过来又可以与其它非 Web 服务或其它应用程序进行交互。仅沿图中箭头所示即可得到一个简单的交互场景。
图 3. SOA 架构中基于 ACL 的服务和应用程序
运行时的性能
对于每个 Web 服务,在保证正常运行时性能的前提下 SLA 应该规定 ACL 条目的最大数量。运行时的性能与
利用 SLA 保证集成 Web 服务到 EAI" 中讨论的中断阀值相关。此最大数目随 Web 服务的不同而不同,它与 ACL 中授权给用户和组的许可类型有关。如
表 1 所示,这种变化应该在 SLA 中体现出来。
表 1. SLA 规范示例
|
最大条目数目
|
运行时效率
|
中断阀值
| | 30 | 96.1% | 97.3% | | 28 | 96.5% | 97.7% | | 25 | 98.5% | 97.9% |
为在最小化条目数目的同时最大化 ACL 的作用,Web 服务和 SOA 中的其它对象都要经过防火墙,管理员应该灵活的管理出入防火墙的通信流,且避免对 SLA 的正常运行产生负面影响。
结束语
开发人员应该重视在异构的 SOA 中如何设置、修改和控制多个 Web 服务的 ACL 以获得 SLA 中可接受的运行时的性能。它们包括在与中断阀值相关的运行时性能的 SLA 保证的前提下定义 ACL 条目的最大数量的问题。系统性能越高,SLA 对带有 ACL 的多个 Web 服务的保护就越好。
参考资料
关于作者
对本文的评价
|