云计算·大数据 频道

CNCF 发布云原生安全白皮书中文版第二版

  近日又由云原生社区组织的《云原生安全白皮书》中文版第二版的翻译已完成并提交到 CNCF TAG Security 仓库,见:https://github.com/cncf/tag-security/blob/main/security-whitepaper/v2/cloud-native-security-whitepaper-simplified-chinese.md

  宗旨

  技术行业已经转向被看作“云原生”的开发和部署模式。与此同时,技术、产品、标准和解决方案的生态系统正在扩展,促使决策者及时了解最新的复杂设计。特别是 CISO 的角色,需要在这个动态的领域中阐明业务价值主张。与此同时,云原生模式也推动了消费模型的转变,促进了现代工作流程的应用。现代工作流程要求集成安全实践,例如敏捷方法论和 DevOps 流程。

  问题分析

  由于明确关注快速开发和部署,因此该领域内的安全问题很复杂。此外,在传统的基于边界的安全模型中,依赖于网络 IP 地址等静态标识符是不切实际的。这种复杂性要求我们进行范式转变以保护应用程序安全,放弃基于边界的传统方式,让安全和工作负载(基于标签和标记等属性和元数据进行标识)的联系更加紧密。这种方法可以识别和保护负载,满足云原生应用程序对规模的要求,同时适应不断的变化。这些范式转变需要在应用程序生命周期中增加安全控制的自动化和安全设计架构(例如,零信任)。安全实现的权衡仍然涉及组织内的多个利益相关者,并且显著影响开发人员和运营人员追求业务目标的生产力。云原生应用程序仍然需要开发、分发、部署和运行时操作,但是这种范式指定了新的安全机制,通过这些机制可以高效地实现这些目标。云原生开发可以建模为构成应用程序生命周期的不同阶段:“开发”、“分发”、“部署”和“运行时”。“云原生安全”与传统的安全方法不同,因为有一个巨大的机会,可以确保安全贯穿于这些不同阶段,而不是通过独立的安全管理干预来结束生命周期。这些概念、工具和过程的持续学习对长期采用和应用至关重要。

  生命周期阶段

  开发

  云原生工具旨在在应用程序生命周期的早期引入安全性。安全测试需要尽早识别合规性违规和错误配置,以创建短且可行的反馈循环,以实现持续改进。这种方法可以使安全故障遵循熟悉的工作流程,在管道中解决其他问题(例如错误修复或连续集成故障),然后才能将软件推向更深入的管道。这种模型的现代安全生命周期围绕遵循推荐设计模式的代码开发(例如 12 因素),并确保开发环境的完整性。

  分发

  软件供应链安全在支持更快软件迭代的模型中尤为重要。云原生应用程序生命周期需要包括验证工作负载本身的完整性以及工作负载创建和操作方式的方法。这个挑战被必要的、实际的和一致的使用开源软件和第三方运行时镜像(包括上游依赖的层)所放大。生命周期管道中存在的工件(例如容器镜像)需要持续自动扫描和更新,以确保免受漏洞、恶意软件、不安全的编码实践和其他不良行为的影响。完成这些检查后,将工件进行加密签名以确保完整性并强制执行不可否认性非常重要。值得注意的是,不可变的镜像二进制和镜像的不可变 URL 也非常适合于安全分发。

  部署

  在整个开发和集成发布阶段,应对候选工作负载的安全性进行实时和持续的验证,如,对签名的工件进行校验,确保容器镜像安全和运行时安全,并可验证主机的适用性。安全工作负载的监控能力,应以可信的方式监控日志和可用指标,与工作负载一同部署来完善整体的安全性。

  运行时

  云原生运行环境本身可以分解为一系列相互关联的具有独特安全问题[^1]的组件层次结构,例如硬件、主机、操作系统、网络、存储、容器镜像运行时和编排。容器运行时由不同的实现组成,用于各种隔离边界级别,例如共享内核、微型虚拟机沙盒和可信执行环境沙盒。选择满足预期安全要求的运行时非常关键。例如,对于在多租户环境中运行的不受信任的工作负载,可以考虑基于虚拟机的沙盒。对于隐私敏感的金融数据处理,像机密容器这样的可信执行环境(每个进程或虚拟机的内存加密硬件)可能值得考虑。在典型的云原生运行环境中,应用程序通常由几个独立的且单一用途的微服务组成,它们通过服务层抽象相互通信,容器编排层使其成为可能。保护这种相互关联的组件体系结构的实践包括确保只有经过授权的进程在容器命名空间内运行,防止和警报未经授权的资源访问尝试,以及监控网络流量以检测敌对入侵活动。服务网格是另一种抽象,提供了合并和补充有序服务的功能,而无需对工作负载软件本身进行更改(例如,API 流量记录、传输加密、可观察性标记、身份验证和授权)。

  推荐做法

  云原生安全旨在确保与传统安全模型相同或更高的勤勉、诚信、信任和威胁预防条件,同时融合了瞬息万变、分布式和不可变性的现代概念。在这些快速变化的环境中,为了确保安全结果,需要与开发流水线保持一致的自动化。组织应快速采用这些云原生概念,以帮助在其云原生旅程中创造价值驱动的安全结果。通过尽早将安全整合到开发生命周期中,甚至是通过互动式开发者培训更早地进行整合,安全组织可以实现预防性安全,而不是反应性安全(也可参见“9 Box of Controls”)。强烈建议组织根据相关攻击框架[^2]对安全堆栈进行评估,以明确防御堆栈涵盖哪些威胁。此外,组织需要采用能够左移安全[^3]的方法和方法论,实现 DevOps,并具有足够的灵活性以适应未来的技术进步。

  结论

  在组织中战略性地实施云原生安全时,可以在规模上为客户和开发人员提供高可用性、保证性、弹性和冗余性,以确保他们以预期的速度安全地访问所需资源。安全本身仍然是一个跨学科的领域,不能被隔离出来,也不能被视为纯粹的技术领域。开发人员、运维人员和安全人员必须合作、交流和协作,以继续推动该领域和行业的发展。与任何技术创新一样,真正推动社区和云原生安全发展的是那些充满激情踏上这一旅程的人们。

0
相关文章