OpenShift 既可以承载无状态应用,如 Web 类应用;也可以承载有状态应用,如 redis 等。从安全角度看,Web 类应用由于直接对外暴露,显然更容易受到黑客攻击。因此目前在 DevSecOps 引用的安全工具中,大多也是针对于 Web 类应用展开的。
DevSevOps 的 Web 安全工具大体分为静态安全工具和动态应用安全工具。静态安全工具,主要是通过分析或者检查 Web 应用程序源代码的语法、结构、过程、接口等来检查程序的正确性。静态安全工具使我们能在开发阶段(而非应用开发完成后)探测出源码中的安全漏洞,从而大大降低修复安全问题的成本。
相比于静态安全分析工具在开发阶段发现问题,动态应用安全工具则是在 Web 应用运行时模拟黑客攻击,从而无需源代码即可识别安全漏洞,并确定组织的实际风险。
在开源界,静态应用安全工具如 SonaQube,动态应用安全工具如 OWASP(Open Web Application Security Project)都被广泛使用。
我们看一个DevSecOps的例子:
上图所示模型基于 OpenShift 3.11,通过 Jenkins 实现 Pipeline 管理。整个 DevSecOps 包含如下 7 个大的阶段: 1.启动 pipeline 后,首先将从 git 存储库中获取 JavaWeb 应用程序源代码。 2.调用 maven 进行代码构建。 3.调用 JNnit 运行自动化测试。 4.使用 SonarQube 执行静态代码分析扫描,将生成的工件(jar 包)推送到 Nexus 进行存储。 5.通过 OpenShift Source to Image 构建包含应用程序的容器映像,并将其推送到红帽企业级镜像仓库 Quay,以便进行额外的 OpenSCAP 安全扫描。 6.将应用容器镜像部署到 OpenShift,以便 OWASP ZAP 可以扫描该应用程序的 Web 漏洞。 7.根据 OWASP ZAP 扫描的结果,引入人工判断工作流,决定将应用自动部署到 Stage 和 Prod 环境。