SOA安全方面的最大隐患是什么?

标签:重磅推荐SOA技术前沿

访客:19095  发表于:2012-02-28 11:11:08

“安全”是当前信息技术应用领域热门话题之一,作为一项重要考量,特别是在商业应用领域,信息安全是业务运作的基本要求之一。企业级SOA在提供价值链上企业之间信息共享和业务流程自动化的同时,也对信息安全提出新的挑战。

毋庸讳言,“安全”是当前信息技术应用领域热门话题之一,无论是操作系统,还是应用软件,安全总是作为一项重要考量,特别是在商业应用领域,信息安全是业务运作的基本要求之一。企业级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。

当消息ABC和数字签名x到达接收方后,接收方能够用你的公有密钥456来验证你是消息的真正创建者以及消息在传输过程中没有改变。如果消息被改变了,那么惟一的数字签名将不再与密钥和用于创建密钥的原始消息相匹配。

为此,数字签名提供了个不可否认性,例如,数字签名可以证明你的供应商收到的电子订单确实是由你发出而且在传输中没有被篡改过。针对企业级SOA,专门制定了处理XML消息级别的XML数字签名标准。

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

评论(0)

您可以在评论框内@您的好友一起参与讨论!

<--script type="text/javascript">BAIDU_CLB_fillSlot("927898");