理清逻辑,确保云原生时代应用开发的全生命周期安全

作者: 晋座

更新时间:2022-03-26 14:31:01

1804 阅读

摘要:正所谓“道高一尺魔高一丈”,不断的攻防对抗中,安全设计者也面临很大的挑战。华为云MVP毛哲文是一个偏向于安全防守的安全工程师,他认为,“攻防之间要做到平衡,知己知彼才能做一个好的安全解决方案。”

本文分享自华为云社区《华为云MVP毛哲文:理清逻辑,确保云原生时代应用开发的全生命周期安全》,作者: 我们都是云专家。

网络安全问题猛于虎,一个小的漏洞可能会导致业务系统全线崩溃,损失上千万。另一方面,网络安全又相对非常复杂,既有形形色色的安全技术,又有各式各样的安全工程能力。

正所谓“道高一尺魔高一丈”,不断的攻防对抗中,安全设计者也面临很大的挑战。华为云MVP毛哲文是PaaS产品的首席安全专家,她认为,“攻防之间要做到平衡,知己知彼才能做一个好的安全解决方案。”

下面一起跟随这位在安全领域耕耘多年的技术老兵,看如何根据业务构建安全方案,将安全技术系统性的落地。

网络安全问题千差万别,但核心是相似的

从大学到工作,毛哲文一直和安全打交道,从传统操作系统安全到应用安全解决方案,从移动操作系统安全到移动应用生态安全,再从云计算安全到云应用生态安全,毛哲文体会到了安全的趣味性,以及蕴藏在其中的安全架构之美。

在一系列与安全相关的工作中,毛哲文总结:

“虽然研究的领域不一样,但最基本的安全模型不会有太大差异。就像当谈到OS安全时,往往讲到Biba模型及BLP模型。当你从安全的本质、安全架构的视角去解决形形色色的安全问题时,即便这些问题在系统中所处的层级不一样,也不会觉着安全问题有太大的差异性。而且你会发现系统各个层级之间的安全关联性、安全依赖性都会非常强。总之,安全架构与安全能力的抽象,会让复杂的问题变得简单。”

也就是说,不同领域的网络安全问题表面看起来千差万别,大相径庭,但往往要解决的核心问题又是高度相似。

被信息安全领域广泛应用的安全目标是CIA,即机密性、完整性、可用性。只是不同领域和不同行业对具体的安全目标解读会略有不同。比如对一个企业级应用来说,“机密性”更多强调的是应用的业务数据只能被应该访问的人/应用/服务所访问;而对于一个移动终端系统应用来讲,“机密性”往往更侧重于对终端用户个人数据、个人隐私的保护能力。

从业务、架构看安全解决方案的实施

毛哲文强调:“网络安全解决方案不能脱离具体的业务,同样也离不开安全的软件架构。”

做网络安全,首先需要知道具体的业务特征,据此来制定相应的、具体的安全目标。只有清楚具体的业务场景、业务的核心价值资产,才能明确网络安全所要保护的目标对象。在此基础之上,才能更好地做安全威胁分析,做对应的安全设计。用安全的语言来讲,做安全设计要清晰地知道系统中的主体是谁,客体是什么,然后确保只有正确的主体才能访问可以被访问的客体资源。

毛哲文提到的另一个关键是安全架构。

安全要解决的往往不是局部性的问题,但一个局部性的问题又会导致整个安全防守系统的失效。所以攻和防的对抗往往处于一个不对等的地位。正因如此,从防守方来看,如何将一个复杂系统做到系统性的安全,安全架构就显得尤为重要。

安全架构可以帮助我们系统性地看待和解决安全问题。一个系统无论有多复杂,都能从安全架构的层面进行抽象、建模,然后实施具体的安全策略,做到安全的系统性和完备性。即便有局部的漏洞发生,也可以通过漏洞的修复来弥补,从容应对持续的攻防对抗。另外,如果系统同时还配备安全感知、安全响应、安全恢复的安全韧性能力,系统也能更好地应对局部的风险,让防守变得更加积极。相反,如果一个系统没有完备的安全架构设计,只是试图从局部解决安全问题,它就无法应对持续的攻防对抗过程,系统的安全同样也无法进行完备性证明,软件便往往以生命的结束而告终。

安全架构是软件具备系统性安全的必要前提,但依旧不能保证生产出来的软件就是安全的,例如,代码质量会严重影响最终产品的安全质量;软件自身满足了安全质量,但软件的运行环境安全又同样会影响软件的安全结果。设计、开发、交付、运维一个高安全质量的系统、服务或应用,是个非常复杂的系统工程。毛哲文强调,“安全技术能力和安全工程能力的融合是至关重要的。”

在云原生2.0时代,应用现代化的目标就是让开发者更多地聚焦业务逻辑,让应用快速迭代,从而满足企业的竞争力要求。这便对配套的应用生产工具以及基础的运行平台提出更高的安全要求,安全技术和安全工程能力的完美融合将成为应用生产工具和平台的核心竞争力。即应用生产和运行的基础平台需要支撑和具备完备的安全技术能力,如隔离与访问控制技术、机密性保护技术、完整性保护技术、安全韧性技术等,同时,也要求DevOps平台有一套完备的安全工程能力,让应用在生产和运行过程中能快速敏捷地落地安全,满足软件的安全质量要求。

毛哲文以云原生安全为例,详细谈了谈如何保证应用的全生命周期安全。

云原生下,如何确保应用全生命周期安全?

当下云原生2.0正在加速改变每个行业中的各种组织,因为它能使这些组织运行的更加快速、更灵活、更加智能化。华为一直致力于云原生的现代化能力,为云原生应用的生产打造高效、安全等核心竞争力,确保客户能快速生产,部署,运维安全、合规的应用。

针对应用的安全,可以抽象为三个维度,分别是应用安全,应用运行环境安全,应用安全运维。确保应用在这三个维度是安全可控的,并满足合规要求。

云应用安全视图

其中,应用安全通常要包含正确的认证、鉴权机制以及最小的权限管理,即正确的访问控制,确保正确的人/应用/服务才能访问该应用的数据,或者使用本应用提供的服务。应用运行环境安全囊括了网络安全、OS安全、容器安全、中间件安全等基础设施安全。安全运维则包括安全感知、安全响应、安全恢复等安全韧性能力。

应用的安全贯穿应用整个生命周期,以华为云DevSecOps平台DevCloud 为例,它将华为多年积累的安全技术能力和安全工程能力进行深度融合,通过解决方案让安全顺利左移,确保应用在出生的过程中就是安全的、可信的,降低安全门槛,端到端提供安全设计开发能力、自动化测试能力,帮助客户快速构建端到端的研发体系,让安全能够敏捷落地于应用的生产、交付、运行过程中,更好更快更安全地支持多云多中心的分布式架构。

安全设计与开发:在应用的开发过程中,提供安全设计能力,其中也包括安全合规设计能力;同时提供安全开发框架,包含统一的认证能力、数据安全管理能力、接口安全能力、web安全开发框架等;提供全量的代码检查能力,同时也支持在代码提交过程中,设置代码提交门禁,确保提交代码的质量,并包含多种语言的支持,对代码进行安全检查并针对问题提供修复及建议。降低整个设计与开发过程的安全成本,提升安全设计及代码的安全质量。

安全测试:安全测试可以融入到应用生产的整个过程,从安全测试的设计,到用例的生成、执行,包含代码检测、漏洞检查等,都可以融入应用的生产和交付过程中。另一个要重点关注的是接口安全,包括接口的安全设计、安全运行、安全监控。例如:在设计阶段进行接口认证、鉴权、参数安全、协议安全等设计。测试用例和执行与接口设计实现自动化生成和适配,快速提升接口级安全。

安全编译构建:编译构建阶段可以承载比较多的安全活动,包括构建前的代码检查、深度开源漏洞检测、隐私合规扫描、安全编译选项等等。

安全发布:可配置相关安全门禁,如漏洞门禁等,同时包括病毒扫描、关键资产检查及软件签发过程,确保最终软件在交付过程中是安全的、完整的。

安全运营与运维:安全运行阶段需要匹配稳定的、安全的运行环境,配套持续的安全监控能力,做到安全感知、响应和事后的恢复能力。

安全度量与可视化:制定相应的安全度量标准,通过整个应用生命周期中的平台数据,可以在看板里展示服务生命不同环节中的安全度量结果,做到对应用的安全状态一目了然。应用的生命周期能够以看板的形式进行安全过程的可视化,以及运行状态的可视化。

最后,毛哲文强调了软件工具链的安全问题。她指出,云原生安全对软件供应链的安全提出了更高要求,确保软件制品在整个生产过程中是可追溯的、安全的、可信的显得至关重要。尤其很多应用的开发基于大量开源软件,不仅要保证自研代码的安全性,还要保证应用所依赖的开源软件的安全,同样需要保证软件生产过程的安全性。华为一直都非常重视软件供应链的安全,并在工具链上构建全量能力,除了保证自研代码安全、开源依赖安全的能力之外,同时也保证整个软件生产和部署过程是可追溯、可审计的,包括软件供应链自身完整性保护,保证整个过程满足可信要求。

 

点击关注,第一时间了解华为云新鲜技术~

版权声明:本文著作权归作者【晋座 】所有,不代表本网站立场。

侵权请联系:root_email@163.com

相关推荐