今天在图书馆借了两本云计算安全方面的教材类书籍,系统的了解一下云计算安全技术涉及到的相关内容和一些基本概念。通过本文,你可以了解云计算网络安全涉及的基本知识面。
1. 云计算网络概述
1.1 基本概念
云计算是一种提供对共享的、可配置的计算资源池(如网络、服务器、存储、应用及服务等)进行泛在的、便捷的和按需的网络接入访问的模型。在这种模型下,计算资源能够被快速地分配和释放,同时最小化管理工作的投入和服务提供商的参与。
- 目的
- 提供弹性、透明的资源服务
- 提高资源利用率,降低成本
网络是云计算的基础。通过网络实现资源虚拟化、池化以及对资源的有效管理。
-
云计算基本特征
- 按需自助服务
- 广泛的网络接入
- 资源池化
- 快速弹性
- 可测量的服务
-
云计算服务模型
- IaaS:硬件资源层面上的抽象,如虚拟机、Amazon EC2、Microsoft Azure、Google Compute Engine
- PaaS:提供常用软件构建环境、工具、部署等服务,用户不能自己管理网络、存储等底层云的内容,只能控制自己所部署的应用程序等;关键技术在并称编程模型、资源监控调度、海量数据库、分布式文件、存储系统等
- SaaS:可以理解成现在用的一些服务商提供的软件,如Google Gmail等
-
云计算部署模型(根据云平台的所有权和管理权划分)
- 公有云:成本低,拓展性好;需要实现对多租户性能、资源和数据等方面的安全隔离;如阿里云、Google Cloud等
- 私有云:一般是部署在企业组织内部的,由单一组织专用;一般是通过内网、VPN为员工提供IaaS或者SaaS服务;安全性较高
- 社区云:可以理解成区块链中联盟链的模式
- 混合云:实现不同模式的数据和应用的可移植性,例如将敏感数据部署到私有云,安全性要求较低的数据部署到公有云
1.2 云计算网络安全技术
云计算数据中心(用于托管软硬件资源)网络通过大量二、三层交换机和路由器将服务存储有效的连接起来,通过进一步的虚拟化技术提供了云计算服务。
- 云计算网络存在的安全挑战
- 网络规模庞大
- 流量模式不同(可以重点关注):服务器到用户的南北向流量、服务器之间的东西向流量、Mice Flow数量众多对延迟敏感、Elephant Flow传输时间长且需要高带宽,更容易导致拥塞
- 高带宽低延迟的需求
- 拓扑结构复杂
- 资源虚拟化
2. 数据中心网络技术
数据中心是云计算等应用的重要基础设施,一般包括大量的服务器、存储和网络等硬件设备,以及运行在这些设备上的操作系统和管理软件,此外还有各种安全设备。数据中心网络则要提供高带宽、低延时和零丢包的网络通信环境。
2.1 数据中心网络流量
根据通信双方实体类型分
- 服务器与客户端之间的流量:南北向流量,主要采用基于IP的三层路由转发
- 服务器与服务器之间的流量:东西向流量,对云计算应用的性能至关重要,一般是基于IP的三层转发和基于MAC的二层转发两种形式;三层流量主要是数据中心不同服务之间调用所使用(如Web服务调用数据库服务),二层主要是同一类服务器之间的数据同步计算(如Web集群负载均衡)
根据流量大小分
- 大数据流:数量众多且对延迟敏感
- 小数据流:容易对网络负载均衡给出挑战
由于虚拟化技术使得通信的实体逐渐转向运行在物理机上的虚拟机和容器,它们弹性、动态地部署都对网络中数据流量的调度提出新的挑战。
由于以太网的高性价比和数据传输率,使其成为数据中心使用的最广泛的数据传输技术。此外,数据中心网络也开始使用iSCSI和FCoE等技术实现网络融合。
2.2 数据中心网络拓扑
- 以交换机为核心的网络架构
- 传统三层网络拓扑架构
- Clos网络架构
- Spine-Leaf网络架构
- Fat-Tree网络架构
- 以服务器为核心的网络结构
- DCell
- FiConn
- BCube
2.3 数据中心的大二层网络
为使资源可以弹性分配和日益增长的东西向流量需求,有了“大二层”的网络环境的需求,也就是整个数据中心网络属于一个二层广播域。包含物理网络规模和业务支撑两方面的要求。在大二层中虚拟机的创建和迁移不需要对IP或者默认网关的修改,一般将L2、L3的网络边界放在核心交换机。
-
大二层网络面临的问题
- MAC地址学习问题:大二层网络规模庞大,在具有大量节点的网络中泛洪,影响网络性能
- 生成树协议的问题:冗余网络带来环路问题,以太网使用的生成树协议会阻断冗余链路,造成链路资源浪费,降低网络性能、增大交换机负载
- VLAN技术的局限:租户数量超出VLAN的最大支持数量
- 网络安全问题
-
为解决上述问题,最直接的方法是摆脱STP协议
- 方案一:采用网络虚拟化技术
- 方案二:实现二层多路径传输技术L2 Fabric,代表方案有TRILL、VXLAN等
2.4 数据中心桥接
以太网是不可靠的,数据网络和存储网络很可能使用不同的协议,因此需要一个承载协议能够适应不同的应用服务的需求,基于以太网的数据桥接技术成为最佳选择。
- 数据中心桥接(Data Center Bridging)对以太网特性进行扩充优化,避免链路中的丢包,保证数据传输质量:
- 基于优先级的流量控制PFC
- 多级调度的增强传输选择ETS
- 给予反馈的量化拥塞通知QCN
- 提供了DCB自动化配置
- 保持兼容性
- 相应的DCB的主要机制:
- 基于优先级的流量控制PFC:提供了不丢包的流量控制,保证关键业务流量和非关键业务流量的隔离,是DCB的基础
- 增强传输选择ETS:实现链路带宽的分配问题
- 量化拥塞通知QCN:一种可以直接溯源、可量化调整的拥塞控制机制
- 数据中心桥接交换DCBX:是完成这些工作的一个自动协商协议,允许链路两端的设备自动确认对端是否支持PFC和ETS,并且能够协商PFC和ETS的参数。
3. 服务器虚拟化与网络技术
服务器虚拟化对扩展数据中心用户承载能力和提高硬件资源利用率有着十分重要的作用。通过虚拟化技术降低实际使用的物理机的数量并提高利用率,同时减轻管理成本。
3.1 虚拟化基本概念
虚拟化是一种将物理资源(计算、网络、存储等)进行抽象、转换和隔离,并最终向用户呈现一个可动态配置的虚拟运行环境,使得用户使用资源时不再受资源的物理配置与地理位置的限制。
虚拟化中,宿主机通常就是物理服务器,运行着宿主操作系统。Hypervisor是虚拟机监视器VMM用来创建与运行虚拟机的软件、固件或者硬件。Hypervisor上面运行的虚拟机叫客户机Guest Machine。
- 虚拟化分类
- 全虚拟化
- 半虚拟化
- 硬件辅助虚拟化:CPU针对性的从指令层面简化虚拟化技术
- 操作系统层面的虚拟化:namespace、cgroups、chroot,也称容器技术如Docker
容器技术基于操作系统的资源隔离技术,为应用程序构建出一个轻量级、标准化,并与其他应用程序互相隔离的运行环境。容器中包含应用程序本身以及必需的运行环境(一般叫做镜像),使得该容器能够在任何具有容器引擎(如Docker Engine)中运行。
在硬件资源的利用率上容器技术强于虚拟机。节省开发、测试和部署的时间。
项目 | 容器 | 虚拟机 |
---|---|---|
启动时间 | 秒级 | 分钟级 |
存储占用 | MB级 | GB级 |
性能 | 接近裸机 | 明显的性能损失 |
单机部署数量 | 最多上千个 | 最多几十台 |
Docker技术基于Linux的资源隔离技术(namespace、cgroups和chroot),目前比较主流。而容器也作为下一代虚拟化技术。
常见的Hypervisor有:VMWare vSphere、 Microsoft Hyper-V和Open Stack,其中Open Stack是开源的。
3.2 硬件辅助虚拟化
Guest OS自认为处于内核态,如果Host OS处理其发出的一些特权指令会带来很大的性能开销。所以会有硬件辅助提高虚拟化体验的需要。
3.3 虚拟网络接入
虚拟交换机
由于一个物理机上可能有成百上千个虚拟机和容器,显然1:1的配置物理网卡等网络设备是不现实的,因此使用虚拟网络来对真实网络进行模拟。使用软件的形式模拟一台交换机,方便的按需部署。
边界虚拟网桥技术
目的是让虚拟机以适当的方式共享宿主机上的物理网卡,尽量达到与虚拟机独占物理机网卡接近的性能。
3.4 容器网络技术
接入方式
- Bridge:利用Linux Bridge等虚拟网桥连接到物理网卡。Docker会默认使用这种方法,进程启动时,会在主机上创建虚拟网桥,其他容器会连到虚拟网桥上。此外,Docker还支持OVS(Open vSwitch),有更强大的功能,在生产环境中多用。
- Host:容器直接使用宿主机的网络协议栈,共享主机IP。容器有独立的进程和文件空间但没有独立的Network Namespace。
- Container:可以与其他容器共享网络协议栈。
- macvlan:把Docker宿主机上的物理网卡在逻辑上虚拟出多个虚拟网卡,并给每一个子接口分配虚拟的MAC地址。如果容器发送数据目的地址在本机,则直接转发到相应的容器中,否则交给物理网卡处理。
- User-defined:支持用户高级自定义。
- None:容器拥有自己的Network Namespace但是不提供任何网络配置,需要用户为容器添加网卡、配置IP等。
跨主机网络通信
多主机的Docker集群上,有了对Docker跨主机通信技术的需求。
- Flat:要求所有容器在同一个可路由的网络环境中
- Hierarchy:要求容器必须L3可路由,并且具有相同的IP层次。
- Overlay:为不同主机上的Docker容器创建分布式网络,使得不同主机的容器可以相互通信。这种方式需要实现Linux Network Namespace来隔离不同容器间的网络资源、VXLAN把二层数据包封装到UDP数据包后运输来实现大二层网络、以及一个分布式的k-v数据库来运行发现协议和保存docker集群中的个主机信息。同时也需要分布式的虚拟交换机来转发不同主机之间的数据流。
通用数据模型
-
CNM:Docker的容器网络模型,为IP地址管理插件(负责地址池的创建、删除以及地址分配)和网络插件(负责创建和删除容器虚拟网络,以及分配和回收IP地址)提供接口。基本概念包括:
- Sandbox:利用Linux Network Namespace虚拟出的沙盒网络环境,包含容器的整个网络协议栈
- Endpoint:网络端点,用来连接Sandbox到Network。
- Network:一系列可以相互通信的Endpoint所组成的虚拟网络。
-
CNI:容器网络接口,更加通用,为了使得不同容器平台通过统一的接口互联互通。
两个组件:
- 容器管理系统
- 网络插件
两个接口:
- 添加ADD
- 删除DELETE
运行流程:
- 容器运行环境给每个容器分配Network Namespace和容器ID,然后把这些消息连同CNI的配置参数传递给网络驱动。
- 网络驱动会以JSON文件的形式返回分配给该容器的IP地址并把该容器连接到网络。
kubernetes网络技术
-
组网模型
k8s是主从架构的Docker集群编排器,架构如下。
- Master:控制整个k8s集群所有节点的计算机,用于控制集群中的所有Node和Pod。
- Node:k8s集群中的一个节点,是实际上负责提供服务的主机。
- Pod:提供一项服务所需的一系列密切相关的容器的集合(如应用容器和存储容器)。是k8s中可部署的最小单位,每个Pod的IP地址唯一。
- Service:k8s集群中一组提供相同服务的Pod以及访问这些Pod的方式,还提供了外部访问这些Pod的接口。
- Label和Label Selector:Label是存储在etcd的一个k-v键值对,根据需要给Pod、Node以及Service等对象添加一个或多个Label,并通过Label Selector选择完成业务所需要的对象。
-
容器网络的管理
k8s集群需要把Service Cluster分为前后端两组,面向用户仅提供前端服务器的虚拟IP和虚拟端口号,前端服务器处理后最终指派物理后端服务器。
4. 网络虚拟化技术
4.1 概述
数据中心网络的大二层的不同用户的数据帧的传输会带来巨大的风险。这些问题可以用网络虚拟化和隧道技术解决。
- 网络虚拟化:把物理网络虚拟化成多个逻辑网络,通常使用VLAN Tag等方式区分数据流,使用隧道技术进行透明传输。这样可以对某个网络进行单独管理,高效利用资源。
4.2 传统网络隧道技术
- VLAN:VLAN技术通过给每个租户分配一个VLAN ID创建虚拟的二层网络,缺点是数量有线,只支持4096个,无法满足实际需求。因此业界推出VXLAN虚拟可扩展局域网。
- Q-in-Q:也叫Stacked VLAN或者Double VLAN,主要思想是VLAN Tag堆叠,实现透明转发。
- MPLS:多协议标签交换。解决的问题是大流量下基于最长前缀匹配规则的路由转发开销大,性能不可接受。这是一种基于标签的转发技术,通过在报文中添加MPLS标签,实现高效的数据转发和数据分层的精细控制。
- GRE: 目标是对某些网络层协议进行封装,然后创建隧道使得这些报文可以在另一个网络层协议中传输,解决不同网络层协议报文的传输问题。
4.3 VXLAN
这是一种大二层网络的虚拟化技术,采用UDP进行封装。优点如下:
- 低成本的实现跨三层的大二层网络,通过隧道技术实现了三层网络上的逻辑大二层网络
- 有充足的ID数量(1600万)
- 租户隔离,实现IP地址,MAC地址复用
- 可感知虚拟机
- 支持细粒度的负载均衡
4.4 VPC技术
虚拟私有云VPC为租户提供隔离的环境,租户在使用网络时,可以自定义选择IP地址的范围、创建子网和配置路由表和网关,并且无需担心和其他用户产生冲突。
5. 软件定义网络技术SDN
传统的网络架构适应性和更新能力不足。软件定义网络SDN技术的可编程性使得网络变化更加灵活。通过将数据平面和控制平面进行划分,实现网络灵活调配。数据平面上可以使用通用的网络设备提供编程能力,控制平面上对网络进行统一管理。
简单说,思想就是解耦控制平面与数据平面,将处理网络硬件的处理细节交给人。
5.1 体系结构
自顶向下:
- 应用平面:如流量均衡模块和防火墙等网络应用模块。允许用户通过编程实现网络行为。
- 北向接口:SDN控制器提供给上层应用的接口,使得上层应用可以调用控制器的功能。
- 控制平面:包含各类控制器,是SDN的数据中心,负责网络内部路径交换和边界路由的生成。控制器实例可以部署在不同位置,通过南向接口对数据平面中的网络设备进行集中式管理,如下发转发决策、监测网络状态。同时通过北向接口向应用平面提供服务。
- 南向接口:SND用于管理交换机的接口,如OpenFlow协议,是数据平面和控制平面的交互接口。
- 数据平面:支持各类SDN的网络设备,如路由器、交换机、虚拟交换机和无线访问接入点等,主要负责用户数据转发,也可以上报网络资源和状态信息。
5.2 数据平面和控制平面分离
SDN实现核心思想就是解耦数据平面和控制平面,以转发表为界。数据平面中网络设备只保存转发信息,并且有高速转发能力,所有网络决策都由控制器来完成。控制平面可以获取全局网络信息和状态,并且通过南向接口将编程指令下发到数据平面。
这样也带来一些问题:
- 单控制节点的单点故障;多控制节点的资源调度,负载均衡
- 一致性问题
- 高可用性
6. 网络功能虚拟化技术NFV
常见的网络功能有防火墙、入侵检测系统、负载均衡器、网络地址转换等。传统的网络部署中,网络的功能实现主要依赖于硬件设备。虚拟化技术使得网络功能的部署不再依赖硬件,而通过软件的形式灵活部署在通用服务器的虚拟化资源中,可以在一个物理平台上同时运行多个不同的网络功能程序。
优势:
- 共享硬件资源,降低网络成本
- 部署灵活可伸缩,弹性和高可重用
- 自动化更新升级
- 多租户和安全隔离
- 负载均衡和能耗控制
- 接口标准化
云计算网络安全基础
云计算网络安全技术
云计算网络安全机制
云计算网络安全实践