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