【本章导读语】
软件安全确实是一个广泛而复杂的主题。这一领域最大的选择
战争之一是,新的安全缺陷可能完全不符合所有已知模式。
________Gary McGraw,软件安全原则
SaaS模型的安全要求是什么,是否存在潜在的安全风险,如何识别SaaS如何做好安全风险SaaS如何避免安全服务SaaS共享平台和数据托管的风险,如何建立安全体系,做好安全架构设计,如何构建安全SaaS平台,这些都是SaaS开发和运营商必须面对的问题。
有人说:SaaS该模式的数据存储在公共网络上,掌握在SaaS服务提供商手中。
有人说:SaaS该模式的数据存储在公共网络上,掌握在SaaS服务提供商手中。而且,黑客可能会破解并进入数据服务器获取数据,这听起来有些道理。甚至有人说:用SaaS软件时,很容易将病毒带到公司内部网络,甚至将病毒传播到其他服务器,这实际上给公司内部网络带来了隐患。
也有人说:SaaS由于局域网安装的软件系统也面临着一些安全问题,实际上提高了信息系统的安全性,SaaS有更专业的安全机制和技术,SaaS系统比传统软件更可靠。
面对各种问题我们该怎么办?10.1 SaaS安全要求
SaaS平台和在平台之上架设的应用程序安全要求与一般的软件有所不同,SaaS必须放置服务软件Internet网上数据库存储模式多种多样,所以SaaS安全要求有其特殊性。10.1.1 SaaS应用程序安全要求要点
多承租人,高效SaaS应用程序有以下安全要求:l
安全访问系统必须在安全环境中架构,提供各种安全保障,多用户的访问必须在统一的权限控制下进行,同时提供关键数据的保密措施。l
24小时连续运行服务器应该7x24x不间断运行,每时每刻提供的网络服务是有效的。l
24小时连续运行服务器应该7x24x365不间断运行,每时每刻提供的网络服务都是有效的。不会因停电、设备故障、死机、软件锁等系统故障而间歇运行。软硬件故障应及时恢复和处理。l
永久存储用户数据必须永久存储,存储不失效,数据不丢失,存储服务不失效。l
满足不同软硬件的接入允许接入异构硬件和异构操作系统。有统一的接口、命名、开发和设计规范来满足这些需求。
l
用户数据的安全要求用户数据可能位于自我管理的环境中。在这种情况下,系统应提供使用自我管理环境中的用户数据验证用户身份的相应机制,并使用按需环境中的访问控制数据进行授权。
SaaS提供商可以使用商业和现成(COTS)为了在不同安全域的应用中安全传播联合令牌,联合服务器。SaaS在按需环境下(用于供应商)使用联合服务器 SSO 企业客户使用的其他解决方案)SSO解决方案可以相互操作。联合服务器自我管理环境中的联合服务器配合SaaS提供者网络中相应的联合服务器具有信任关系。
您还应该使用自己管理用户帐户数据库:
2 开发一个 Servlet 用来从的筛选器HTP Header使用联合服务器验证用户名,并创建有效的主题/主题。
2 利用基于Java身份验证和授权服务(JAAS)自建安全服务,在授权过程中处理SaaS多承租需求。
2 从Servlet筛选器调用安全服务应用程序的编程界面(API),授权用户。2 使用Controller Servlet of Presentation Framework配置Servlet基于模型-视图-控制器的筛选器(MVC)在设计模式的基础上,确保输入要求满足安全要求。
用户数据可能位于独家数据库中。用户数据可能位于按需环境中的从性需求,用户数据可能位于按需环境中的特殊数据库(每个承租人)。系统应根据独立数据库域(配置用户所属承租人)提供用户身份验证和授权机制。
用户数据可能位于共享数据库中:系统应根据共享数据库(为用户所属承租人配置不同的数据库模式)提供身份验证和授权机制。该机制允许每个承租人的管理员在用户账户目录中为承租人创建、管理和删除用户账户。
l
随地高速访问SaaS提供的软件服务应为访问限制、速度限制、功能限制或存储限制,无世界地区差异。用户的业务应该随时随地处理。您不能因为您的服务器、电信室、南北电信隔离而限制用户的使用。而且用户的数据是安全的,不能告诉用户你的服务器硬盘有问题。用户的操作也是安全的。互联网上有很多黑客和黑客软件,用户不想让黑客知道他们的登录密码。如今,许多使用网上银行的人都被盗了银行账户,丢了钱。
许多人认为Google最强大的是Google的搜索和Google还羡慕相关广告Goolge有钱建电厂,发卫星,购买无线频段,并购大量资金Youtube。其实,Google这种可信的计算环境,最大的核心是多年的运营。这是互联网上唯一可信的海量计算环境——没有稳定的基础,用户怎么敢相信上层应用呢?谁敢在上面存储数据?而国内SaaS在计算环境、集群、不间断电源、企业存储设备、企业备份设备等方面,制造商仍在使用传统的中大型管理软件。这些传统做法支持大型企业的应用和运营没有问题,但显然,为全球和全球企业服务的计算环境不能以低成本快速扩展。最后,很可能会形成一个瓶颈,要么去小型机器,要么把企业分配到不同的服务器集群——就像现在玩网络游戏一样。我们不能轻易堆上万台PC数十万台服务器甚至可以扩展计算环境。当然,如果你想做的话SaaS如果你只想为国内乃至国内的小企业服务,甚至是国内某个行业的小企业,那就另当别论了。当然,对于不同的目标,技术架构层面会发生质变,而不是裁减量变。
10.1.2 处理各种安全要求
要处理SaaS对于应用程序和安全要求,您的系统结构应处理身份验证和授权要求。
l
用户账户数据库在按需环境中为什么要自己建立一个安全的解决方案?重要的技术需求是,SaaS应用程序可以在一个基础设施中承载多个承租人。处理这一需求,SaaS提供者必须提供一个操作SaaS应用程序实例的机制可以容纳应用程序支持的所有承租人的用户。
图10-1显示了SaaS如何支持多承租人的用户?Security Service为Tenant 1和Tenant 2.所有用户使用缺少的集中式Database 1。同时,为了处理 Tenant 3和Tenant 4高数据隔离和遵从性要求,Security Service还必须为此提供一种机制Tenant 3.所有用户支持特殊用户Database 2,并为Tenant 4.所有用户支持特殊用户 Database 3。
图10-1 用户支持多承租人安全框架需要为每个承租人提供一个独立的域,并提供一个机制来验证用户的身份(以上下文为基础)。在这个例子中,上下文是决定应用程序业务操作和使用环境的参数组合(如承租人、业务部门、地理位置等)。
基于给定时间支持多项活动的安全域J2EE容器的安全框架有一定的限制。尽管一切优秀J2EE容器提供配置多个域的机制,但一次只能有一个域活动。J2EE安全模型是基于方法权限的,所以对于细粒度的安全访问来说既不切实际又麻烦。
所以,为了基础Java身份验证和授权服务(JAAS)建立自定义的安全服务,你需要做的就是处理上述限制。JAAS它是一组允许服务验证用户身份并强制访问控制的群体API。抽象层放置在应用程序、异类身份验证和授权机制之间,JAAS 可以简化Java安全开发。
构建基于 JAAS 自定义安全服务基于 JAAS 安全服务应提供完成以下任务的机制:
在访问任何业务功能之前建立用户标识。
提供功能和数据权限,以维护用户的访问控制列表。
支持用户和组合 ACL 创造和维护。处理SaaS多承租需求的应用程序。
允许每个承租人的管理员在用户账户目录中为承租人创建、管理和删除用户账户。
与其他企业应用程序相比,为SaaS构建安全服务的重要区别在于支持处理多租赁需求。为了满足这一需求,安全服务应处理以下事项。
捕获用户上下文的方法同样,上下文也是决定SaaS业务操作与使用环境的参数组合(如承租人、业务部门、地理位置等)。
在这种情况下,系统结构应提供独立的安全服务,以便根据集中的多承租人用户账户数据库和承租人特定的特殊数据库进行用户身份验证和授权。系统结构还应提供一个界面,使承租人能够在用户账户目录中为承租人创建、管理和删除用户账户。
当单点登录对客户来说不是很重要时,我们建议使用这种方法。该方法可针对用户。
l
创建三个数据系统结构以下三种不同的方法可以创建多承租人的数据系统结构:
1. 承租人专用数据库
为每个承租人提供一个特殊的数据库。当客户对数据隔离有很高的需求时,我们建议使用这种方法。
2. 共享数据库,独立模式
所有承租人都使用共享数据库,在为承租人创建的独立模式下,每个承租人都有自己的表格。图10-2中的数据库表可用于支持这种特殊的承租人数据库方法。
图10-3 共享数据库模式
根据大多数承租人的需要,选择缺失的数据系统结构策略。使用提供以下功能的持久框架:
2 配置驱动机制,允许您使用多数据库策略连接到数据库。2 使用基于接口的数据访问对象(DAO)实现持久性逻辑机制的设计模式。
2 DAO Config XML 为了允许插入不同的驱动机制 DAO 实现并提供一种映射DAO实现细节的逻辑名映射。
对基础XML配置需要与缺乏数据系统结构策略的数据库进行交互。提供自定义XML配置与需要使用其他数据系统结构策略的承租人的数据库交互。提供检索和描述每个承租人特定配置和扩展信息的方法,并根据承租人的上下文插入这些自定义配置。
l自行管理的用户账户数据库
在这种情况下,承租人部署了一种联合服务,为承租人自己的用户目录服务提供界面。当最终用户尝试访问该应用程序时,承租人的联合服务器将验证用户的本地身份并与用户进行验证SaaS联合服务器协商,为用户提供签名的安全令牌。SaaS承租人联合服务器人联合服务器颁发的安全令牌。
在单点登录(SSO)在客户非常重要的情况下,我们推荐这种方法。也可针对业务用户。
l
}解