写点什么

如何解决云原生架构中的安全问题?

  • 2021-08-19
  • 本文字数:3085 字

    阅读完需:约 10 分钟

如何解决云原生架构中的安全问题?

DevOps 原则和云原生应用程序开发流程的采用正在推动文化和技术变革,帮助企业变得更加灵活,加快市场开发速度。除了更快的开发,这些技术还提供了更好的用户体验、更灵活的管理、更高的可靠性和更低的成本。与使用云的应用程序相比,云原生应用程序是在云中构建和部署的。它们使用容器和微服务架构来提供更快的应用程序开发和交付,以及更大的灵活性。

 

IDC 预测,到 2022 年,90%的新企业应用程序将使用云原生应用程序开发流程、敏捷方法论和 API 驱动架构。根据一份调查报告,全球有大约650万活跃的云原生开发者,约有400万开发者使用无服务器架构和云方法。现在92%的组织在生产环境中使用容器。

 

云原生架构引入新风险

虽然好处引人注目,但云原生架构也引入了各种新型安全风险和潜在的漏洞源。现有的应用程序安全性方法并不是针对新范式设计的。相反,DevOps 团队需要一种新的方法来帮助他们更好地识别潜在风险,并使它们能够将漏洞管理集成到开发和交付流程中。

 

早期,软件开发被认为是一个线性过程,但云原生架构的兴起导致了高度动态的应用程序环境。在这里,变化是唯一不变的。根据研究,61%的组织认为他们的环境每分钟或者更短时间就改变一次。云原生、基于容器的环境的动态特性,以及跟上敏捷开发速度的需要,使得检测漏洞和管理应用程序安全更加困难。

 

根据一份调查报告,在 2020 年上半年期间,每天有160起针对蜜罐的攻击其中95%的攻击旨在劫持资源,而 5%的攻击旨在发起网络拒绝服务攻击。这个研究还表明,微服务、容器和 Kubernetes 为 89%的 CISO 创建了应用程序安全盲点。

 

检测和管理漏洞的挑战

传统的安全实践根本不适合这种环境。事实上,云原生架构从根本上破坏了应用程序的安全性。传统的安全漏洞管理方法无法跟上这些动态环境,因为传统方法只能提供单一时刻的静态视图,这使得它们的效率越来越低,并且容易出现盲点。具体有如下几个原因。

 

1.增量开发

 

云原生应用程序是使用不断更新并部署到环境中的连续代码流开发的。快速的软件开发周期允许微服务应用的每个组件都进行每日更新。这种增量开发为已知和未知的漏洞创建了一个大型的攻击面。安全团队可能会发现,在不降低发布周期的情况下保护这些部署是一项挑战。

 

2.位置的无常性

 

传统应用程序总是有一个连接的服务器或虚拟机(VM),这使得应用程序始终保持相同的 IP 地址和位置。但是,云原生应用程序既没有如此持久的位置,也没有任何清晰的边界。

 

在传统应用程序中,多个软件功能或进程会运行在一台虚拟机上。而现在,每个进程或功能都被打包为一个单独的容器,从而使每个实体暴露在泄露的漏洞中。它需要在整个开发生命周期中得到保护。

 

3.从持续运行到按需运行的转变

 

微服务的兴起见证了从持续运行应用程序到按需运行的快速转变。在这些环境中,根据使用情况,基础设施会开启和关闭来支持数字服务。

 

这些基础设施还允许每个组件独立地自动地调整。这虽然提高了应用程序的操作效率,但也使得用传统或手动方法来保护它们和管理漏洞变得几乎不可能。

 

4.缺乏优先次序

 

保护应用程序安全的传统方法主要侧重于在代码漏洞被利用之前识别和缓解代码漏洞。例如,在将应用程序放到生产环境之前,安全策略可能需要修复所有关键漏洞,只有这样,你才能进行下一步。

 

但是,基于涉及的相对风险和数千个漏洞的严重性来评估云原生应用程序既耗时又困难。此外,在处理云原生供应链和基础设施中的漏洞激增时缺乏优先级,会减慢开发速度,也不会让 DevOps 团队降低整体风险。

 

5.不全面的漏洞扫描

 

云原生应用程序中的漏洞扫描通常仅在预生产阶段进行。因此,错过生产阶段运行的内容会增加在云部署中运行有漏洞的库的风险。由于无法区分潜在漏洞和真实暴露,它们对每个可能的漏洞发出堆积如山的警报。由于假阳性的数量巨大,这增加了组织理解其暴露风险影响的难度。

 

6.漏洞的唯一性

 

云原生系统包含大量公有云和私有云、应用程序架构和云服务。每种架构模式都可能有其不同的漏洞和安全需求。安全团队需要了解这些复杂的攻击面,并找到保护每种不同架构的解决方案。

云原生安全的最佳实践

当涉及云原生应用程序时,安全性不能是事后诸葛亮。安全性必须集成到持续集成和持续开发流程中,而不是依赖于固定的解决方案和方法。采用基于风险的方法至关重要,但这并不是完整的解决方案。

 

一个完整的解决方案将这与各种其它安全层结合在一起,这些安全层超越了检测和评估,而转向了补救或缓解。这些措施包括调整安全性、在功能和容器级别应用外围安全性、保护应用程序依赖、强制执行最小角色和权限,以及利用共享的安全责任。

 

基于风险的方法

 

这种集成的实用安全性的首批实现之一可以是采用基于风险的方法进行云原生开发。这使得 DevOps 团队能够检测、评估和修复工件管道中的漏洞,作为开发过程中的一个集成组件。它还允许你对容器部署后的行为进行持续监控。

 

基于风险的方法允许你确定优先级。这个方法对漏洞进行打分,以评估每个漏洞的危险程度。全面的基于风险的方法必须确保在允许代码投入生产环境之前对风险进行分析和缓解。因此,安全控制必须转移到开发管道中,重点应该放在工件管道上。这种变化可以最小化组织的运行时攻击面。

 

边界安全

 

云原生应用程序的系统分为多个可调用组件,这些组件接受来自不同来源的事件驱动触发器。这为攻击者提供了更多的目标选择和许多恶意活动的载体。防范此类攻击的一个重要实践是使用为云原生环境构建的 API 和应用程序安全工具。除此之外的一般方法是在功能级别加强外围安全。识别由异常源触发的功能,并监控事件触发器中的异常。

 

在容器化环境中,必须确保多层次的安全。这可以包括编排器控制面板、物理主机、容器和运行单元。Kubernetes 等编排器的最佳安全实践包括隔离节点、对 API 服务器使用第三方身份验证以及限制和监控容器间的流量。

 

分配最低权限

 

由于云原生资源之间存在大量且频繁的交互,因此为每个容器分配唯一的权限组的能力为增强安全性提供了极好的机会。因此,如果云原生框架中的任何元素被破坏,它将造成最小的损害,并防止权限扩大到其它组件。

 

保护应用程序依赖项

 

云原生应用程序代码通常包含具有依赖关系的包。为了保护应用程序的依赖性,你需要特定的自动化工具,包括一个全面的开源组件及其漏洞数据库。

 

你还需要能够在开发过程中触发应用程序安全活动的云原生编排工具。通过连续运行上述工具,可以防止在生产环境中运行的函数或容器中包含有漏洞的包。

云原生应用将何去何从?

随着云环境变得越来越动态,组织必须确保应用程序的最大覆盖率,来帮助避免盲点,实时监测漏洞,并获取信息以评估风险。从长远来看,需要一种新的安全方法。Palo Alto Networks 产品副总裁 John Morello 认为,这些新方法包括:

 

  1. 保护应用程序编程接口(APIs)

  2. 探索新的云原生安全指标和文化

  3. 转向机器学习和开源软件

 

API 是连接微服务和容器的最常见的形式,而这正是黑客获取数据并将恶意软件引入系统的目标。不幸的是,API 本身是不安全的,并且会受到攻击,因为通过编程,它们很容易访问。因此,你需要一个好的安全模型和恰当的工具来保护这些微服务。

 

对于云原生架构的长期安全运行,Morello 强烈建议使用 DevOps 指标。因为从安全角度来看,最重要的指标不是环境中的漏洞数量,而是修补或修复这些漏洞所需要的时间。

 

检测和管理漏洞是一项复杂的劳动密集型任务。在一切都是代码的时代,安全自动化是一种强劲的趋势。它特别适用于检测错误配置和漏洞、升级组件、根据安全最佳实践自动进行代码评审,以及关闭受侵害的运行单元。

 

希望这些最佳实践能帮助你安全地过渡到云原生模型。


原文链接:

 

Detecting Vulnerabilities in Cloud-Native Architectures

2021-08-19 09:382582

评论

发布
暂无评论
发现更多内容

Python量化数据仓库搭建系列2:Python操作数据库

恒生LIGHT云社区

Python 量化

测试不趁早,“持续测试”搞不好

SoFlu软件机器人

DevOps 敏捷开发 自动化测试

16张图解锁Spring的整体脉络

4ye

Java spring 程序员 后端 签约计划第二季

爱奇艺TFServing负载均衡问题研究及改进实践

爱奇艺技术产品团队

百度商业大规模高性能全息日志检索技术揭秘

百度Geek说

软件架构

数仓开发详细剖析

五分钟学大数据

11月日更

Linux学习方法《Linux一学就会》Centos8软件包的管理与安装

侠盗安全

Linux linux运维 运维工程师 云计算架构师

KubeMeet 深圳站回顾:应对云原生边缘计算落地挑战

阿里巴巴云原生

阿里云 Kubernetes 云原生 线下活动

如何使用 Java 代码给图片增加倒影效果

汪子熙

Java API 图片处理 11月日更 Java图片

服务API版本控制设计与实践

vivo互联网技术

API 服务器端开发 客户端开发 迭代

Elasticsearch云生态下的开源共生之路

大咖说

云计算 elasticsearch 开源

移动计算云分布式数据缓存服务,实现快速可靠的跨区域多活复制

华为云开发者联盟

可用性 云数据缓存 跨区域多活 无冲突复制数据类型CRDT

大批量更新数据mysql批量更新的四种方法

大数据技术指南

11月日更

云原生体系下 Serverless 弹性探索与实践

阿里巴巴云原生

阿里云 Serverless 云原生 弹性 SAE

react源码解析3.react源码架构

buchila11

源码 React React Hooks react源码

内存数据库的分布式架构提升之道

鲸品堂

数据库

直播预告|数以智用——大数据应用探索与实践

智联卓聘

大数据 数据管理 线上沙龙

如何在P4中管理Unreal Engine 代码

龙智—DevSecOps解决方案

版本控制 游戏开发 版本管理 游戏引擎 虚幻引擎

java开发之DOS命令学习及运行环境配置安装

@零度

java开发学习 DOS命令学习

大厂算法面试之leetcode精讲10.递归&分治

全栈潇晨

LeetCode 算法面试

大厂算法面试之leetcode精讲9.位运算

全栈潇晨

算法 LeetCode

Perforce用户文章转载:每个游戏从业者都应该学学P4

龙智—DevSecOps解决方案

版本控制 游戏开发 版本管理 perforce 游戏厂商

架构实战营模块五作业

孙志强

架构实战营

react源码解析4.源码目录结构和调试

buchila11

React React Hooks

PackML从会到不会——状态机(1)

陈的错题集

标准化 PackML

前端开发之JavaScript优化

@零度

JavaScript 大前端

1 分钟 Serverless 极速抽盲盒,自己部署自己抽!

阿里巴巴云原生

阿里云 Serverless 云原生

阿里云 Serverless 助力企业全面拥抱云原生

阿里巴巴云原生

阿里云 Serverless 云原生 企业

dart系列之:时间你慢点走,我要在dart中抓住你

程序那些事

flutter 架构 dart 程序那些事 11月日更

并发编程中,你加的锁未必安全

华为云开发者联盟

线程 高并发 并发 线程安全

应对 Job 场景,Serverless 如何帮助企业便捷上云

阿里巴巴云原生

阿里云 Serverless 云原生 函数 Job

如何解决云原生架构中的安全问题?_架构_KASHYAP VYAS_InfoQ精选文章