【51CTO.com快译】很多企业如今正在采用云原生设计模式,以使其业务运营实现现代化,并加快上市时间。云原生架构结合了微服务、容器、自动化持续集成(CI)/持续交付(CD)管道、容器编排、统一可观察性和云计算基础设施等技术。然而,现代云计算服务面临着数据泄露、应用程序漏洞、帐户劫持、API不安全、恶意内部人员、数据丢失、拒绝服务和凭证管理不足等安全风险。
为了防范这些威胁,企业应该对其数据和服务采用零信任模型,并采用DevSecOps在整个软件开发生命周期(SDLC)中集成安全实践。企业正在使用Docker等容器技术来简化其云原生应用程序的打包和部署工作流。Kubernetes是一种流行的容器编排系统,用于自动化容器化应用程序的部署、扩展和管理。
采用DevOps原则使企业团队能够快速部署和发布功能,但它也给云原生应用程序的安全性带来了挑战。因此,需要将安全实践引入DevOps。
图1 云原生安全的四个C
1.云原生安全的四个C
云原生安全的四个C分别是云计算(Cloud)、集群(Clusters)、容器(Container)和代码(Code)。如图1所示,每一层都受益于外部安全层,代码层是构建在云计算、集群和容器层之上的。以下简要介绍每一层保护架构的作用:
- 云计算——它是所有安全层的基础,每家云计算提供商(如AWS、Microsoft Azure、谷歌云、IBM Cloud)都为正在运行的工作负载提供云计算基础设施的安全性。
- 集群——这一层的主要安全问题是RBAC授权、机密管理、pod安全策略和网络策略,Kubernetes是标准操作工具。
- 容器——这一层推荐的安全态势是容器漏洞扫描、镜像签名和禁止特权用户。
- 代码——企业对这一层拥有最大的控制权,并且可以实施安全建议,例如执行静态代码分析、采用DevSecOps实践,以及使安全成为持续集成(CI)/持续交付(CD)管道的一部分。
2.云原生安全挑战
由于发生新冠疫情,很多企业采用远程工作模式,因此保护数据和系统的需求变得比以往任何时候都更加重要。“零信任”安全模型可以改善企业的总体安全状况,特别是如果他们计划让其员工开展远程工作或采用混合工作空间环境。其基本原则是避免盲目信任安全参数(企业网络)内的所有内容,并始终对尝试访问网络的每个用户、应用程序和设备进行身份验证和授权——无论是企业内部还是外部。
构建零信任架构的关键技术和原则是:
- 多因素身份验证。
- 身份和访问管理。
- 设备清单的可见性。
- 防火墙管理。
- 数据分类和加密。
- 最低权限访问。
- 持续网络流量监控。
3.云原生应用安全
容器可以轻松打包和部署应用程序的运行时依赖项,并帮助解决开发和生产环境之间的配置管理问题。然而,与传统的威胁检测和漏洞扫描安全机制相比,容器的运行是暂时的,通常使用寿命较短,这使得容器的安全性具有挑战性。
(1)容器安全
开箱即用的容器提供了一定程度的隔离和安全性,但同时,它们也带来了一系列安全问题,例如内核漏洞、拒绝服务攻击、中毒图像、容器泄漏和机密泄露。减少容器攻击面至关重要,因为一个容器中的问题可能会影响同一主机上运行的其他实例。应用最小权限原则并限制用户对容器的访问是很好的做法。需要一个秘密管理解决方案来安全地存储凭证,并允许容器在操作期间访问敏感数据。
此外,容器镜像是不可变的,因此容器镜像中的任何漏洞都会在镜像的生命周期内持续存在。因此需要确保定期扫描映像以查找漏洞,作为持续集成(CI)/持续交付(CD)管道的一部分,需要使用最新补丁进行更新,并从受信任的注册表中提取。在容器化环境中运行云原生应用程序时,企业需要完全了解集群配置,并进行适当的监控。
(2)安全责任共担模型
在公共云中,安全是云计算服务提供商与其客户之间的共同责任。其责任的区分可以被视为“云平台”的安全与“云”中的安全。云计算提供商保护运行服务的整体基础设施,并处理物理和网络层的操作问题。另一方面,客户负责他们的业务逻辑的安全,包括应用程序代码和数据层保护。
图2说明了微软公司的责任共担模型,包括客户和微软公司之间针对在内部部署设施和云平台中运行的工作负载的责任范围。
图2微软公司的责任共担模型
4.自动化云原生安全
DevOps方法侧重于提高开发和运营流程之间的协作和透明度。然而,在追求快速上市的过程中,安全实践不能被忽视并进一步推向下游。这就是DevSecOps发挥重要作用的地方,它在开发周期的早期结合了运营和安全措施。
(1)左移安全策略
在开发过程中转移安全性至关重要,因为企业不希望安全性成为事后的想法。与其相反,企业应该将安全放在首位来设计和构建系统。在生产中识别和修复安全漏洞既昂贵又耗时,因此将安全性左移的目标是在开发过程中实施安全实践并执行安全测试——而不仅仅是在生产之前部署。企业的DevOps管道应该允许以更高的质量和速度部署软件,同时遵守安全最佳实践。
大多数漏洞是在应用程序级别引入的,如果企业的应用程序包含漏洞,网络攻击者可能会破坏其系统。静态应用程序安全测试(SAST)和SAST工具使企业能够扫描整个代码库并执行与安全相关的规则,以检测SQL注入、跨站点脚本、拒绝服务和代码注入问题等漏洞。此外,作为持续集成工作流的一部分,可以对每次代码提交执行静态代码分析,并实施自动化漏洞检测和合规性报告。
(2)将安全性集成到持续集成(CI)/持续交付(CD)管道中
如图3所示,将安全控制集成到企业的自动化管道中是成功交付高质量软件的关键。DevOps管道具有将更改部署到其环境中所需的权限,因此必须在其周围设置严格的安全护栏。开发人员可以为他们的持续集成(CI)/持续交付(CD)管道利用多种开源和商业安全工具。其目标是及早发现安全问题,并且更容易实施诸如遵循安全编码实践、同行评审过程和执行静态代码分析等低摩擦的措施。
如果企业使用的是开源软件或第三方数据库,应该拥有用于漏洞管理和威胁检测的工具。在企业的管道中实施轻量级渗透测试有助于增强安全状况——例如,像OWASP ZAP这样的动态应用程序安全测试(DAST)工具在将代码部署到生产之前充当安全门。除了扫描企业的容器之外,还可以考虑在部署到云平台之前扫描其基础设施代码。
图3在DevOps管道中构建安全性
结论
随着在DevOps中构建安全性的文化转变,企业的开发团队有额外的责任来自动化应用程序安全测试,并将其集成到发布管道中。就安全原则和最佳实践对开发团队进行培训有助于弥合知识差距。此外,与IT安全团队密切合作的开发团队可以帮助缓解软件开发生命周期(SDLC)早期的安全漏洞,并在应用程序开发和安全场景中实现左移概念。
开放式Web应用程序安全项目(OWASP)是一个促进应用程序安全机制的非营利性全球社区。因此建议在云原生领域工作的开发人员熟悉OWASP十大应用程序安全漏洞、黑客如何利用它们以及消除这些风险的方法。大多数漏洞(如代码注入、敏感数据暴露、身份验证中断、安全错误配置、跨站点脚本编写和日志/监控不足)都可以通过安全编码实践和严格的代码审查清单来解决。
原文Securing Cloud-Native Applications,作者:Samir Behara
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】