SOA和性能、安全

来源:百度文库 编辑:神马文学网 时间:2024/04/28 20:30:46
性能

以上图的影响性能的关键步骤在于:
l 通过ESB发送请求/应答
n 不可靠的万国和协议
l 序列化/反序列化请求/应答
n 通常会是XML,但是XML太啰嗦,在核心数据上,其大小会按4到20的因子增长。
n 使用中间协议也可以,当然这要看它转换的时间
n 增加一些安全检查也会影响
l 处理请求
n 服务运行缓慢的主要原因在于,服务的实现运行耗时。这通常得看看一个服务调用通常得响应时间,然后考虑这个响应时间的伸缩性有多好。
n 如果服务供应者资源有限,或存在瓶颈,同时处理对个服务调用就可能导致严重的性能障碍。因此,一份契约应该包括一个服务等级协议(SLA),他不仅指明平均响应时间,还要指明在一定时间内能响应的调用的数量(时间服务系数,TSF)
服务调用的开销
如果调用多个服务的开销比较大,可以考虑将多个服务合并。
可重用性
如果调用多个细粒度的服务开销比一个粗粒度服务高,那么出于性能方面的考虑,可能会导致粗粒度的服务;
如果,处理过多的数据的代价过高,性能方面的考虑会导致细粒度的服务。
安全
认证(检验身份)、授权、机密性、完整性、可用性、记账(保持消费记录)、审计,在谈及安全的上下文环境中,“AAA”通常用来指认证、授权和记账。
处理安全需求
处理安全不是什么新鲜事物,SOA使用的方法和分布式系统使用的典型方法一样:
l 对认证和授权,通常你需要用户ID这个概念和密码(或者Kerberos、证书、硬件令牌)。用户可以被授权角色,角色和权限相关
l 就机密性和完整性而言,考虑加密和数字签名
互操作性和安全
SOA的一个关键概念是高互操作性。遵循EAI的概念,对其他系统的连接应该简单易行。
该方法的结果是,靠使用不同通信渠道和不同协议所形成的“自然”防火墙不存在了。所以,为了保护敏感数据,我们不得不限制消费者调用所有服务和看到所有结果的能力。
分布式过程和多层抽象
SOA导致的一个最严重的问题是,产生了许多不同的抽象层。当每个服务从下层抽象出业务功能时,他也必须从下层应用中同时抽象出用户身份的上下文环境。
从最初对业务流程的请求,到最后处理这个请求的系统,中间有长长地一段路。这带来了两个重要的问题:
1.不清楚哪个系统在对用户进行认证和授权
2.机密性不能只在一个连接上得到保证,更要在中间涉及多个节点的多个连接上
多客户端能力和安全
一个分布式系统通常有多客户端能力。比如一个数据处理中心管理者几家不同的银行数据。可能有些数据得保密,有些数据又能让大家访问。因此,当涉及到多客户端能力时,可能需要执行运行时安全检查。也就是说,针对特定系统,静态地允许或拒绝特定服务通常来说是不够的。
实践SOA安全
在实践中,我们应该考虑一下几点:
l 基础设施没有提供足够的安全性
n 不要假设基础设施处理安全的方式已经很好,即使有某些支持,也必须考虑是否覆盖了安全的所有方面(认证(检验身份)、授权、机密性、完整性、可用性、记账(保持消费记录)、审计)
l 处理机密性和完整性
n 传输层安全
在这里,可以使用基础设施的底层协议来引入安全性。比如,SSL加密Web Srvice调用
虽然这个方法比较容易,代价也不高,但是他只对数据“从系统到系统”)(点对点)传输这种情况有用。不是端对端,也就是说,在节点内部,数据仍然可读
n 消息层安全
在传送的消息内部引入安全。也就是说对消息加密,签名
消息层通常更安全,因为他带来端到端的安全性。传输层仅仅是点对点安全性。
l 作为服务的安全
处理SOA安全性的最好办法是将安全作为服务提供。
l 安全性能和状态
n 安全又成本,加密,解密,验证完整性。
n 安全影响了性能,同样,也会对服务的状态造成影响。业务的观点来看,可以说服务时无状态的。然而,对每一个服务调用来说,必须关注调用者是否允许执行调用和/或看到结果找到答案。
XML和Web Srvices的安全
WEB Services安全标准:WS-Security、WS-Policy、WS-Trust...
基于XML的通用安全标准:SAML、XACML.....
XML安全标准:XML Encryption,XML Signature
通用安全标准:Kerberos、PKI、X.509、SSL
安全算法:AES、DES、RSA
SAML:
由OASIS维护的安全断言标记语言(SAML)。SAML是基于XML的语言,负责在不同系统间管理和交换安全信息。他使一方能够就一个主题做出安全信息断言。
XML和Web Services标准:
下面的这些并没有引入新的安全技术或过程,而是定义了再通过Web Srvices,用XML文件交换数据时,如何应用现有的技术和过程。
对XML来说:
XML签名:允许XML文档被签名,保证其数据的完整性(和真实性)
XML加密:允许XML文档被加密。
XML密钥管理:针对XML签名标准支持密钥管理
对Web Services来说:(.NET 下实现Web Services安全的平台)
WS-安全(WS-Security):针对Web Services(SOAP)的授权、完整性和私密性,定义了如何应用不同的安全技术。它描述了一个标准的方法,用于将类似于令牌、加密、签名、SAML、Kerberos等安全信息嵌入SOAP头部的标准方法
WS-安全政策(WS-SecurityPolicy):
使你能够找出一个服务供应者要求和/或支持哪个安全标准。一个供应者可以再WSDL/UDDI中,指定接受X.509和Kberos协议。这些都是Web Services的一部分。
WS-信任(WS-Trust):使你能发布、更新和检验安全令牌
WS-安全对话(WS-SecureConversation):在对个消息交换间建立一个共享的安全上下文环境。
WS-联盟(WS-Federation):定义了若干机制,通过允许身份、属性和认证的托拉斯,并且在这些托拉斯之间进行中转,使得在不同的安全领域进行集成和建立联盟成为可能。
信息资源安全总论
XML和Web Services攻击
在所有分布式系统中都存在风险,比如洪水(Dos)攻击。但是,针对XML和Web Services还可能有其他类型的攻击。
XML炸弹
XMl是一种原始递归语言,在某些情况下,XML解析器甚至能把非常小的XML文档扩展为巨大的文档。比如下面的例子:






]>
&a;
被引用的实体a扩展成了许多其他的实体。这导致了3^3,在浏览器中看起来可能这样:
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
当试图解析扩展为包含10000000000个foo的序列,那可能就崩溃了。这一类无法由防火墙拒绝,可以限制XML解析器或者在解析之前就发现这类情形。
XPath注入