3、虚拟环境下的安全测试
1、测试目标部署在虚拟机中:该场景的安全测试和常规测试相同,可直接访问并测试目标。
2、在虚拟机中访问测试目标:远程登录虚拟机,将测试工具拷贝至虚拟机中,在虚拟机中实施安全测试。
3.7 云环境
1、云环境简介
云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
云环境下的安全测试:和传统服务测试一样,多了沙箱等之类的云环境独有的安全方案。
2、云环境分类
1、基础设施即服务IaaS(Infrastructure-as-a-Service)
就是将CPU、存储、网络等硬件资源能力云化,作为服务提供给消费者。
2、平台即服务PaaS(Platform-as-a-Service)
就是运行软件的软件能力和开发软件的软件能力云化,作为服务提供给消费者,如阿里和腾讯的开发平台等。
3、软件即服务SaaS(Platform-as-a-Service)
将应用软件的能力云化,作为服务提供给消费者,如淘宝、京东等。
3、云环境的优势
1、云平台能够自行提供开发及测试环境,因此我们可以在无需对数据中心硬件及软件进行变动的前提下开始进行应用程序创建工作。
2、能够快速将应用程序投入生产层面并根据需求对应用进行扩展。
3、能够帮助我们与其它开发者、架构师以及设计师顺利协作,共同处理应用程序创建过程中的各项任务。
4、云环境应用场景
电子邮箱:云计算将电子邮件资源保存在云端,用户可以在任何地点、任何设备和任何时间访问自己的邮件,企业可以使用云技术让邮箱服务系统变得更加稳固。
数据存储:用户可以将所需要的文件、数据存储在互联网上的某个地方,以便随时随地访问。云服务商将会为用户提供广泛的产品选择和独有的安全保障。
商务合作:共享式的商务合作模式,使得企业可以无视消耗大量时间和金钱的系统设备和软件,只需接入云端的应用,便可以邀请伙伴展开相应业务。
虚拟办公:使用虚拟办公应用的主要好处是不会增加设备负载,它将企业的关注点集中在公司业务上,通过改进的可访问性,为轻量办公提供保证。
业务扩展:基于云的解决方案,可以使企业以较小的额外成本,获得计算能力的弹性提升。云服务商可以满足用户的定制化需求,低廉的成本使得企业无须对未来的扩张有所顾虑。
移动办公:针对移动办公的特点,多种手持终端可以实现无缝的随时随地接入,方便进行远程办公和业务流程处理,真正实现任何时候、任何设备、任何网络都可以访问应用的需求。现有IT系统无需改造,通过桌面云系统即可以实现网络的全集中管理,提高IT维护效率。
3.8 微服务
1、传统单块架构模式
传统的 Web 应用开发在逻辑上分为表示层、业务逻辑层和数据访问层三层的模式,开发团队对不同层的代码实现,经历编译、打包、部署后,最终运行在同一台机器的同一个进程中。对于这种功能集中、代码和数据中心化、一个发布包、部署后运行在同一个进程中的应用程序,称之为单块架构(monolithic architecture)。
传统单块架构由于所有的代码运行在同一主机的同一个进程中,不同功能与服务模块的线程共享进程空间,用户状态可以用全局变量实现共享。外部访问控制,认证授权与功能交互统一起来,所有功能通过内部的方法或函数调用来实现,不需要对外提供额外的 API 接口,使得程序的安全性较高。
2、微服务架构
为了打破单块架构模式所带来开发效率低、代码维护差、部署不灵活、拓展性差瓶颈,在微服务架构中对应用进行有效拆分,每个服务运行在独立的进程中,服务间采用轻量级的通信机制相互沟通。服务可独立扩展伸缩,每个服务定义了明确的边界,不同的服务甚至可以采用不同的编程语言来实现,由独立的团队来维护,并且能够被独立的部署到生产环境、类生产环境等。
3、传统单体架构VS微服务架构
传统单块架构
同一主机同一进程内
-开发团队对不同层代码进行编译、打包,部署到一个主机进程中
所有服务模块为本地调用
-全部服务皆可共享用户的逻辑状态
-应用服务器提高会话管理
构建部署时间充分
-在周期内将安全融入的到系统开发中,将安全漏洞早于部署前发现
1
微服务架构
不同容器或者主机不同进程
-将微服务打包为Docker镜像
-将每个服务实例部署为容器
各个服务间需要远程访问
- 服务之间独立无法共享用户状态
- 需要集中进行身份校验与授权
- 服务间需要互相通信并且进行控制
敏捷开发与自动化部署
- 业务优先原则,安全在更快的投付生产中显得疲奔命
4、微服务的特点
彼此独立:既然是一个独立的服务,那必然是一个完整的自治系统,不依赖外部的东西就能够提供服务。有自己一整套的完整的运行机制,有和外部通讯的标准化接口。
原子化:作为一个微服务,一定是一个原子化的服务。也就是说服务不能再划分成更小的服务了。如果一个服务还能划分成几个小的服务,那我们就不能称之为一个微服务,它其实可以通过几个微服务组合成的一个系统。
组合和重构:如果是最原子的服务,那一定是没有任何用处的。微服务之所以神奇,在于它能快速的组合和重构,彼此组合成一个系统。
5、微服务应用场景
Eureka 服务注册发现框架 Hystrix 服务容错组件
Zuul 服务网关 Archaius 服务配置组件
Karyon 服务端框架 Servo Metrics组件
Ribbon 客户端框架 Blitz4j 日志组件
6、Docker容器介绍
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
Docker是微服务的一个非常完美的运行环境。
7、微服务与微服务之间的安全
1、微服务模块自身安全
相当于传统服务端,那么传统服务端中涉及到的安全风险相对的都可能在微服务模块中存在,比如输入输出校验不严格、第三方框架带来的风险、引入新技术带来的风险。
2、服务注册与发现组件安全
该部分的风险直接影响着整体微服务架构的安全性。服务注册与发现组件用于实现分布式系统中服务的发现与配置,常用的有consul等。区别于常见风险,它所带来严重风险为信息泄露及导致整个架构不可用。
3、服务间通信安全
微服务架构中通信包括客户端与API网关通信、客户端与微服务端直接通信、服务间通信,其中客户端与API网关通信或者客户端与微服务端直接通信都属于边界安全问题。微服务间的通信属于内部通信,这是微服务架构相较于传统单块架构的独特之处。
在架构中必须保证所有微服务接口统一由API网关进行管理,否则一旦接口直接暴露与公网,会由于接口滥用带来很多风险,同时为了防止攻击单点突破,需要根据业务需求精确地指定哪些服务可以与其通信。