在过去的三年中人们开发出了许多关于信息安全(Information Security)的新标准其中最为人们所认可的是Web Services安全性(Web Services SecurityWSS)安全性断言标记语言(Security Assertion Markup LanguageSAML)和可扩展访问控制标记语言(Extensible Access Control Markup LanguageXACML)本文会简单介绍这三者包括它们是如何开发出来的为什么需要它们如何使用它们它们之间以及它们与现有各种安全性标准之间的关联以后的文章会对这些内容进行更详细的介绍
简介
WSSSAML和XACML之间有许多共性或许最明显的就是它们都使用XML表示信息其次是因为这三种可用的安全服务都已经在计算机系统中应用多年了为了更加适用于大型分布式环境如互联网它们都具有一些特定的功能此外三者都参考并结合了现有的安全性标准并尽量减少对已有功能的重复
两个主要原因促使三者都采用了XML技术第一XML使它们便于扩展以便可以以一种原有格式无法实现的方式来满足某种特殊需求第二XML支持采用大量可用的软件工具进行处理的实现对于WSS来说还有一个原因即WSS被设计为支持与SOAP的语法和处理模型进行紧密集成而SOAP是用XML定义的
SAML
授权和审计跟蹤是常见的安全服务以前大多数系统设计时都假设做出访问控制决定所必需的所有信息都由单个系统来处理并且所有要记录的数据都放在审计跟蹤中但是大规模分布式系统通常是由多个组织使用各种产品建立的这意味着用户可能要由不同的验证方使用不同的方法进行验证此外不同的验证方还要保存有关用户特性和属性的不同信息集中管理所有这些能力和信息是不现实的SAML提供了标准格式来表示身份验证用户属性以及请求和接受该标准的协议这被称为身份联盟(Identity Federation)
在OASIS的最初开发阶段SAML只指定了该身份信息的生产者与消费者之间的通信SAML定义了如何创建有关用户属性和身份验证事件的断言以及如何以一种灵活而可扩展(以便满足其它需求)的方式获得这些信息SAML还详细定义了一些常见场景(如Web单点登录)来确保互操作性
Liberty Alliance Project和Internet Shiboleth group进一步地增强和扩展了SAML增加了许多新功能以便支持SAML验证方之间的通信更加详细地描述身份验证方法注销用户并保护隐私这些工作又提交给OASIS并合并到SAML中SAML在年月成为一个OASIS标准SAML被设计为用于多种不同的环境支持使用不同的身份验证和加密方法它支持各种不同的消息流甚至可以用于不使用XML的遗留环境中
XACML
XACML也是由OASIS开发的是一种表示访问控制策略的语言大多数计算机专业人士都熟悉基于权限或访问控制列表(ACL)的访问控制但是这些机制缺少表示复杂策略(在现实系统中经常需要用到)的能力因此访问控制策略通常会嵌入应用程序代码中这使得更改策略(或者只是找出哪些策略正在实施)变得很困难
XACML能够实际地使用任何可用的信息来决定是否该许可对一个资源的访问也可以关联附加的动作被调用的契约和决定例如要求请求的数据在天后删除
XACML可以根据资源的属性做出决定包括资源的内容或环境因素如日期时间或位置它也会考虑到与请求关联的各方的特性比如角色或组成员关系这可能不只包括请求方还包括其他方比如接受数据方或请求中转方
XACML 在年月成为一个OASIS标准它在具有多个创建策略的管理员的大规模环境中运行良好因为SAML可用于任何访问控制系统XACML可以与SAML一起使用或者单独使用有专门的支持它们一起工作的特性
WSS
WSS指定了如何保护通过网络传递的SOAP消息它包括身份验证完整性保护和保密性它没有指定如何实现访问控制但提供了可以用于访问控制的信息在WSS出现之前最常见的保护消息的方法是使用SSL或TLS协议这些协议仍然适用于许多应用程序但WSS提供了更多的功能和灵活性
SSL和TLS是对整个消息进行加密而WSS允许有选择性地实现加密例如它允许应用程序防火墙检查没有加密的部分此外WSS还支持复杂的多方交互这是处理复杂的电子商务事务所需要的
此外WSS在基础架构选择方面提供了更大的灵活性同SSL和TLS一样它也支持X技术还可以使用KerberosSAML或以前的普通用户名和密码因为WSS作用于SOAP层在信息在网络上传输甚至在对消息进行排队或存储时它都能发挥作用
WSS采用WC所开发的XML数字签名(XML Digital Signature)和XML加密(XML Encryption)标准WSS通过将称为Security的XML元素插入SOAP标题中而发挥作用其中包含所有有关应用于消息的身份验证数字签名和加密的信息它向接受方提供解密和验证消息所需的信息密钥和身份验证信息可以使用X证书Kerberos ticketSAML断言或其他方法进行定义
年WSS 成为一个OASIS标准现在WSS 就要完成了由于WSS所提供的灵活性不同产品间的互操作可能会比较困难为了解决这个问题Web Services Interoperability Organization组织(WSI)正在开发一个配置文件以便减少可变性并给出使用WSS(以及SSL和TLS)的最佳实践这个Basic Security Profile (BSP)的草案已经公布并预计于年初完成WSI成员还构建了一个示例应用程序来说明WSS和测试工具(可以检查消息是否服从BSP)的正确使用
结束语
上面介绍的三个安全性标准在设计时就被赋予了极大的灵活性这是通过使用XML而实现的SAML和XACML在几乎所有的环境中都支持身份验证服务但更适用于大规模分布式系统在SOAP环境中WSS提供了明确的消息保护但是在软件基础架构方面它提供了很多选择有XML作为其共同的基础这三个标准可以有效地共同使用或者也可以单独使用