本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
这些区域有:Jenkins 插件利用 Amazon Inspector SBOM 生成器二进制文件和 Amazon Inspector Scan API 在构建结束时生成详细的报告,因此你可以在部署之前调查和修复风险。有了 Amazon Inspector Jenkins 插件,你可以将 Amazon Inspector 漏洞扫描添加到你的 Jenkins 管道。可以根据检测到的漏洞数量和严重性将 Amazon Inspector 漏洞扫描配置为使管道执行通过或失败。您可以查看最新版本的 Jenkins 插件在 Jenkins 市场网址为 https://plugins.jenkins.io/amazon-inspector-image-scanner/
重要
在完成以下步骤之前,必须将 Jenkins 升级到 2.387.3 或更高版本才能运行该插件。
第 1 步:设置一个 AWS 账户
AWS 账户 使用允许访问 Amazon Inspector Scan API 的 IAM 角色进行配置。有关说明,请参阅 设置 AWS 账户以使用 Amazon Inspector CI/CD 集成。
第 2 步:安装 Amazon Inspector Jenkins 插件
以下过程描述了如何从中安装 Amazon Inspector Jenkins 插件 Jenkins 仪表板。
-
在 Jenkins 控制面板中,选择管理 Jenkins,然后选择管理插件。
-
选择可用。
-
从可用选项卡中搜索 Amazon Inspector Scan 插件,然后安装该插件。
(可选)步骤 3。将 docker 凭据添加到 Jenkins
注意
仅当 docker 映像位于私有存储库中时,才添加 docker 凭证。否则,请跳过此步骤。
以下过程介绍如何将 docker 凭据添加到 Jenkins 来自 Jenkins 仪表板。
-
在 Jenkins 控制面板中,依次选择管理 Jenkins、凭证、系统。
-
选择全局凭证,然后选择添加凭证。
-
在种类中,选择用户名和密码。
-
对于范围,选择全局(Jenkins、节点、项目、所有子项目等)。
-
输入您的详细信息,然后选择确定。
(可选)第 4 步。添加 AWS 凭证
注意
仅当您想要基于 IAM 用户进行身份验证时,才添加 AWS 证书。否则,请跳过此步骤。
以下过程介绍如何从中添加 AWS 证书 Jenkins 仪表板。
-
在 Jenkins 控制面板中,依次选择管理 Jenkins、凭证、系统。
-
选择全局凭证,然后选择添加凭证。
-
对于种类,请选择 AWS 凭证。
-
输入您的详细信息,包括您的访问密钥 ID 和秘密访问密钥,然后选择确定。
第 5 步。在 a 中添加 CSS 支持 Jenkins script
以下过程介绍如何在中添加 CSS 支持 Jenkins 脚本。
-
重启 Jenkins。
-
在控制面板中,选择管理 Jenkins、节点、内置节点,然后选择脚本控制台。
-
在文本框中,添加行
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
,然后选择运行。
步骤 6. 将 Amazon Inspector Scan 添加到您的构建中
您可以通过在项目中添加构建步骤或使用 Amazon Inspector Scan 添加到您的版本中 Jenkins 声明式管道。
通过在项目中添加构建步骤将 Amazon Inspector Scan 添加到构建中。
-
在配置页面上,向下滚动到构建步骤,选择添加构建步骤。然后选择 Amazon Inspector Scan。
-
在两种 inspector-sbomgen 安装方法之间进行选择:自动或手动。自动选项允许插件下载最新版本。它还可确保您始终拥有最新的功能、安全更新和错误修复。
-
(选项 1)选择自动以下载 inspector-sbomgen 的最新版本。此选项会自动检测当前正在使用的操作系统和 CPU 架构。
-
(选项 2)如果您要设置 Amazon Inspector SBOM 生成器二进制文件进行扫描,请选择手动。如果您选择这种方法,请确保提供之前下载的 inspector-sbomgen 版本的完整路径。
有关更多信息,请参阅在 Amazon Inspector SBOM 生成器中安装 Amazon Inspector SBOM 生成器(Sbomgen)。
-
-
完成以下操作以完成 Amazon Inspector 扫描构建步骤的配置:
-
输入映像 ID。映像可以是本地映像、远程映像或归档映像。图片名称应紧随其后 Docker 命名惯例。如果要分析导出的映像,请提供预期的 tar 文件的路径。请参阅下列示例映像 ID 路径:
-
对于本地或远程容器:
NAME[:TAG|@DIGEST]
-
对于 tar 文件:
/path/to/image.tar
-
-
选择用于发送扫描请求的 AWS 区域。
-
(可选)在 Rep ort Artifactic 名称中,输入生成过程中生成的对象的自定义名称。这有助于对它们进行唯一的识别和管理。
-
(可选)对于 “跳过文件”,请指定要从扫描中排除的一个或多个目录。对于因大小而不需要扫描的目录,可以考虑使用此选项。
-
(可选)要获取 Docker 凭证,请选择您的 Docker 用户名。仅当容器映像位于私有存储库中时才执行此操作。
-
(可选)您可以提供以下支持的 AWS 身份验证方法:
-
(可选)对于 IAM 角色,请提供角色 ARN (arn: aws: iam:: role/)。
AccountNumber
RoleName
-
(可选)对于 AWS 证书,请根据 IAM 用户指定要进行身份验证的 AWS 证书。
-
(可选)对于 AWS 配置文件名称,请提供要使用配置文件名称进行身份验证的配置文件的名称。
-
-
(可选)选择启用漏洞阈值。使用此选项,您可以确定如果扫描的漏洞超过某个值,您的构建是否会失败。如果所有值都相等
0
,则无论扫描了多少漏洞,构建都会成功。对于 EPSS 分数,该值可以介于 0 到 1 之间。如果扫描的漏洞超过某个值,则构建将失败,并且所有 CVEs EPSS 分数高于该值的漏洞都会显示在控制台中。
-
-
选择保存。
使用 Amazon Inspector Scan 添加到你的版本中 Jenkins 声明式管道
您可以使用 Jenkins 声明式管道自动或手动将 Amazon Inspector Scan 添加到您的构建中。
自动下载 SBOMGen 声明式管道
-
要将 Amazon Inspector Scan 添加到构建中,请使用以下示例语法。根据你首选的 Amazon Inspector SBOM 生成器下载操作系统架构,替换为
SBOMGEN_SOURCE
LinuxAMD64 或 LinuxArm64。IMAGE_PATH
替换为映像路径(例如alpine:latest
)、IAM_ROLE
您在步骤 1 中配置的 IAM 角色的 ARN 以及ID
您的 Docker 凭证 ID(如果您使用的是私有存储库)。您可以选择启用漏洞阈值并为每个严重性指定值。
pipeline { agent any stages { stage('amazon-inspector-image-scanner') { steps { script { step([ $class: 'com.amazon.inspector.jenkins.amazoninspectorbuildstep.AmazonInspectorBuilder', sbomgenSource: '
SBOMGEN_SOURCE
', // this can be linuxAmd64 or linuxArm64 archivePath: 'IMAGE_PATH
', awsRegion: 'REGION
', iamRole: 'IAM ROLE
', credentialId: 'Id
', // provide empty string if image not in private repositories awsCredentialId: ''AWS ID
;', awsProfileName: 'Profile Name
', isThresholdEnabled:false
, countCritical:0
, countHigh:0
, countLow:10
, countMedium:5
, ]) } } } } }
手动下载 SBOMGen 声明式管道
-
要将 Amazon Inspector Scan 添加到构建中,请使用以下示例语法。
SBOMGEN_PATH
替换为您在步骤 3 中安装的 Amazon Inspector SBOM 生成器的路径、IMAGE_PATH
映像的路径(例如alpine:latest
)、IAM_ROLE
您在步骤 1 中配置的 IAM 角色的 ARN 以及您的 ARN 以及您的ID
Docker 凭证 ID(如果您使用的是私有存储库)。您可以选择启用漏洞阈值并为每个严重性指定值。
注意
地点 Sbomgen 在 Jenkins 目录中,并在插件中提供 Jenkins 目录的路径(例如/opt/folder/arm64/inspector-sbomgen
)。
pipeline { agent any stages { stage('amazon-inspector-image-scanner') { steps { script { step([ $class: 'com.amazon.inspector.jenkins.amazoninspectorbuildstep.AmazonInspectorBuilder', sbomgenPath: '
SBOMGEN_PATH
', archivePath: 'IMAGE_PATH
', awsRegion: 'REGION
', iamRole: 'IAM ROLE
', awsCredentialId: ''AWS ID
;', credentialId: 'Id
;', // provide empty string if image not in private repositories awsProfileName: 'Profile Name
', isThresholdEnabled:false
, countCritical:0
, countHigh:0
, countLow:10
, countMedium:5
, ]) } } } } }
第 7 步。查看 Amazon Inspector 漏洞报告
-
完成项目的新构建。
-
构建完成后,从结果中选择一种输出格式。如果选择 HTML 格式,您可以选择下载 JSON SBOM 或 CSV 版本的报告。下面显示了一个 HTML 报告的示例:

故障排除
以下是您在使用 Amazon Inspector Scan 插件时可能遇到的常见错误 Jenkins.
无法加载凭证或 sts 异常错误
错误:
InstanceProfileCredentialsProvider(): Failed to load credentials or sts exception.
解决办法
aws_secret_access_key
获取aws_access_key_id
并使用您的 AWS 帐户。在 ~/.aws/credentials
中设置 aws_access_key_id
和 aws_secret_access_key
。
无法从 tarball、本地或远程来源加载映像
错误:
2024/10/16 02:25:17 [ImageDownloadFailed]: failed to load image from tarball, local, or remote sources.
注意
如果 Jenkins 插件无法读取容器镜像,在中找不到容器镜像,则可能会发生此错误 Docker engine,并且在远程容器注册表中找不到容器镜像。
解决方案:
请验证以下内容:
-
Jenkins 插件用户对您希望扫描的映像具有读取权限。
-
您要扫描的图像存在于 Docker 发动机。
-
您的远程映像 URL 正确。
-
您已向远程注册表进行身份验证(如果适用)。
Inspector-sbomgen 路径错误
错误:
Exception:com.amazon.inspector.jenkins.amazoninspectorbuildstep.exception.SbomgenNotFoundException: There was an issue running inspector-sbomgen, is /opt/inspector/inspector-sbomgen the correct path?
解决方案:
要解决此问题,请完成以下步骤。
-
放置正确的操作系统架构 Inspector-sbomgen Jenkins 目录有关更多信息,请参阅 Amazon Inspector SBOM 生成器。
-
使用以下命令为该二进制文件授予可执行权限:
chmod +x inspector-sbomgen
。 -
提供正确的 Jenkins 插件中的计算机路径,例如
/opt/folder/arm64/inspector-sbomgen
。 -
保存配置,然后执行 Jenkins 工作。