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

Posted 华为云开发者社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理清逻辑,确保云原生时代应用开发的全生命周期安全相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

从大学到工作,毛哲文一直和安全打交道,从操作系统安全、应用层的安全、移动应用安全到云计算安全、web应用安全,毛哲文一点点体会到了安全的趣味性,以及蕴藏在其中的安全架构之美。

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

“虽然研究的领域不一样,但最基本的安全原理、安全访问控制模型不会有太大差异。当你从安全的本质、安全架构的视角去解决各种安全问题,即便这些问题在系统中的层级不同,但各个层级之间的关联性、依赖性都会非常强。安全架构与安全能力的抽象,会让复杂的问题变得简单。”

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

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

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

基于多年经验,毛哲文也摸索出了构建安全解决方案的通用路径。他强调:“安全解决方案不能脱离具体的业务,同样也离不开安全架构及软件架构。

做安全,首先需要知道具体的业务特征,据此来制定相应的、具体的安全目标。因为只有清楚具体的业务场景、业务的核心资产,才能明确安全“机密性”保护的目标对象。在此基础之上,更好地做安全威胁分析,

“用安全的语言来讲,做安全设计要清晰地知道系统中的主体是谁,客体是谁,确保正确的主体正确地访问客体资源。”

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

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

安全架构可以帮助我们系统性地看待和解决安全问题。一个系统无论有多复杂,都能从安全架构的层面进行抽象、建模,然后实施具体的安全策略,做到系统性的安全完备。即便有局部的漏洞发生,也是可以通过漏洞的修复来弥补,从容应对持续的攻防对抗。另外,如果系统同时还配备安全感知、安全检测、安全恢复能力,系统也能更好地应对局部的风险,让防守变得更加积极。

相反,如果一个系统没有完备的安全架构设计,只是试图从局部解决安全问题,它就无法应对持续的攻防对抗过程,系统的安全也无法进行完备性证明。

综上,设计、开发、交付、运维一个高安全质量的系统是个复杂的系统工程。毛哲文强调,“安全技术能力和安全工程能力是融合是至关重要的。”

在互联网时代,应用现代化的目标就是让开发者更多的聚焦业务逻辑,让应用快速迭代,从而满足企业的竞争力要求。这便对基础平台以及配套应用生产工具提出更高的安全要求,更加注重安全技术和安全工程能力的完美融合。

也即应用生产和运行的基础平台要具备完备的安全技术能力,如隔离与访问控制技术、机密性保护技术、完整性保护技术、安全韧性技术等。同时,平台也要有一套完备的安全工程能力,让应用在生产和运行过程中能快速敏捷的落地,并满足高安全的质量要求。

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

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

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

在如何支持云原生安全方面,可以先从目标切入。云原生安全的目标依旧是应用的机密性、完整性,以及服务的可用性。要确保应用的整个生命周期安全可控,以及应用的合规性,例如,个人隐私数据的合规使用等。

云应用安全逻辑视图

应用的安全可以从三个维度展开,分别是应用安全,应用的运行安全,应用的安全运维。

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

应用的安全贯穿应用整个生命周期,以华为云DevSecOps解决方案Devcloud为例,它包含了软件的安全工程能力,通过解决方案让安全顺利左移(指应用在出生的过程中就是安全的,而不是安全后补),降低安全门槛,让安全能够敏捷落地于应用的生产、交付、运行过程。

下面,从应用的安全开发、编译构建、测试、交付到运行,详细解读如何进行安全能力的设计。

安全开发

在应用的开发过程中,提供对应的安全开发框架,框架包含统一的认证能力、数据安全管理能力、接口安全能力等,降低开发中的安全成本和安全质量。在代码提交的过程中,可以设置代码提交门禁,确保提交代码的质量。

安全编译构建

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

安全测试

安全测试可以融入到应用生产的整个过程:从安全测试的设计、安全测试用例的生成、安全用例的执行,包含独立的代码测试、漏洞测试等,都可以融入应用的生产和交付过程中。

比如提供代码级的安全测试工具,既能检查代码的安全,并能给出对应的修复建议。

另一个要关注的是接口安全,对接口的设计到运行进行安全监控。例如:在设计阶段进行接口认证、鉴权、参数安全、协议安全等设计。测试用例和测试执行便与之配套展开。还可基于API级,辅助生成完备的接口测试用例,提升接口级安全。

安全交付

应用的交付应该有基本的安全检查,以及完整性保护机制,确保交付的软件在存储和传输的过程中完整性没有被破坏。

安全运行

安全运行阶段需要具备安全的运行环境,以及安全感知响应和事后的恢复能力。

安全可视化

应用的生命周期能够以看板的形式进行安全过程的可视化,以及运行状态的可视化。

最后,毛哲文强调了工具链的安全问题。他指出,云原生安全对软件工具链本身的安全提出了要求,确保软件制品在整个生产的过程中是安全的、可信的、可追溯的。尤其是很多应用基于大量的开源软件,不仅要保证自研代码的安全性,同样要保证应用依赖的开源的安全性。

虽然安全问题的解决道阻且长,但毛哲文也相信行则将至,在不断的攻防对抗中,安全工程师也能够更加从容自得。

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

以上是关于理清逻辑,确保云原生时代应用开发的全生命周期安全的主要内容,如果未能解决你的问题,请参考以下文章

云原生2.0时代

云原生时代,如何“玩转”容器安全?

云原生时代,微服务如何演进?

云原生安全关键要素

持续布局云原生,小佑科技获九合创投数千万Pre-A轮融资

服务网格:云原生服务治理与流量管控技术解读