最火下载站首页
手机版
最火下载站
关注公众号
最火下载站

当前位置:首页 >资讯教程 >软件资讯 > 面向服务的体系结构(SOA)最大隐患是什么

面向服务的体系结构(SOA)最大隐患是什么

文章作者:网友投稿 发布时间:2009-03-16 来源:网络

“安全”是当前信息技术应用领域热门话题之一,作为一项重要考量,特别是在商业应用领域,信息安全是业务运作的基本要求之一。

  烈火建站学院(LieHuo.Net)技术观察 毋庸讳言,“安全”是当前信息技术应用领域热门话题之一,无论是操作系统,还是应用软件,安全总是作为一项重要考量,特别是在商业应用领域,信息安全是业务运作的基本要求之一。企业级SOA在提供价值链上企业之间信息共享和业务流程自动化的同时,也对信息安全提出新的挑战。

  基于企业级SOA更加容易实现跨越企业边界的业务系统自动化和信息共享,开放的数据访问和网络服务调用给商业运作带来便利,同时也更加容易受到攻击,如果没有提供良好的安全防护机制,开放网络服务无疑等于打开了潘多拉宝盒。

  网络服务最常见的安全隐患大概就是信息泄露和欺诈,如果你和你的合作伙伴之间交易的敏感信息被竞争对手获得,如果有人在网络上以你的名义向你的供应商发送订单,如果来自合作伙伴的发货请求被人篡改,等等,所有这些都是商业活动中不希望发生的。当然,也不用为此因噎废食,企业级SOA在一开始就应当考虑信息安全保证,在技术手段方面有各种有效的防范措施可选用。

  针对信息泄露的问题,防范措施是多层次的。首先,要部署安全的网络通讯基础架构,特别是通过Internet的通讯,例如:采用加密和认证技术,在公共网络上建立安全专用隧道的网络,也就是常说的VPN;其次,网络服务的访问大多数通过HTTP协议,HTTP上实现的安全套接字层 (SecurITy Socket Layer, SSL)也是成熟的安全通讯方式;还有,针对XML处理专门制定的消息级别的XML加密和处理标准,它把消息转换为一段经过加密的XML,消息仍然是XML格式的,但是使用加密算法将内容隐藏起。这样做的好处在于在获得了安全性的同时系统仍然基于开放标准编码XML消息,接收消息的系统可以把它当作XML来接收、解密和处理,而不依赖于定制或专有的消息传递标准。

  针对欺诈问题,通过身份认证和消息的数字签名来解决。身份认证保证授权的用户能够进行被授权的资源访问。企业级SOA中身份认证不局限于单一安全控制域,往往需要实现跨企业安全控制域的认证活动,安全断言标记语言(SecurITy Assertion Markup Language,SAML)标准提供了不同安全域之间认证的交互,通过一个标准的认证过程,多方可以达成一致,使用一组给定的标准来对一组指定的用户进行身份验证,参加这个过程的安全域组成一个身份联邦(Identity Federation)。

  联邦身份认证结果以断言方式加载在消息中,各个安全域都承认认证结果的合法性,所以安全断言也实现了单点登录,消息获得的安全断言,在整个身份联邦中都是有效的,无需重复认证。除此之外,企业级SOA还引入网络服务信赖(Web Service Trust)标准用以交换安全断言令牌,再加上扩展访问控制标记语言(eXtensible Access Control Markup Language, XACML)标准用以描述授权政策和规范授权决策处理,这些构成了完整的身份认证防线。

  消息的数字签名保证消息真正创建者身份的真实性以及消息在发送系统到接受系统之间传输时未被篡改。数字签名是一种消息级的安全措施,它结合了数字证书密钥和加密等安全方法。数字签名是对身份和消息内容进行惟一的处理得到的一个基于密钥的非常大的数。举一个简单的例子来说明,如果你拥有一对密钥(私有密钥123和公有密钥456),要发送消息ABC,对消息ABC的数字签名就是用密钥123对消息运行一个特殊的算法,得到唯一的一个数字x。#p#副标题#e#

  当消息ABC和数字签名x到达接收方后,接收方能够用你的公有密钥456来验证你是消息的真正创建者以及消息在传输过程中没有改变。如果消息被改变了,那么惟一的数字签名将不再与密钥和用于创建密钥的原始消息相匹配。为此,数字签名提供了个不可否认性,例如,数字签名可以证明你的供应商收到的电子订单确实是由你发出而且在传输中没有被篡改过。针对企业级SOA,专门制定了处理XML消息级别的XML数字签名标准。

  上述措施已经公布为标准的部分,SAP NetWeaver平台都能支持,用户可以根据企业应用实际需要综合运用上述手段为企业级SOA的信息安全提供保证。如同所有的安全问题一样,企业级SOA的信息安全保证,在依赖足够技术防护手段之外,最大的保证还是人的问题,由专业的人员制定合理的安全控制策略,配合全员安全意识提高,再辅以上面提到的种种技术手段运用,才能建立起企业级SOA信息安全保证的“万里长城”。

烈火建站学院(veryhuo.com)相关链接

 面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。

  这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。

  对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需(On demand)业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。

  虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于 SOA 的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。由于它考虑到了系统内的对象,所以虽然 SOA 是基于对象的,但是作为一个整体,它却不是面向对象的。不同之处在于接口本身。SOA 系统原型的一个典型例子是通用对象请求代理体系结构(Common Object Request Broker Architecture,CORBA),它已经出现很长时间了,其定义的概念与 SOA 相似。

  然而,现在的 SOA 已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言(eXtensible Markup Language,XML)为基础的。通过使用基于 XML 的语言(称为 Web 服务描述语言(Web Services Definition Language,WSDL))来描述接口,服务已经转到更动态且更灵活的接口系统中,非以前 CORBA 中的接口描述语言(Interface Definition Language,IDL)可比了。

  Web 服务并不是实现 SOA 的惟一方式。前面刚讲的 CORBA 是另一种方式,这样就有了面向消息的中间件(Message-Oriented Middleware)系统,比如 IBM 的 MQseries。但是为了建立体系结构模型,您所需要的并不只是服务描述。您需要定义整个应用程序如何在服务之间执行其工作流。您尤其需要找到业务的操作和业务中所使用的软件的操作之间的转换点。因此,SOA 应该能够将业务的商业流程与它们的技术流程联系起来,并且映射这两者之间的关系。例如,给供应商付款的操作是商业流程,而更新您的零件数据库,以包括进新供应的货物却是技术流程。因而,工作流还可以在 SOA 的设计中扮演重要的角色。

  此外,动态业务的工作流不仅可以包括部门之间的操作,甚至还可以包括与不为您控制的外部合作伙伴进行的操作。因此,为了提高效率,您需要定义应该如何得知服务之间的关系的策略,这种策略常常采用服务级协定和操作策略的形式。

  最后,所有这些都必须处于一个信任和可靠的环境之中,以同预期的一样根据约定的条款来执行流程。因此,安全、信任和可靠的消息传递应该在任何 SOA 中都起着重要的作用。#p#副标题#e#

  我可以用面向服务的体系结构做什么?

  对 SOA 的需要来源于需要使业务 IT 系统变得更加灵活,以适应业务中的改变。通过允许强定义的关系和依然灵活的特定实现,IT 系统既可以利用现有系统的功能,又可以准备在以后做一些改变来满足它们之间交互的需要。

  下面举一个具体的例子。一个服装零售组织拥有 500 家国际连锁店,它们常常需要更改设计来赶上时尚的潮流。这可能意味着不仅需要更改样式和颜色,甚至还可能需要更换布料、制造商和可交付的产品。如果零售商和制造商之间的系统不兼容,那么从一个供应商到另一个供应商的更换可能就是一个非常复杂的软件流程。通过利用 WSDL 接口在操作方面的灵活性,每个公司都可以将它们的现有系统保持现状,而仅仅匹配 WSDL 接口并制订新的服务级协定,这样就不必完全重构它们的软件系统了。这是业务的水平改变,也就是说,它们改变的是合作伙伴,而所有的业务操作基本上都保持不变。这里,业务接口可以作少许改变,而内部操作却不需要改变,之所以这样做,仅仅是为了能够与外部合作伙伴一起工作。

  另一种形式是内部改变,在这种改变中,零售组织现在决定它还将把连锁零售商店内的一些地方出租给专卖流行衣服的小商店,这可以看作是采用店中店(store-in-store)的业务模型。这里,虽然公司的大多数业务操作都保持不变,但是它们现在需要新的内部软件来处理这样的出租安排。尽管在内部软件系统可以承受全面的检修,但是它们需要在这样做的同时不会对与现有的供应商系统的交互产生大的影响。在这种情况下,SOA 模型保持原封不动,而内部实现却发生了变化。虽然可以将新的方面添加到 SOA 模型中来加入新的出租安排的职责,但是正常的零售管理系统继续如往常一样。

  为了延续内部改变的观念,IT 经理可能会发现,软件的新配置还可以以另外的一种方式加以使用,比如出租粘贴海报的地方以供广告之用。这里,新的业务提议是通过在新的设计中重用灵活的 SOA 模型得出的。这是来自 SOA 模型的新成果,并且还是一个新的机会,而这样的新机会在以前可能是不会有的。

  垂直改变也是可能的,在这种改变中,零售商从销售他们自己的服装完全转变到专门通过店中店模型出租地方。如果垂直改变完全从最底层开始的话,就会带来 SOA 模型结构的显著改变,与之一起改变的还可能有新的系统、软件、流程以及关系。在这种情况下,SOA 模型的好处是它从业务操作和流程的角度考虑问题而不是从应用程序和程序的角度考虑问题,这使得业务管理可以根据业务的操作清楚地确定什么需要添加、修改或删除。然后可以将软件系统构造为适合业务处理的方式,而不是在许多现有的软件平台上常常看到的其他方式。

  正如您可以看到的,在这里,改变和 SOA 系统适应改变的能力是最重要的部分。对于开发人员来说,这样的改变无论是在他们工作的范围之内还是在他们工作的范围之外都有可能发生,这取决于是否有改变需要知道接口是如何定义的以及它们相互之间如何进行交互。与开发人员不同的是,架构师的作用就是引起对 SOA 模型大的改变。这种分工,就是让开发人员集中精力于创建作为服务定义的功能单元,而让架构师和建模人员集中精力于如何将这些单元适当地组织在一起,它已经有十多年的历史了,通常用统一建模语言(Universal Modeling Language,UML),并且描述成模型驱动的体系结构(Model-Driven Architecture,MDA)。

  对于面向同步和异步应用的,基于请求/响应模式的分布式计算来说,SOA是一场革命。一个应用程序的业务逻辑(business logic)或某些单独的功能被模块化并作为服务呈现给消费者或客户端。这些服务的关键是他们的松耦合特性。例如,服务的接口和实现相独立。应用开发人员或者系统集成者可以通过组合一个或多个服务来构建应用,而无须理解服务的底层实现。举例来说,一个服务可以用。NET或J2EE来实现,而使用该服务的应用程序可以在不同的平台之上,使用的语言也可以不同。

  SOA有以下特性

  SOA服务具有平台独立的自我描述XML文档。Web服务描述语言(WSDL, Web Services Description Language)是用于描述服务的标准语言。

  SOA 服务用消息进行通信,该消息通常使用XML Schema来定义(也叫做XSD, XML Schema Definition)。消费者和提供者或消费者和服务之间的通信多见于不知道提供者的环境中。服务间的通讯也可以看作企业内部处理的关键商业文档。

  在一个企业内部,SOA服务通过一个扮演目录列表(directory listing)角色的登记处(Registry)来进行维护。应用程序在登记处(Registry)寻找并调用某项服务。统一描述,定义和集成(UDDI, Universal Description, Definition, and Integration)是服务登记的标准。

  每项SOA服务都有一个与之相关的服务品质(QoS, quality of service)。QoS的一些关键元素有安全需求(例如认证和授权),可靠通信(译注:可靠消息是指,确保消息“仅且仅仅”发送一次,从而过滤重复信息。),以及谁能调用服务的策略。#p#副标题#e#

  为什么选择SOA?

  不同种类的操作系统,应用软件,系统软件和应用基础结构(application infrastructure)相互交织,这便是IT企业的现状。一些现存的应用程序被用来处理当前的业务流程(business processes),因此从头建立一个新的基础环境是不可能的。企业应该能对业务的变化做出快速的反应,利用对现有的应用程序和应用基础结构(application infrastructure)的投资来解决新的业务需求,为客户,商业伙伴以及供应商提供新的互动渠道,并呈现一个可以支持有机业务(organic business)的构架。SOA凭借其松耦合的特性,使得企业可以按照模块化的方式来添加新服务或更新现有服务,以解决新的业务需要,提供选择从而可以通过不同的渠道提供服务,并可以把企业现有的或已有的应用作为服务, 从而保护了现有的IT基础建设投资。

  如图1的例子所示,一个使用SOA的企业,可以使用一组现有的应用来创建一个供应链复合应用(supply chain composite application),这些现有的应用通过标准接口来提供功能。

  服务架构

  服务架构

  为了实现SOA,企业需要一个服务架构,图2显示了一个例子:

  图2

  在图2中, 服务消费者(service consumer)可以通过发送消息来调用服务。这些消息由一个服务总线(service bus)转换后发送给适当的服务实现。这种服务架构可以提供一个业务规则引擎(business rules engine),该引擎容许业务规则被合并在一个服务里或多个服务里。这种架构也提供了一个服务管理基础(service management infrastructure),用来管理服务,类似审核,列表(billing),日志等功能。此外,该架构给企业提供了灵活的业务流程,更好地处理控制请求(regulatory requirement),例如Sarbanes Oxley(SOX),并且可以在不影响其他服务的情况下更改某项服务。

  SOA基础结构

  要运行,管理SOA应用程序,企业需要SOA基础,这是SOA平台的一个部分。SOA基础必须支持所有的相关标准,和需要的运行时容器。图3所示的是一个典型的SOA基础结构。

  SOAP, WSDL, UDDI

  WSDL,UDDI和SOAP是SOA基础的基础部件。WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,作为传输层,用来在消费者和服务提供者之间传送消息。SOAP是Web服务的默认机制,其他的技术为可以服务实现其他类型的绑定。一个消费者可以在UDDI注册表(registry)查找服务,取得服务的WSDL描述,然后通过SOAP来调用服务。

  WS-I Basic Profile

  WS-I Basic Profile,由Web服务互用性组织(Web Services Interoperability Organization)提供,是SOA服务测试与互用性所需要的核心构件。服务提供者可以使用Basic Profile测试程序来测试服务在不同平台和技术上的互用性。

  J2EE 和 .Net

  尽管J2EE和。NET平台是开发SOA应用程序常用的平台,但SOA不仅限于此。像J2EE这类平台,不仅为开发者自然而然地参与到SOA中来提供了一个平台,还通过他们内在的特性,将可扩展性,可靠性,可用性以及性能引入了SOA世界。新的规范,例如 JAXB(Java API for XML Binding),用于将XML文档定位到Java类;JAXR(Java API for XML Registry)用来规范对UDDI注册表(registry)的操作;XML-RPC(Java API for XML-based Remote Procedure Call)在J2EE1.4中用来调用远程服务,这使得开发和部署可移植于标准J2EE容器的Web服务变得容易,与此同时,实现了跨平台(如。NET)的服务互用。

  服务品质

  在企业中,关键任务系统(mission-critical system,译注:关键任务系统是指如果一个系统的可靠性对于一个组织是至关重要的,那么该系统就是该企业的关键任务系统。比如,电话系统对于一个电话促销企业来说就是关键任务系统,而文字处理系统就不那么关键了。)用来解决高级需求,例如安全性,可靠性,事物。当一个企业开始采用服务架构作为工具来进行开发和部署应用的时候,基本的Web服务规范,像WSDL,SOAP,以及UDDI就不能满足这些高级需求。正如前面所提到的,这些需求也称作服务品质(QoS,quality of services)。与QoS相关的众多规范已经由一些标准化组织(standards bodies)提出,像W3C(World Wide Web Consortium)和OASIS(the Organization for the Advancement of Structured Information Standards)。下面的部分将会讨论一些QoS服务和相关标准。

  安全

  Web服务安全规范用来保证消息的安全性。该规范主要包括认证交换, 消息完整性和消息保密。该规范吸引人的地方在于它借助现有的安全标准,例如,SAML(as Security Assertion Markup Language)来实现web服务消息的安全。OASIS正致力于Web服务安全规范的制定。

  可靠

  在典型的SOA 环境中,服务消费者和服务提供者之间会有几种不同的文档在进行交换。具有诸如“仅且仅仅传送一次”( once-and-only-once delivery),“最多传送一次”( at-most-once delivery),“重复消息过滤”(duplicate message elimination),“保证消息传送”(guaranteed message delivery)等特性消息的发送和确认,在关键任务系统(mission-critical systems)中变得十分重要。WS-Reliability 和 WS-ReliableMessaging是两个用来解决此类问题的标准。这些标准现在都由OASIS负责。

  策略

  服务提供者有时候会要求服务消费者与某种策略通信。比如,服务提供商可能会要求消费者提供Kerberos安全标示,才能取得某项服务。这些要求被定义为策略断言(policy assertions)。一项策略可能会包含多个断言。WS-Policy用来标准化服务消费者和服务提供者之间的策略通信。

  控制

  当企业着手于服务架构时,服务可以用来整合数据仓库(silos of data),应用程序,以及组件。整合应用意味着例如异步通信,并行处理,数据转换,以及校正等进程请求必须被标准化。在SOA中,进程是使用一组离散的服务创建的。BPEL4WS 或者 WSBPEL(Web Service Business Process Execution Language)是用来控制这些服务的语言。WSBPEL目前也由OASIS负责。#p#副标题#e#

  管理

  随着企业服务的增长,所使用的服务和业务进程的数量也随之增加,一个用来让系统管理员管理所有运行在多相环境下的服务的管理系统就显得尤为重要。WSDM(Web Services for Distributed Management)规定了任何根据WSDM实现的服务都可以由一个WSDM适应(WSDM-compliant)的管理方案来管理。

  其它的qos特性,比如合作方之间的沟通和通讯,多个服务之间的事务处理,都在WS-Coordination 和 WS-Transaction 标准中描述, 这些都是OASIS 的工作。

  SOA 不是Web服务

  在理解SOA和Web服务的关系上,经常发生混淆。根据2003年4月的Gartner报道,Yefim V. Natis就这个问题是这样解释的:“Web服务是技术规范,而SOA是设计原则。特别是Web服务中的WSDL,是一个SOA配套的接口定义标准:这是Web服务和SOA的根本联系。”从本质上来说,SOA是一种架构模式,而Web服务是利用一组标准实现的服务。Web服务是实现SOA的方式之一。用Web服务来实现SOA的好处是你可以实现一个中立平台,来获得服务,而且随着越来越多的软件商支持越来越多的Web服务规范,你会取得更好的通用性。

  SOA的优势

  SOA的概念并非什么新东西,SOA不同于现有的分布式技术之处在于大多数软件商接受它并有可以实现SOA的平台或应用程序。SOA伴随着无处不在的标准,为企业的现有资产或投资带来了更好的重用性。SOA能够在最新的和现有的应用之上创建应用;SOA能够使客户或服务消费者免予服务实现的改变所带来的影响;SOA能够升级单个服务或服务消费者而无需重写整个应用,也无需保留已经不再适用于新需求的现有系统。总而言之,SOA以借助现有的应用来组合产生新服务的敏捷方式,提供给企业更好的灵活性来构建应用程序和业务流程。

  SOA发展出来的效益

  A. 平衡最初的旧系统投资(Leverage initial investment):

  组织过去所投资的系统、软硬体,如果能再利用等於赋予其新的价值,这也替组织降低成本并增加竞争力。

  B. 基础建设的便利性(Infrastructure Commoditization):

  让所有的应用程式能相互沟通(互通性)。

  C. 快速的接近市场(Faster time-to-market):

  服务的重复使用(再利用),来缩短过去的组织流程,更快速的提供服务来接近市场。

  D. 减少支出(Reduce Cost):

  服务的重复使用,可降低开发成本。因为开发新系统的成本,大部份比更新旧有系统来的花费大。

  E. 减低风险(Risk mitigation):

  开发新系统的风险远大於更新旧系统。

  F. 持续改善商业流程的循环(Continuous improvement cycle for business process)

  G. 中心流程处理(Process-centric processing)

  实施SOA可能带来的主要优势有5点:

  一,SOA可通过互联网服务器发布,从而突破企业内网的限制,实现与供应链上下游伙伴业务的紧密结合。通过SOA架构,企业可以与其业务伙伴直接建立新渠道,建立新伙伴的成本得以降低。

  二,SOA与平台无关,减少了业务应用实现的限制。要将企业的业务伙伴整合到企业的“大”业务系统中,对其业务伙伴具体采用什么技术没有限制。

  三, SOA具有低耦合性特点,增加和减少业务伙伴对整个业务系统的影响较低。在企业与各业务伙伴关系不断发生变化的情况下,节省的费用会越来越多。

  四, SOA具有可按模块分阶段进行实施的优势。可以成功一步再做下一步,将实施对企业的冲击减少到最小。

  五, SOA的实施可能并不具有成本显著性。这要分三种情况加以讨论:

   当企业从零开始构建业务系统时,采用SOA架构与不采用SOA架构成本可看做是相同的。

   当企业业务发展或发生企业重组等变化而原有系统不能满足需要,而需要重构业务系统时,采用SOA架构与不采用SOA架构成本可看做是相同的。

   当企业业务发生缓慢变化并可预见到将来需要重构业务系统时,由于可以按模块分阶段逐步实施SOA以适应变化的需要,这样企业不需一下投入一大笔经费进行系统改造,而是根据企业业务发展情况和资金情况逐步投入,缓解了信息投入的压力。

  另指 半导体光放大器 (Semiconductor Optical Amplifer)

  一般有行波放大和谐振放大两种,行波SOA的材料和一般半导体激光器相同,光纤通讯领域多为InP材料,放大波段1550nm附近,毅力简单的理解为一个没有反馈腔的激光器,一般端面反射率小于千分之五。

上一篇: 提供卸载工具 Office2007SP2功能抢鲜看

下一篇: 最新版IE 8、Chrome、Firefox浏览器大PK

共有0条评论网友评论