大家好,我是来自Aqua的工程师陈宇,今天主要想跟大家一起讨论下关于多云安全的问题。
具体的分享内容,我将从下面几个问题展开:
什么是多云?
针对多云场景出现的安全运维方面的问题有哪些?
如何利用好的工具和方法解决这些问题?
什么是多云,怎么去定位多云场景?
多云安全是云和安全之间的一个交叉领域,是这两个领域之间交叉的一个新的细分。同时,这两个行业有一个很大特点,就是它非常能够造词!有非常非常多的新的名词在每年涌现出来,说明这个行业非常欣欣向荣,蓬勃发展。
但是,也会带来一个不好的问题,它会使得每一个人对一些相同的词有不同的认知。所以,我们今天来说说这个Scope究竟是什么?
今天的多云场景,按照大多数理解来讲,多云就是多个公有云。数据中心全部是在云上,例如有一部分在AWS,有一部分在阿里云,这是一个典型的多云场景。
提到多云,大多数时候指的是云基础架构,这是介于基础架构的技术特性。如果一个基础架构具备一些原生云的特性,这种基础架构就是一个云基础架构。原生云的能力例如多租户、按需扩展、无中断部署、高弹性、高可用等,像AWS,AirCloud,腾讯云确实是云,但多云场景下其实也有几个不同的分支。
第一个分支:公有云,没有线下的数据中心,所有数据中心的基础架构全部都在公有云上。
第二个分支:一部分数据在公有云上,一部分数据在线下的私有云上。
接下来,我们讨论下第二个问题,在多云的场景之下,我们会遇到什么样的问题?在讲之前,有两种场景,一种是纯公有云,一种是公有云和私有云的混合云,我们在讨论的时候把这两种场景分开来看。
第一种场景:纯公有云,没有一个用户,没有线下的数据中心,所有的基础架构全部都在公有云上。
一部分在AWS,一部分在阿里云。这时候可以看到很多表象上安全运维的问题,例如问题响应速度慢,实施安全措施复杂度高等问题。背后的原因究竟是什么呢?一个是不同的云服务商在某一些技术的实现性上,它的技术栈是不一样的,导致了企业内部的一些既有的的标准没有办法在这些不同的云厂商上实现统一标准的完整落地。坦白说,这个问题很难解决,但是又对安全十分的重要。
安全是一个非常难以量化的过程,这也是它的一个痛点。现在做安全更多的实现的方法是面加点的管理方法。面指的是攻击面,降低攻击面可以有效降低风险,但如果把攻击面降到最低,那正常的业务可能就没法展开。安全和业务之间是互相拉扯的关系。安全事情做的越多,业务效率就越容易受到影响。所以现在把攻击面降到一个可控的标准之下,再把暴露出来的攻击面当做一个一个的点去解决,这也是目前采用的最安全的一种治理办法。
一般来讲,企业内部都会有一套跟自己实际情况相匹配的基线标准。这套基线标准的订立非常麻烦,因为它需要运营,需要运维,需要安全team三方拉扯来产生一个基线配置的结果。这套基线的标准一旦订立下来之后,未来在业务扩容和业务新上线的的过程之中,要做的事情就很简单,只要follow之前定制好的基线,就能保证新上线的应用或是新扩展出来的的基础架构的攻击面都是可控的。但是这个过程非常麻烦,当出现多云环境之后,另一个问题就出现了。同一套标准在一个单云环境下容易落实,但公有云和公有云之间对于某一些技术的实现上有差异,会导致在某一个云上可以实现的一些安全方式放到另一个云上去实现,会出现问题。
举个例子。
有位客户在AWS上定了一个标准,因为客户使用是AWS的kubernetes的EKS服务,在EKS服务上,应用是分不同的等级的,有一类应用,二类应用,三类应用。随着应用等级的提升,应用等级的级别越低,安全程度反而越高,他们定了一个标准,对于一类应用,要做到的安全级别是做到容器级的微隔离。但客当户选择另外一家云厂商做迁移的时候发现,一类应用迁移上去之后,没有办法做到容器级的隔离。这个时候订立好的标准在另一个云上无法实施。这其实是在多云场景下会遇到的问题。各个云厂商有一些通用性的标准,但是在技术的实践上有差别,一套统一的管理标准很难去落地,这就是我们现在公有云上存在的一些问题。