暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【科普】DevSecOps是啥

达摩院首座 2021-11-25
1177

        Devops的概念在IT圈近乎深入人心,甚至大有出圈的趋势,而DevSecOps似乎鲜有人知,今天本座就跟大家来白活白活被誉为现代化应用架构最佳实践之一的DevSecOps。

        在传统的CI/CD管道中,开发人员完成分支开发任务并经历单元测试后,开始构建应用程序(主分支),然后部署到测试环境完成集成测试,再经历SIT, UAT环境之后,最后部署到生产。整个过程快速高效,如果测试代码都是自动运行的,过程甚至不用人为干预。

        但是这就上生产了吗,CISO会问安全怎么办,通常情况应用团队会在Devops之后加一个安全测试,以示对CISO的尊重。

        当然对于违反商业规范或安全法规的代价来说,应用推倒重建的代价似乎要小得多。的确如此,不过随着微服务化及容器化的建设深入,原来单体应用的独立安全审计变成了现在跨服务跨平台的复杂工作。

        而作为安全团队,所需技能也近乎成倍地增长了,他们需要了解云、熟悉容器,懂得微服务的分布并且掌握各种各样的测试工具。而最不公平是DevOps那头几乎不需要人为干预了,而安全审计依然全是人为工作,这就严重影响了最终服务交付/上线的时间。

        其实很多安全问题可以在上线之前发现的,包括:

  1.  过期的第三方依赖库

  2. 证书过期

  3. 敏感数据泄露风险

  4. Docker镜像漏洞

  5. K8S的错误配置

        如果能摊薄最后复杂的安全审计工作,减轻安全团队的压力,那就需要将这部分工作也纳入前面自动化Devops的流程中去,成为敏捷的一部分。

        这在实操过程中需要我们的开发人员同时具备风险意识,时刻警醒上述这五类安全问题。而此时的安全团队更多是作为领域专家创建安全策略,指导开发团队选择侦测安全问题的自动化工具,并且教授开发和运维人员如何使用这些工具。

        常用的安全自动化工具包括:

  1. 在代码提交阶段,检查“预提交钩子(Pre-Commit Hooks)”工具,如Talisman, git-secret, truffleHog和Git Hound;

  2. 在源码编译阶段,做安全分析的工具,如Dependency.Check, Requires.io, Retire.js;

  3. 静态应用安全测试工具,如Bandit, RIPS, Sonarqube等;

  4. 动态应用安全测试工具,如arachni, w3af, Wapiti等;

  5. IaC中的安全代码提供商,如OpenVAS, anchore, clair, Dockscan和openscan;

  6. 秘钥管理,如各云厂商的KMS, SSM等工具。

        融入了各阶段安全自动化DevOps虽然在流程上被拉长了,但是人为干预的工作却大幅度缩减了,通过赋能开发团队降低了上线后由于安全问题被问责或被返工的风险,即使不被返工,要知道在生产环境修复安全问题几同大海捞针。

        正因如此,将安全测试前置可以快速定位到问题所在,迅速在问题暴露到下一环节之前解决掉,我想这也正是DevSecOps之于敏捷开发的意义所在。

达摩院首座∣关注开源技术



长按,识别二维码,加关注

文章转载自达摩院首座,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论