安全架构|云安全框架及虚拟化技术
一、云计算业界定义
到目前为止, 云计算还没有一个统一的定义。云计算领先者如Google、Microsoft 等厂商,依据各自的利益和各自不同的研究视角都给出了对云计算的定义和理解。
维基百科:云计算是一种动态扩展的计算模式,通过网络将虚拟化的资源作为服务提供;通常包含IaaS、PaaS、SaaS。
Google:将所有的计算和应用放置在“云”中,设备终端不需要安装任何东西,通过互联网络来分享程序和服务。
微软:认为云计算的应是“云+端”的计算,将计算资源分散分布,部分资源放在云上,部分资源放在用户终端,部分资源放在合作伙伴处,最终由用户选择合理的计算资源分布。
研究机构IDC:认为云计算是一种新型的IT技术发展、部署及发布模式,能够通过互联网实时的提供产品、服务和解决方案。
美国国家标准与技术实验室:云计算是一个提供便捷的通过互联网访问一个可定制的IT资源共享池能力的按使用量付费模式(IT资源包括网络,服务器,存储,应用,服务),这些资源能够快速部署,并只需很少的管理工作或与服务供应商的交互。
二、云计算服务模型与平台
1)云计算典型模型
分为四类:传统IT全管理、IaaS硬件管理、PaaS服务管理、SaaS全管理

2)云计算典型应用

3)云平台基础架构
计算虚拟化、存储虚拟化、网络虚拟化,还有部署、监控和安全等模块。

4)云计算的优势与不足
三、云计算安全威胁
云安全联盟(CSA) “云计算12个主要威胁”


四、云计算安全架构
1)云安全控制模型
通过云服务模型与安全控制模型或合规模型进行比对,判断已有安全措施、不足的安全措施,找到安全差距。

通过差距分析找到安全短板,进行安全规划建设和实施落地,提供多维度、综合立体的安全架构保障。


2)云安全责任共担模型
云要保障云平台自身安全并提供安全产品和能力给云上客户;客户负责基于云服务构建的应用系统的安全。 基于云的客户应用,其安全责任由双方共同承担。

3)云安全矩阵CCM

五、虚拟化技术介绍
1)计算虚拟化隔离技术
全虚拟化
动态二进制翻译,过滤所有虚拟机发送请求,动态完成敏感指令翻译,不需要修改Guest os内核,Hypervisor层监控,动态翻译时需要VMM资源,依赖VMM。VirtualPC VMWare workstation
半虚拟化
必须修改Guest os内核,性能几乎等于物理机,对VMM依赖少,支持多种OS用Hypercall方式做敏感指令。Xen Hyper-v
硬件辅助虚拟化
动态完成敏感指令翻译,不需要修改Guest os,两套特权级,两个Ring0,性能最强,需要硬件支持。Inter-VT AMD -V

VMM 与 Guest 的切换
Guest与VMM之间的切换分两个部分:VM entry 和 VM exit。有几种情况会导致VM exit,比如说Guest执行了硬件访问操作,或者Guest调用了VMCALL指令或者调用了退出指令或者产生了一个page fault,或者访问了特殊设备的寄存器等。当Guest处于VMX模式的时候,没有提供获取是否处于此模式下的指令或者寄存器,也就是说,Guest不能判断当前CPU是否处于VMX模式。当产生VM exit的时候,CPU会将exit reason保存到MSRs(VMX模式的特殊寄存器组),对应到KVM就是vCPU->kvm_run->exit_reason。VMM根据exit_reason做相应的处理。
VMM 的生命周期
如上图所示,VMM 开始于VMXON 指令,结束与VMXOFF指令。
第一次启动Guest,通过VMLAUNCH指令加载Guest,这时候一切都是新的,比如说起始的rip寄存器等。后续Guest exit后再entry,是通过VMRESUME指令,此指令会将VMCS(后面会介绍到)所指向的内容加载到当前Guest的上下文,以便Guest继续执行。
VMCS (Virtual-Machine control structure)
顾名思义,VMCS就是虚拟机控制结构,前面提到过很多次,Guest Exit的时候,会将当前Guest的上下文保存到VMCS中,Guest entry的时候把VMCS上下文恢复到VMM。VMCS是一个64位的指针,指向一个真实的内存地址,VMCS是以vCPU为单位的,就是说当前有多少个vCPU,就有多少个VMCS指针。VMCS的操作包括VMREAD,VMWRITE,VMCLEAR。

2)网络虚拟化隔离技术
VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,采用L2 over L4(MAC-in-UDP)的报文封装模式,将二层报文用三层协议进行封装,可实现二层网络在三层范围内进行扩展,同时满足数据中心大二层虚拟迁移和多租户的需求。
VTEP(VXLAN Tunnel Endpoints,VXLAN隧道端点)
VXLAN网络的边缘设备,是VXLAN隧道的起点和终点,VXLAN报文的相关处理均在这上面进行。
VNI(VXLAN Network Identifier,VXLAN 网络标识符)
以太网数据帧中VLAN只占了12比特的空间,这使得VLAN的隔离能力在数据中心网络中力不从心。而VNI的出现,就是专门解决这个问题的。VNI是一种类似于VLAN ID的用户标示,一个VNI代表了一个租户,属于不同VNI的虚拟机之间不能直接进行二层通信。

VXLAN隧道
“隧道”是一个逻辑上的概念,将原始报文“变身”下,加以“包装”,好让它可以在承载网络(比如IP网络)上传输。从主机的角度看,就好像原始报文的起点和终点之间,有一条直通的链路一样。而这个看起来直通的链路,就是“隧道”。顾名思义,“VXLAN隧道”便是用来传输经过VXLAN封装的报文的,它是建立在两个VTEP之间的一条虚拟通道。
VXLAN 在 VTEP 间建立隧道

VXLAN报文格式

六、最后小结
云计算已经是大势所趋,越来越多的业务向云上迁移,伴随而来的云安全风险也逐渐显现,云安全必将是基础设施安全的重要环节。面对复杂的云安全风险,借鉴成熟的云安全框架模型扩宽视野,深挖虚拟化技术底层原理,从产品安全、数据安全、实体认证鉴权到代码和数据防篡改和底层技术自主可控,需要分阶段分优先级逐步落地安全风险解决方案。