四哥 2011-03-28
数据中心一般在逻辑上划分为三个部分:红区、黄区(DMZ)和绿区。红区是Internet流量通行的区域。红区和DMZ通过企业防火墙隔离开。通过企业防火墙之后,进入黄区。黄区是数据中心与Internet的接口,一般放置HTTP服务器、反向代理服务器等设施。黄区和绿区可以在同一个LAN中,通过VLAN的配置分隔开。黄区和绿区的交互可通过VLAN上层的路由器上明确的路由配置类完成。数据中心的绿区一般向外访问的链接是明确配置的,如果绿区中也有客户端机器,那么绿区和黄区之间也需要通过防火墙隔离开。
PaaS平台一般在DMZ区设立专门的反向代理服务器用于用户的登录和认证。常用的产品包括IBM Tivoli Access Manager或CA的SiteMinder。这些产品首先要求用户登录,用户登录成功后,它代理用户进一步登录到back-end的各种复杂的服务器中。开源的Apache Reverse Proxy也可以帮助完成穿越黄区的工作,但是不能完成认证的工作。
云计算平台还应该支持联邦登录行为,这种行为一般分为两种类型。
一种是云计算平台需要借助于客户的身份管理服务器来完成认证,把认证结果告诉自己就可以。相关的协议包括SAML 1.1/2.0。SAML Browser POST profile可用于Web应用,而基于SAML的WS-Trust/WS-Security等标准可用于Web Service/SOA等场景。
另一种类型是在云计算平台上生存的第三方服务提供者。用户希望在云平台上使用这些服务,但是不希望把自己在云平台上的身份信息过多暴露给这些服务。这种场景可以使用OAuth。
单点登录是云计算平台上比较复杂。如果前端已有认证服务器,那么认证服务器可以把用户信息放到cookie里,通过cookie带到后端应用服务器中。后端应用服务器可以通过解析这些cookie得到用户认证过的信息。但是,这里仅仅得到的是用户的基本信息,或者说,只知道用户是不是云平台上的一个合法用户,还不知道用户有没有购买过相关的应用。
云平台上的应用需要和BSS系统集成,来得到用户的entitlement信息。这种集成是双向的,应用call BSS系统来求问一个具体用户的服务购买记录;而BSS可以动态地把客户的购买信息provision到应用中。通过这一信息,应用才能知道一个合法用户是不是能访问自己。
如果在DMZ区没有认证服务,那么绿区的服务器就需要自己来处理单点登录的问题了。一般情况是服务器需要得到云平台身份服务器提供的SAML token,对之进行分析,得到用户信息后,用自己的方式造一个可以放到cookie里的身份token。这个token需要进行加密,不能让用户自行修改。在cluster的环境下,这个token需要在节点之间互相可识别。这需要在服务器上设计动态Cache,并可以在节点间对Cache做复制。
绿区一般会有成百上千的服务器,这些服务器不可能两两做单点登录,因此需要设立一个专门用于绿区服务器对服务器调用时使用的认证代理。这样所有的服务器都可这个代理做单点登录连接就可以了。
有关联邦登录部分,有很多相关的open source软件可供使用。
1. 关于SAML的部分,openSAML提供了完整的code base来帮助用户构造和解析SAML token。Eclipse Higgins本来试图提供一种基于Information Card的完整解决方案,但是现在iCard机制普及度不高。Eclipse Higgins中最有价值的部件是STS和IdAS。STS提供了完整的web service设施,实现了WS-Trust中SAML token的各项设施。IdAS是由Novell提供的code,提供了非常好的LDAP集成机制。
2. 关于OAuth部分, Google已经提供了比较完整的code。
3. 关于单点登录部分,有一些开源的SSO项目,但是多数情况需要自己去设计。
1. 所有与客户端通信的连接都必须基于SSL。
2. 服务器操作系统以及服务器上的应用(允许用户上传文件的地方、邮件等)都需要部署病毒防护系统。
3. 与安全相关的动作需要保留完整的log和审计信息。
4. 完善的信息备份系统。IBM Information Protection Services (Arsenal Digital)使用一些设备来获取和保留需备份的数据,并把备份信息放到安全的地方(如另外的DC)。备份和恢复过程中的数据传输均需要加密。
1. 要建立代码标准防范主要的攻击类型如CSRF, SQL注入, XSS等。
2. 建立手动或自动的工具(IBM Rational AppScan)来定期做非法入侵行为的模拟,作为系统测试的一部分。
3. 为应用建立安全checklist,并在设计过程中加入安全board的review。
4. 在系统测试中加入安全测试部分,在系统设计中要对安全部分的设计做review。
5. 对用户信息的保护、修改等业务逻辑有专门的审计。
1. 每一个应用应该有安全架构师作为focus point。
2. 对网络、应用、服务有明确定义的安全管理行为。
3. 安全评审贯穿整个开发和部署流程中。
4. SAS 70 TypeII评审工作。
LotusLive Security WIKI: http://w3.ibm.com/connections/wikis/home?lang=zh_CN#/wiki/LotusLive%20Security/page/Security%20Processes