云原生开发安全
云原生应用程序的安全性需要在整个生命周期中应用。 “开发”是这个周期中的第一步,它导致创建基础设施即代码、应用程序和容器清单等工件,这些工件将用于部署和配置云原生应用程序。因此,这些工件已被证明是许多攻击向量的来源,并且可以在运行时中被利用。下面的部分详细说明了需要在此阶段实施的各种安全工具、流程和检查,以显著减少在运行时部署的应用程序的攻击面。
开发阶段的安全检查
在开发应用的过程中,安全加固是非常重要的。这意味着安全要求必须在软件开发的早期引入,并像其他设计要求一样对待。这些要求通常是基于围绕风险和合规性的业务需求的,可能是威胁建模练习的结果。在早期阶段解决这些需求可以避免在后续生命周期中重新做工作,否则会减慢 DevOps 管道的速度并增加总体成本。DevOps 团队还必须利用专门的工具在这些应用程序部署之前识别安全配置错误和漏洞。这些工具必须可以与 DevOps 团队使用的现有和熟悉的工具无缝集成,以在敏捷与安全之间实现协同而不是阻碍协同。例如,工具需要在开发人员 IDE 或提交拉取请求时执行基础设施即代码模板和应用程序清单的扫描。它们必须提供丰富和上下文的安全信息,可以由代码或应用程序组件的所有者在开发管道的早期快速,轻松地采取行动。采用这些步骤可以确保没有已知的漏洞或高风险配置。
团队应该部署专用的开发,测试和生产环境,为基础设施和应用程序开发人员提供隔离环境来开发,测试和部署系统和应用程序,容器基础映像,虚拟机黄金映像和启动非功能测试。
测试开发
为了针对业务关键、威胁较高、历史遗留问题的代码和基础设施进行测试,开发人员、运维人员和安全人员应该建立测试流程。使用威胁建模可以识别代码中高风险和高影响力的部分,为测试流程提供高回报率的投资(ROI)。测试流程包括部署、操作系统、基础设施和数据库加固、应用程序测试(静态和动态源代码测试,如模糊测试、容器配置)、集成或系统测试(接受应用程序和基础设施组件及其交互)和冒烟测试(针对实时系统进行部署后检查)。测试作者应该可以访问全面的开发和测试环境,使他们能够在减少持续集成(CI)反馈循环的同时进行快速测试开发。系统测试套件应该在本地运行,并在共享测试环境内提供。
代码审查
即使是对工作负载进行微小修改或对已部署的基础架构进行更改,也可能导致严重的安全问题。为了减轻此类意外后果的风险,团队应该在进行代码审查之前使用“四眼原则”(即在 git 工作流程中使用拉取请求)。