编程策略
计算云要求使用考虑数据移动的编程策略:
•到处移动指针通常要比移动实际数据要方便得多。请注意图 10 所示的调度程序/工人模式使用一种中央存储服务,并在应用程序之间传递令牌,而不是传送实际数据。
•指针应视为一种能力,认真确保指针不容易被伪造。
•像代表性状态传输 (REST) 或简单对象访问协议 (SOAP) 这样的工具有助于降低应用程序状态,同时还能管理状态数据的传输。
合规与数据物理
保持符合政府法规和行业要求给数据管理增加了另一层需要考虑的因素。云架构设计师需要能够给数据存储指定拓扑和地理约束。云提供商应该设法简化指定数据与处理数据的虚拟机之间的关系以及数据实际存储位置。
•处理个人数据的公司可能需要遵守与数据处理相关的政府法规。例如,在欧盟国家开展业务的公司如果将其数据存储在美国,那就违反了本地法律,因为两地法律保护个人数据的规定存在差异。在类似情况下,云提供商应该提供一种对数据移动方式和位置指定约束条件的能力。
•受行业标准制约的公司 (例如,通过处理授权的信用卡征税的行业标准) 可能面临在哪里存储数据以及如何和何时毁坏数据方面的限制。在类似情况下,不允许把空闲磁盘存储块与另一个客户的存储块混合起来。重新使用之前必须安全地擦除这些存储块。
选择云提供商存储数据时,要考虑的不仅仅是该提供商是否可信。还需要考虑云提供商是否按照适用于相应应用程序的标准通过认证。
安全性与数据物理
数据通常是一个公司最有价值的资产,必须使用尽可能比对于任何其它资产大的警惕性来加以保护。需要以更大警惕性保护数据这一论点证明起来非常容易,因为入侵者可能会采取人们无法想象的方式从互联网上的任何地方取得一个公司的数据。需要采取的措施包括:
•对空闲的数据进行加密,这样,假如任何入侵者能够突破云提供商的安全防护措施,或者假如某个配置错误使得未经授权的人能够访问到该数据,数据就不会被破译。
•对传送中的数据进行加密。设想数据将通过公用基础设施进行传递,并且可能会被其间的某些人看到。
• 要求在应用程序组件之间进行严格的身份验证,因而只把数据传送给已知接受方。
•注意加密方法以及如何破解算法并随时间的推移用新算法取代。例如,鉴于MD5 已证明容易受到攻击,那就使用一种像 SHA-256 这样的更加严密的加密技术。
•对有权访问应用程序的人以及访问方式进行管理:
•考虑让管理员使用严密的、基于令牌的身份验证技术。
•对于客户登录/密码访问,考虑什么人管理身份验证服务器,以及访问是否在相应公司或云提供商的控制之下。
•对于匿名访问存储器,例如,匿名 FTP,考虑客户是否必须通过云提供商进行注册后才能访问,或云提供商是否可以与公司的身份验证服务器联合起来。
网络安全做法
良好的安全做法贯穿于系统设计、实现和部署的各个方面。应用程序的设计必须是安全的,其接口只能给授权用户提供相应的数据。实现期间,开发人员必须认真避免可能导致易受如下技术攻击的编码做法:缓冲器过载 (Buffer Overflow).或 SQL 注入 (SQL 注入)。部署时,应对操作系统进行硬化,并用最新安全补丁对软件各层进行及时更新。
在云计算中,应用程序部署在一个共享的网络环境中,而且使用非常简单的安全技术 (例如,VLAN 和端口过滤,对应用程序部署架构的各层进行分割和保护,并把客户彼此隔离开来。其中一些网络安全方法包括:
•使用安全域把虚拟机组合在一起,然后通过云提供商的端口过滤功能控制对域的访问。例如,创建一个用于前端 Web 服务器的安全域,对外部世界只打开 HTTP 或 HTTPS 端口,并过滤从 Web 服务器安全域到包含后端数据库的域的流量 (图 11)。

• 使用云提供商的基于后端的过滤来控制流量,或者通过在适当的地方插入内容交换机或防火墙设备来利用更加有状态的数据包过滤。为了对流量实现更加严密的控制,可以采用不可变服务容器 (ISC) 这一概念,它允许在单个虚拟机中部署多个软件层,并采用仅限虚拟机内部使用的预探测联网。此技术使用 Solaris™ Zones 在单个共享式 OS 平台上支持多个安全虚拟环境,并且只能使用 Solaris 操作系统和 OpenSolaris 操作系统。