1.4.4 如何实现安全的云原生化
(1)安全架构具备编排能力
编排(Orchestration)是指将各类资源根据业务需要进行动态控制和管理。在云原生场景中,安全架构需要借助容器编排系统的能力来动态部署或销毁安全资源,并按需调度流量牵引或旁路到前述的安全资源,然后将安全策略下发到安全资源,形成全局统一、一致的安全能力。
除了资源管理之外,安全架构也可借助容器编排系统进行动态升级。例如,某个安全应用发布新版,则可以将其推送到镜像仓库中。编排系统可以将部署在所有节点中的安全容器进行版本升级,甚至可以通过灰度升级策略将一部分安全容器升级,其余安全容器保持不变,从而确认本次更新是否会对业务产生影响。
(2)容器和宿主机安全:安全特权容器
以安全容器的形式防护容器的安全,看似是一种自然且优美的防护机制。
在过去虚拟化安全的实践中,安全团队发现在宿主机层面防护虚拟机内部的安全是非常困难的事情。由于虚拟化是硬件层面的隔离,因而宿主机中的安全机制(如安全代理、虚拟化的安全设备等)都看不到,也阻止不了虚拟机内部的恶意进程或行为。有一种权宜之计是在虚拟机中安装安全代理。但如果是公有云服务商这么做,租户会认为存在被监听、操控的风险;而如果是私有云运营者这么做,也会有稳定性、负载等方面的顾虑。
而在容器环境中,容器技术本质上是操作系统虚拟化,因而宿主机中的安全代理是可以观察到宿主机或容器中的所有进程、文件系统等信息的,也可以通过系统调用对容器中的进程、网络连接进行控制,因而在宿主机层面完全可以实现对宿主机、容器等资产的安全防护。
在云原生环境中,如果安全代理本身就是以容器的形式出现的,那么上述第1点中安全编排所需的安全软件部署、更新、扩容等功能都可以通过容器技术实现。当然,通常这个安全容器需要一些能力(Capability)来获得某些权限,当它需要所有的权限时,它其实就是一个特权容器。在很多安全厂商的容器安全方案中,宿主机侧通常会部署安全特权容器,以实现对其所在宿主机和容器的全方位防护,如图1-6所示。
(3)业务安全:Sidecar安全容器
特权容器通常关心的是系统调用、网络流量,而在云原生场景下,业务团队和安全团队会更关心容器所承载业务的安全,如微服务的安全、无服务的安全。这些安全通常存在于网络和传输层之上的应用层,而在应用层上进行防护,通常可以使用Sidecar模式的安全容器。
Sidecar容器本质上就是一种提供反向代理的容器,如图1-7所示,该容器会劫持业务容器的流量,经过解析后获得应用层请求和响应,然后根据安全策略进行检测或防护。
除此之外,Sidecar安全容器与安全特权容器的区别是Sidecar安全容器尽可能贴近服务,可以与编排系统深度融合,随着微服务和无服务容器的增加而相应增加,反之亦然。可见,Sidecar安全容器的资源管理和策略管理是云原生的。
图1-6 特权容器防护示意图
图1-7 Sidecar防护示意图