我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
使用亚马逊 CodeCatalyst 启用 DevSecOps
简介
在本系列的前一篇文章《使用
在这篇文章中,我将重点介绍DevSecOps团队如何使用亚马逊CodeCatalyst工作流程轻松集成和自动化安全性。
先决条件
如果您想按照本演练进行操作,则需要:
- 拥有 A
WS 生成器 ID 用于登录 CodeCatalyst。 - 属于 CodeCatalyst 空间,并在该空间中为您分配空间管理员角色。
有关更多信息,请参阅在 C odeCatalyst 中 创建空间 、管理空间成员和 空间管理员 角色。 - 拥有一个与您的空间关联的 亚马逊云科技 账户,并在该账户中拥有 IAM 角色。有关角色和角色策略的更多信息,请参阅
创建 CodeCatalys t 服务角色。 - 拥有 M
end 账户 (可选 Mend 部分为必填项)
草率排练
要继续操作,您可以重复使用之前创建的项目,也可以参考
图 1。现代三层 Web 应用程序架构,包括演示层、应用程序层和数据层
部署
图 2。应用程序部署管道
现代应用程序使用各种开源依赖项来加快功能开发,但有时这些依赖项中存在未知的漏洞。作为一名 DevSecOps 工程师,我可以轻松编辑此工作流程来扫描那些易受攻击的依赖关系,以确保我交付的是安全的代码。
软件组合分析 (SCA)
软件组合分析(SCA)是信息技术和软件工程领域的一种实践,用于分析定制的软件应用程序,以检测嵌入式开源软件并分析它们是否是最新的、包含安全漏洞或是否有许可要求。在本演练中,我将重点介绍两种 SCA 方法:
- 我将使用开源
OWASP 依赖检查 工具来扫描我的应用程序中存在漏洞 的依赖关系。它通过确定给定依赖项是否有通用平台枚举 (CPE) 标识符来做到这一点。如果找到,它将生成一份报告,链接到相关的常见漏洞和暴露 (CVE) 条目。 - 我将使用 CodeCatalyst 的 Mend SCA Action 将 Mend for SCA 集成 到我的 CI/CD 工作流程中。
请注意,开发人员可以用他们选择的工具替换其中任何一个,只要该工具输出的是C
使用 OWASP 依赖关系检查器进行软件组合分析
首先,我选择工作流程选项卡右 上角的 “ 编辑 ”。 默认情况下,CodeCatalyst 会打开 YAML 选项卡。 我切换到 “ 可视化 ” 选项卡以直观地编辑工作流程,然后选择 “ +操作” (1),然后选择 “+” (2) 来添加一个
图 3。新操作初始配置
在 “ 配置 ” 选项卡中向下滚动到 Shell 命令。 在这里,复制并粘贴在调用操作时运行的以下命令片段。
#Set Source Repo Directory to variable
- Run: sourceRepositoryDirectory=$(pwd)
#Install Node Dependencies
- Run: cd web && npm install
#Install known vulnerable dependency (This is for Demonstrative Purposes Only)
- Run: npm install pac-resolver@4.0.0
#Go to parent directory and download OWASP dependency-check CLI tool
- Run: cd .. && wget https://github.com/jeremylong/DependencyCheck/releases/download/v8.1.2/dependency-check-8.1.2-release.zip
#Unzip file - Run: unzip dependency-check-8.1.2-release.zip
#Navigate to dependency-check script location
- Run: cd dependency-check/bin
#Execute dependency-check shell script. Outputs in SARIF format
- Run: ./dependency-check.sh --scan $sourceRepositoryDirectory/web -o $sourceRepositoryDirectory/web/vulnerabilities -f SARIF --disableYarnAudit
这些命令将安装节点依赖关系,下载
在 输出 (1) 选项卡上,我将 报告前缀 (2) 更改为 owas p 前端。然后我将漏洞的 成功标准 (3) 设置为 0 — 严重 (4)。 如果发现任何严重漏洞,此配置将停止工作流程。
图 4:owasp 依赖关系检查前端
最佳做法是在部署资源之前扫描有漏洞的依赖关系,因此我将把我的 ow asp-dependency-check-frontend 操作设置为工作流程的第一步。否则,我可能会意外部署易受攻击的代码。为此,我选择了 “ 构建 (1)”
图 5:将 OWASP 设置为第一个工作流程操作
亚马逊 CodeCatalyst 向我展示了实时运行的工作流程状态。工作流程完成后,我看到操作已进入失败状态。如果我是像 Unicorn Project 中的 Purna 一样的 QA 经理,我想看看为什么行动失败了。在左侧导航栏上,我选择 “ 报告 ” → “ow asp-frontend-web/漏洞/dependency-check-report.sarif ” 以了解更多详细信息。
图 6:SCA 报告概述
此报告视图提供元数据,例如工作流名称、运行 ID、操作名称、存储库和提交 ID。我还可以看到报告状态、按严重性分组的漏洞条形图、扫描的库数量以及 调查结果 面 板。我已将此报告的成功标准设置 为 0 — 严重 , 因此它失败了,因为发现了 1 个严重漏洞。如果我选择特定的发现 ID,我可以了解有关该特定发现的更多信息,甚至可以在国家漏洞数据库网站上查看。
图 7:关键漏洞 CVE 发现
现在,我可以通过左侧导航面板上的 问题 板向开发团队提出这个问题。请参阅
注意:让我们从 ow asp-dependency -check-frontend 操作的命令列表中删除
使用 Mend 进行软件组合分析
Mend,前身为WhiteSource,是一家旨在保护当今数字世界的应用程序安全公司。Mend 保护软件的各个方面,提供从问题到解决方案的自动补救、预防和保护,而不仅仅是检测和建议的修复方法。 在此
CodeCatalyst 和 Mend 的入门非常简单。 登录我的 Mend 账户后,我需要创建一个名为 Am azon-Codecatalyst 的新 Mend 产品和一个名为 mythical-Misfits 的项目。
接下来,我导航回到 CodeCatalyst 中的现有工作流程并添加一个新操作。但是,这次我将选择 “修复 SCA” 操作。
图 8:修补操作
我现在需要做的就是转到 “ 配置 ” 选项卡并设置以下值:
- Mend 项目名称:mythical-Misfits
- Mend 产品名称:Amazon-Codecatalyst
- 修补许可证密钥:您可以在 CI/CD 集成部分从您的 Mend 帐户中获取许可证密钥。你可以从
这里 获得更多信息 。
图 9:修改操作配置
然后我提交修改并返回到 Mend。
图 10:修补控制台
成功执行后,Mend 将自动更新并显示与上面屏幕截图类似的报告。
静态分析 (SA)
静态分析,也称为静态代码分析,是一种通过在不执行程序的情况下检查代码来完成的调试方法。该过程使人们了解代码结构,可以帮助确保代码符合行业标准。软件开发和质量保证团队在软件工程中使用静态分析。
目前,我的工作流程不进行静态分析。作为一名 DevSecOps 工程师,我可以将其作为一个步骤添加到工作流程中。在本演练中,我将创建一个使用 Pylint 扫描我的 Python 源代码进行静态分析的操作。请注意,你也可以使用其他静态分析工具或像 SuperLinter 这样的 GitHub 操作,如
使用 Pylint 进行静态分析
导航回 C I/CD → 工作流程 → ApplicationDeploymentPipelin e 并选择 “ 编辑 ” 后 ,我创建了一个新的测试操作。我将操作名称更改为 pylint 并设置 “ 配置 ” 选项卡以运行以下 shell 命令:
- Run: pip install pylint
- Run: pylint $PWD --recursive=y --output-format=json:pylint-report.json --exit-zero
在 “ 输出 ” 选项卡上,我将 报告前缀 更改为 pylint。然后,我设置了静态分析的成功标准,如下图所示:
图 11:静态分析报告配置
由于静态分析通常在执行之前运行,因此 pylint 或 OWASP 操作应该是工作流程中的第一个操作。为了这篇博客的缘故,我们将使用 pylint。 我选择之前创建的 OWASP 或 Mend 操作,将 “ 依赖于 ” 下拉列表设置为 pylint 操作,然后提交更改。 工作流程完成后,我可以前往 “报告” > “pylint-pylint-report.json” 了解更多详情。
图 12:Pylint 静态分析报告
报告状态为 “失败”,因为检测到了 1 个以上严重程度的错误。 在 “ 结果 ” 选项卡上,我可以更详细地查看每项发现,包括严重性、发现类型、来自 linter 的消息以及错误来自哪一行。
清理
如果您一直遵循此工作流程,则应删除部署的资源,以免继续产生费用。首先,删除启动蓝图时关联的
结论
在这篇文章中,我演示了DevSecOps团队如何轻松地将安全性集成到Amazon CodeCatalyst工作流程中,通过使用OWASP依赖项检查器检查漏洞或通过软件组合分析(SCA)修复依赖关系来自动进行安全测试。我还概述了 DevSecOps 团队如何配置静态分析 (SA) 报告并使用成功标准来影响工作流程操作的结果。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。