01
引言
当前,数字化转型甚嚣尘上,应用程序的终端用户越来越重视效率与便捷性。为了满足用户需求,各组织纷纷拥抱DevOps开发模式和云平台,采用虚拟化的基础设施取代堆放在公司数据中心内的物理服务器,以提高开发和更新应用程序的效率。因此,在云上运行的新兴应用程序数量出现了显著的增长。
然而,对攻击者而言,DevOps开发模式下应用程序的开发速率、更新频率和云的可访问性共同组成了一个诱人的攻击面;启用DevSecOps模式以提高应用程序的安全性迫在眉睫。
尽管DevSecOps有其重要性,它更侧重于保护应用程序本身的安全,且并不能确保软件供应链中供应过程的安全。软件供应链是由人员、流程、依赖关系和工具等参与开发应用程序的多个部分组成。保障软件供应链的安全是加强现代应用程序安全的基础。一旦防护缺位,供应链攻击就有可能瞒天过海,对应用程序供应商和用户造成巨大伤害。
现代分布式应用程序使用云原生架构,通过“基础架构即代码” (IaC) 依托于软件定义的基础架构。IaC以编程方式代替了繁琐、易出错的手动方式。在代码中定义基础架构配置能将DevOps原则应用到诸如版本控制和持续集成/连续交付(CI/CD) 等测试和部署过程中。此外,IaC支持在不同位置甚至跨项目部署相同的工作负载,并能够创建互相分离但几乎相同的环境,用于开发、测试、预发和生产。通过IaC,DevOps团队可以更快速、更高效地自动化云资源部署并复制环境,从而提高速度和一致性,降低应用程序开发成本。
02
优点 VS 风险
与IaC的诸多优点相伴而来的是显著的风险。许多对云服务的攻击都是通过隐藏在大量基础设施代码和配置文件中的错误配置实现的。目前,IaC的使用已演变出横跨混合云环境的能力,同时支持本地部署和多云环境部署。复杂的部署环境加上人为问题,导致编码错误配置很容易被忽略。进一步地,未被检出的基础架构代码或YAML文件的错误配置会频繁在应用程序环境之间被复制和共享,致使小错误一步步积聚成为更大的运行时攻击面漏洞。此外,IaC是用说明性语言编写的,故而逆推门槛较低;攻击者可以借此更容易地确定资产的位置以及如何访问它们——当IaC包含安全性错误配置时,后果将是毁灭性的。可见,未检测到的IaC代码篡改可能与应用程序代码篡改一样具有破坏性。
为了降低使用IaC的内在风险,IaC安全扫描至关重要。它可以检查基础设施代码和配置文件以发现脆弱的云基础设施资源:对于可能暴露机密的公司知识产权(IP)和客户数据的错误配置,开发人员和DevOps工程师可以在Git合并请求期间,或在可能配置错误的代码进入主分支之前扫描IaC代码的预提交。
将IaC扫描集成到CI/CD流程中,可以确保基础设施代码和配置尽早在整个DevOps管道中进行审计。安全左移、实时精准识别问题能帮助开发人员在问题进入生产阶段之前修复错误配置。不仅如此,扫描被添加到开发人员的工作流中后,将有助于落实安全的基础设施编码实践,并培养一种安全意识的文化。
IaC安全程序的一个必要部分是检查硬编码密码,如基础设施代码和配置文件中的SSH密钥、API令牌和密码。如果这些密码无意中嵌入到代码中并暴露出来,实际上相当于把软件工厂的密钥交给了攻击者。比如证书暴露后,居心不良者就可以使用这些密钥关闭服务、窃取IP或上传恶意软件。保护硬编码密码的最好方法是通过在提交部分合并到主分支之前进行扫描,来防止它们进入版本控制系统。
IaC安全还应确保在对IaC代码进行更改时有合适的检查机制;一般来说,IaC代码的更改频率不像应用程序代码那样高。然而,云基础设施环境是高度动态化的,并且在部署后会发生未经批准的生产更改。这些意外的更改可能会产生配置漂移,造成测试环境和生产环境脱钩,从而导致配置随着时间的推移而偏离其安全状态。识别导致漂移的配置变化可以避免门户洞开。
IaC安全程序可以确保组织遵循行业最佳实践、自定义规则或内部策略。此外,每个云和资源可能有自己的一套安全最佳实践和相应的遵从性基准测试。各组织还可以执行集于其基础设施和业务遵从性指南所特有的策略。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!