目录
一、概述
二、AWS DevSecOps实施原则
2.1 尽早采用安全测试,加速问题反馈
2.2 优先考虑预防性安全控制
2.3 部署检测性安全控制时,确保有与之互补的响应性安全控制
2.4 安全自动化
2.5 总结
三、AWS DevSecOps关键组件
3.1 关键组件
3.2 关键安全组件
3.3 总结
四、AWS DevSecOps平台架构
4.1 AWS DevSecOps平台架构图
4.2 安全与流程融合过程
4.2.1 源码提交
4.2.2 工程构建
4.2.3 安全检测
4.2.4 发布
五、总结
一、概述
亚马逊云AWS也是较早开展DevSecOps实践的头部企业之一,在2017年AWS的技术博客中就曾讨论如何利用AWS Pipline构建DevSecOps平台能力。下面,带大家一起来了解一下AWS的DevSecOps平台架构。
二、AWS DevSecOps实施原则
2019年AWS的公开演讲中,蒂姆·安德森(Tim Anderson)讨论了AWS DevSecOps实施原则,其主要内容如下:
2.1 尽早采用安全测试,加速问题反馈
这和DevSecOps安全左移的理念一致,AWS意图通过安全测试的尽早加入,减少代码进入发布管道后才发现安全问题带来的返工成本。通过建立安全测试机制保障安全问题在研发早期发现。
2.2 优先考虑预防性安全控制
这一条原则还是讨论安全左移的重要性,AWS意图通过引入预防性安全控制,减少生产环境重大安全问题的发生。
2.3 部署检测性安全控制时,确保有与之互补的响应性安全控制
AWS认为,即使部署了预防性安全控制,也要考虑生产环境下预防失败的情况。当应急事件一旦发生时,能及时地采取补救措施。并且提倡用红蓝对抗验证和保障预防性安全控制、响应性安全控制的有效性。
2.4 安全自动化
AWS认为,DevSecOps中安全自动化是非常重要的组成部分,努力实现部署过程中的一切自动化,通过代码自动化地、快速地识别和修复安全问题。
2.5 总结
从上述的4个原则读者可以看出,AWS在DevSecOps的实施过程中是非常务实的,其关注的重点总结为三个词:安全左移、安全自动化、实战对抗,意图通过DevSecOps能力建设,快速地解决生产环境问题,并具备实战级的安全防护能力。
三、AWS DevSecOps关键组件
3.1 关键组件
和微软的Azure云一样,亚马逊云也有一系列的组件。这些组件无论是为AWS的云上业务,还是在AWS DevSecOps能力建设中,都起到了不可或缺的作用。如下所示为其中的部分关键组件。
3.2 关键安全组件
和Azure一样,AWS也有许多自研组件,这些组件主要围绕DevOps流程提供能力服务。对于安全工具,既有自研的,也有集成第三方工具,提供SaaS化能力。其中具有代表性的安全组件如下表所示。
3.3 总结
从这些自研和集成的组件可以看出,AWS的DevSecOps能力构建仍然沿用着平台建设的思路,对于管理流程、黄金管道、基础设施使用平台自研能力;对于静态安全检测、动态安全检测、开源组件安全等,以集成或插件的方式引入第三方安全能力,以完成DevSecOps平台能力的构建。
四、AWS DevSecOps平台架构
4.1 AWS DevSecOps平台架构图
AWS的DevSecOps平台架构是基于AWS DevOps能力之上构建的,除了安全检测工具使用第三方集成外,更多的安全能力是在原有的AWS产品中集成安全特性来解决的,其架构图如下图所示。
4.2 安全与流程融合过程
在架构图中可以看到,与DevOps相关的CodeCommit、CodePipeline、CodeBuild、CodeDeploy等组件均在架构扮演着重要的角色。下面通过其关键场景来讨论安全与流程的融合。
4.2.1 源码提交
当开发人员使用AWS Cloud9开发完代码之后,通过Git将代码提交到CodeCommit,生成一个触发CodePipeline的CloudWatch事件。
4.2.2 工程构建
CodeBuild将代码打包、构建,并将构建产物存储到AWS CodeArtifact或AWS S3上。
4.2.3 安全检测
- 接着CodeBuild会调用静态检测工具SAST和组件分析工具SCA对代码进行扫描,如OWASP Dependency Check、SonarQube、Snyk等。
- 如果SCA检测或SAST静态检测分析存在漏洞,CodeBuild会调用Lambda函数,通知到Security Hub。
- 如果没有漏洞,CodeDeploy会将代码部署到测试环境。
- 部署成功后,CodeBuild会调用OWASP ZAP工具触发动态安全扫描。
- 动态检测如果发现漏洞,CodeBuild仍然会调用Lambda函数,通知到Security Hub。
- 动态检测如果没有漏洞,则会触发审批流程,并向审批人发送一封电子邮件以推动上线发布流程。
4.2.4 发布
- 得到审批人批准后,CodeDeploy将代码部署到生产环境。
- 在整个运行过程中,CloudWatch Events捕获构建信息,通知用户;CloudTrail监控API调用,发送异常审计告警;AWS Config跟踪AWS服务配置更改情况,检查操作是否合规。
五、总结
亚马逊AWS云在过去的这些年里,一直不遗余力地推动其DevSecOps解决方案,甚至在业界公开的资料中,依托AWS云构建DevSecOps的案例也非常多。从这张架构图中,读者可以看出AWS云DevSecOps能力构建的主体思路和微软的Azure一样,其依托云产品本身构建的安全运营阶段能力仍需要读者去进一步的查阅其他资料去了解。总之,AWS云DevSecOps平台架构仍有着其鲜明的特点,主要如下:
- 和本文开头提及的AWS云DevSecOps实施原则一样,AWS云非常注重安全测试能力的前置,无论是对静态安全检测工具SAST的引用,还是对动态安全检测工具DAST的第三方集成,本质都是通过安全测试工作前置尽早发现安全风险并消除。
- AWS云自研的DevOps管道组件和云原生产品为DevSecOps构建提供了强大的基础能力。
- Amazon CodeGuru、Amazon Cloud9、AWS Security Hub等自研工具,加上外部第三方工具的集成,帮助企业快速搭建DevSecOps平台化能力。
最后,附上AWS的官网地址,有兴趣的可以自己去借鉴学习下:
云安全_云安全产品_AWS云安全产品介绍-AWS云服务 (amazon.com)
好了,本次内容就分享到这,欢迎大家关注《DevSecOps》专栏,后续会继续输出相关内容文章。如果有帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!