配置 IBM Cloud Code Risk Analyzer 扫描
您可以使用 IBM Cloud Code Risk Analyzer 来分析代码中的漏洞,并根据指定的规则验证合规性。
当 Code Risk Analyzer 评估应用程序时:
-
将生成软件材料清单 (SBOM),其中列出所有第三方软件包的依赖关系和可用许可证信息。 如果需要,可以使用
cycloneDX-specific
格式生成此值。 -
将扫描 SBOM 文件中列出的包以查找漏洞。 此文件可以
cycloneDX-specific
格式生成。 或者,您可以对使用 Node.js,Maven 或 Gradle编写的应用程序发现的漏洞启用自动补救。 -
将对所有 Kubernetes 文件进行合规性分析。
-
将对所有 Terraform 计划进行合规性分析。
在支持工具链的所有 IBM Cloud 区域中都提供了 Code Risk Analyzer。 有关更多信息,请参阅 插件文档。
配置扫描
要生成 SBOM 文件,Code Risk Analyzer 扫描将访问指定目录路径中的工件,并执行深度发现以识别所有依赖关系 (包括跟踪依赖关系)。 没有生成 SBOM 文件和发现漏洞所需的特定管道环境变量,但如果路径包含 Dockerfile,那么会拉取基本映像,并为文件中指定的每个构建阶段构建映像。
如果 Dockerfile 需要 ARGS,请将单个 ARG 设置为定制脚本中的环境变量,并提供定制脚本的位置作为管道可 vairable。
环境变量 | 描述 | 必需或可选 | 用途 |
---|---|---|---|
cra-custom-script-path |
存储库中脚本的路径。 | 可选 | 设置 Docker 脚本所需的环境变量。 |
有关更多信息,请参阅 定制脚本
缺省情况下,不会分析 Terraform 文件。 要扫描 Terraform 文件,必须设置以下管道环境变量。
环境变量 | 描述 | 必需或可选 | 用途 |
---|---|---|---|
opt-in-tfsec |
True 或 False。 缺省情况下设置为 false。 | 可选 | 扫描 Terraform 文件以获取安全性。 |
opt-in-cra-tf-validate |
True 或 False。 缺省情况下设置为 false。 | 可选 | 验证 Terraform 文件。 |
Code Risk Analyzer 扫描使用提供的 API 密钥登录到 IBMCloud CLI 并触发 Docker 构建。 现有 IBM Cloud CLI 会话将继续用于此 CRA 步骤的其余部分。 但是,对于标准 API 密钥登录,IBM Cloud CLI 会话将在 20 分钟后到期。 如果构建过程耗时超过 20 分钟,那么由于会话已到期,CRA 步骤将失败并显示 401 错误消息。 引入了环境变量 ibmcloud-enable-session-keep-alive
,以便使
IBMCloud CLI 会话在如此长时间的操作中保持活动状态。
环境变量 | 描述 | Type | 必需或可选 | 用途 |
---|---|---|---|---|
ibmcloud-enable-session-keep-alive |
0 或 1。 缺省情况下设置为 0。 | select | 可选 | 在 Code Risk Analyzer 扫描中,使长时间运行的作业的 IBMCloud CLI 会话保持活动状态。 |
缺省情况下,Code Risk Analyzer deployment-analyze 命令在 Kubernetes 部署清单上运行 配置检查。 Code Risk Analyzer deployment-analyze 命令使用 --strict
选项集运行。 要在 Code Risk Analyzer 部署-分析扫描期间忽略文件,必须使用以下环境变量。
环境变量 | 描述 | 必需或可选 | 用途 |
---|---|---|---|
cra-cis-fileignore-path |
存储库中 .fileignore 文件的路径。 | 可选 | 指定 .fileignore 文件的路径,该文件包含代码风险分析器部署分析扫描期间要忽略的文件的信息。 |
省略漏洞以部署应用程序
“代码风险分析器”旨在先找到易受攻击的包,然后再找到脂板。 在特殊情况下,您可能需要部署应用程序,即使检测到易受攻击的软件包并且尚未修复。 在可能的情况下,您应该在重新部署代码之前更新软件包或将其除去。
要忽略特定文件并完成推送到生产环境,可以使用以下模式在扫描的存储库根目录中创建名为 .cra/.cveignore
的文件:
[
{
"cve": "string",
"alwaysOmit": "bool",
"untilRemediationAvailable": "bool",
"expiration": "string"
},
]
以下代码片段显示了样本 .cveignore
文件:
[
{
"cve": "CVE-2021-27290",
"alwaysOmit": true
},
{
"cve": "CVE-2020-8244",
"untilRemediationAvailable": true,
},
{
"cve": "CLAIR-JAVA-ORGAPACHEHTTPCOMPONENTS-31517",
"expiration": "2022-02-10T22:08:41+04:00",
"comment": "Additional security measures are in place"
}
]
此文件以前称为 .craveomit
。 原始文件格式已 不推荐 并由 .cra/.cveignore
替换。 请更新代码以使用最新文件。
您可以了解有关 Code Risk Analyzer 插件的文档 的更多信息,也可以检查 不推荐使用的 CRA 文档。
自动修复漏洞
您可以使用 Code Risk Analyzer 作为持续合规性 (CC) 管道的一部分,不仅可以查找漏洞,还可以自动修复漏洞。 代码风险分析器作为管道的 compliance-check
步骤的一部分工作。 缺省情况下,将关闭自动补救。
自动补救仅可用于 CC 管道。
开启自动补救后,Code Risk Analyzer 会尝试通过针对存储库的缺省分支创建具有所标识修订的拉取请求,将易受攻击的包更新为不可 vunlnerable 版本。 缺省情况下,Code Risk Analyzer 将更新主易受攻击软件包以及从属软件包的次要版本和补丁版本,但不会更新软件包的主要版本。 如果可接受拉取请求,那么可以手动核准并合并该请求。 每次运行管道时,都会生成新的拉取请求,因此请确保在打开这些请求时进行复审和合并,以避免重复。
自动修复可用于 Enterprise GitHub 和 GitLab 存储库,并且可以修改下表中指定的文件。
生态系统 | 可修改文件 |
---|---|
Nodejs | package.json 和 package-lock.json |
Gradle | build.gradle 、gradle.lockfile 和 buildscript-gradle.lockfile |
Maven | pom.xml |
要开始自动修复漏洞,请为管道设置以下可选环境变量。
变量 | 描述 | 缺省设置 |
---|---|---|
opt-in-cra-auto-remediation |
为管道启用自动补救。 | false 要开始补救,请将此变量设置为 true 。 |
opt-in-cra-auto-remediation-force |
在打开的拉取请求中强制主软件包更新。 | false 要强制主软件包更新,请将此变量设置为 true 。 |
opt-in-cra-auto-remediation-enabled-repos |
指定要在其中启用自动补救的特定存储库。 | 针对调用 list_repos 时返回的所有存储库启用。 要指定特定存储库,请提供以逗号分隔的存储库名称列表。 |