一、什么是云原生
要了解云原生安全,一定要先知道什么是云原生,虽然云原生是现在各大技术论坛讨论的高频词汇。但是如果去看它的概念,一定会被一堆拗口的词汇搞得一头雾水。下面用相对通俗的表达,给大家介绍一下。
1.在云计算出现之前,开发的软件一般运行在各大公司的机房中,往往在公司起步初期,用户量和数据量较小,软件架构和硬件型号往往比较简单。但当公司越来越大,数据越来越多,以前的架构就不能适应大数据的情况,往往软件需要重构和数据迁移,十分麻烦。
2.在大数据社会的今天,传统的开发模式已经不适应业务的需要,于是云计算应运而生,云计算使的开发可以脱离硬件的束缚,业务需要多少资源,就从云去获取,云整合底层硬件设备提供统一的资源调度。云计算做了软件和硬件之间的中间层,动态的调度硬件资源,使的数据迁移、架构扩展、集群的变化都变的非常简单。同时可以控制成本。
3.在云计算出现后,根据用户的需求和对资源的提供,逐渐分为三大类:
IaaS:基础设施服务,Infrastructure-as-a-service。用户能从中申请到硬件或虚拟硬件,包括裸机或虚拟机,然后在上边安装操作系统或其他应用程序。
PaaS:平台服务,Platform-as-a-service。用户能从中申请到一个安装了操作系统以及支撑应用程序运行所需要的运行库等软件的物理机或虚拟机,然后在上边安装其他应用程序,但不能修改已经预装好的操作系统和运行环境。
SaaS:软件服务,Software-as-a-service。用户可以通过网络以租赁的方式来使用一些软件,而不是购买,比较常见的模式是提供一组账号密码。
IBM 的软件架构师 Albert Barron 曾经使用披萨对这三类做个一个经典的比喻,同样是做披萨。如果云服务商提供的是厨房,用户的披萨要完全自己做就是IaaS;如果云服务商提供的披萨皮,用户只用二次加工抹一些酱加点调料,就是PaaS;如果云服务商连披萨都给你做好了,用户要做的就是把它卖出去,最多再包装一下,就是SaaS。
具体到现实中,IaaS像亚马逊Amazon AWS EC 2,国内有阿里云服务器ECS。开源IaaS平台有OpenStack。
PaaS有阿里云的云虚拟主机(Web hosting)、网易云信等。
SaaS常见的有云存储,云相册,在线Office等。
4.随着云计算的发展,云计算进入了一个新的阶段,出现了裸金属即服务、容器即服务。为云原生的出现奠定基础。
裸金属即服务,裸金属是介于物理服务器和虚拟机之间。既有物理服务器的高性能、稳定、数据安全,又又云计算的弹性和灵活。
容器即服务(CaaS),容器完全完全抽象了底层基础架构,你可以把每个容器视为一台机器。允许开发人员直接在云中部署他们的容器,而不必担心底层细节。
5.云原生(Cloud Native),分为2部分,Cloud 一切都在云上,Native 从软件设计之初就考虑云环境。以充分利用云计算优势构建和运行应用的方式。大致来说:云原生是基于IaaS基础设施,已DevOps为开发理念,使用容器化、微服务等技术进行持续交付式的开发。
二、云原生引入的安全问题
了解了什么是云原生,我们来看看云原生会有什么样的安全问题。
传统安全问题依旧存在
首先,使用云原生架构,传统的网络安全问题并不会消失。比如病毒入侵、勒索软件、DDoS攻击、web入侵等依然存在。反而会因为云上架构复杂,组件直接的调用增多造成更多的问题。
API安全
由于云原声架构中,内部组件和微服务的调用普遍使用API,API之间调用频繁,由此带来的安全问题也逐渐增多。
容器安全
容器镜像安全问题,据 Banyan 调查显示,在 Docker Hub 官方镜像仓库中,约超过 30% 的镜像存在高危漏洞。这些镜像随着开发人员的下载进入各个产品中,造成巨大隐患。
容器逃逸安全问题,攻击者通过劫持容器,借助一些手段进一步获得该容器所在直接宿主机,经常见到“物理机运行虚拟机,虚拟机再运行容器”的场景,该场景下的直接宿主机指容器外层的虚拟机。
缺乏集中管理
各组件然有自己的日志和管理方式,但数据内容无法统一,且各组件访问行为之间无法做到关联分析,对全局数据安全态势没有整体了解,这将给安全管理带来巨大的隐患;
排查困难
由于是在云上容器话部署,相对以前,一个项目直接在物理机上运行,多了2层的架构,当出现安全问题,需要对# 容器、云、业务等多方面进行排查追溯,如果是公有云还需要云计算提供商协助,往往会产生沟通问题,造成问题解决的滞后。
三、云原生安全的解决方案
云原生安全不同与以前的安全产品云上部署。而是强调在云设计之处就把安全考虑在内。在中国信通院发布的《云原生安全白皮书》中这样写到:云原生安全强调安全产品原生化。服务商提供内嵌于云、能够有效解决云上安全风险的原生安全产品;云计算客户能够利用原生安全产品,建设与云计算环境融合的安全体系与架构,规避传统安全架构与云计算环境割裂等问题,利用云平台,最大限
度发挥安全防护能力,极大程度提升云计算客户体验更加安全的使用云计算。
如果说云原生是在开发项目时就和云环境进行绑定,那么云原生安全,就是在云创建之初就考虑云上应用的安全问题,已达到安全前置的效果。
零信任安全架构(Zero Trust Security)是一种安全策略,超越了以前网络边界安全的模式,对网络中的一切行为不信任,始终验证,持续监测。任何访问主题通过零信任安全代理去访问网络中的资源。由于云环境天生具有弹性,在云环境上构建零信任架构,动态的根据安全情况配置网络资源和策略,云原生天生和零信任架构的亲和度就较高,便于实现零信任架构。
DevSecOps,DevSecOps是在DevOps的概念上发展而来的,在原本的DevOps中加入了Sec(安全)。要了解DevSecOps,首先要了解DevOps。DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。用通俗的语言来说就是开发运维一体化,敏捷开发,持续集成。而DevSecOps,是DevOps模式下的安全概念,人人为安全负责,让业务、技术和安全协同工作以生产更安全的产品。如果说DevOps是把开发运维结合在一起打通了从开发到部署的流程,那DevSecOps就是从开发到部署的过程中都考虑到安全因素,从代码的全生命周期完成安全防御体系,已达到安全左移和安全前置。