本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon Inspector Jenkins 插件
该Jenkins插件利用 Amazon Inspector SBOM 生成器二进制文件和 Amazon Inspector Scan API 在构建结束时生成详细的报告,因此您可以在部署之前调查和修复风险。使用 Amazon Ins Jenkins pector 插件,您可以将 Amazon Inspector 漏洞扫描添加到您的Jenkins管道中。可以根据检测到的漏洞数量和严重性,将 Amazon Inspector 漏洞扫描配置为通过或失败管道执行。你可以在Jenkins市场上查看该Jenkins插件的最新版本,网址为 https://plugins.jenkins.io/amazon-inspector-image-scanner/
重要
在完成以下步骤之前,必须将 Jenkins 升级到 2.387.3 或更高版本才能运行该插件。
第 1 步。设置一个 AWS 账户
AWS 账户 使用允许访问 Amazon Inspector 扫描的IAM角色进行配置API。有关说明,请参阅设置 AWS 账户以使用 Amazon Inspector CI/CD 集成。
第 2 步。安装 Amazon Inspector Jenkins 插件
以下过程描述了如何从Jenkins控制面板安装 Amazon Inspector Jenkins 插件。
-
在 Jenkins 控制面板中,选择 “管理 Jenkins”,然后选择 “管理插件”。
-
选择 “可用”。
-
从 “可用” 选项卡中搜索 Amazon Inspector 扫描件,然后安装该插件。
(可选)步骤 3。将 docker 凭据添加到 Jenkins
注意
仅当 docker 镜像位于私有存储库中时,才添加 docker 凭据。否则,请跳过此步骤。
以下过程介绍如何Jenkins从控制面板添加 docker 凭证。Jenkins
-
在 Jenkins 控制面板中,选择 “管理 Jenkins”、“凭据”,然后选择 “系统”。
-
选择全局凭证,然后选择添加凭据。
-
在 “种类” 中,选择 “带密码的用户名”。
-
对于 “范围”,选择 “全局”(Jenkins、节点、项目、所有子项目等)。
-
输入您的详细信息,然后选择 “确定”。
(可选)步骤 4。添加 AWS 凭证
注意
只有在要根据IAM用户进行身份验证时才添加 AWS 凭据。否则,请跳过此步骤。
以下过程介绍如何从Jenkins仪表板添加 AWS 凭据。
-
在 Jenkins 控制面板中,选择 “管理 Jenkins”、“凭据”,然后选择 “系统”。
-
选择全局凭证,然后选择添加凭据。
-
在 “种类” 中,选择 “AWS凭证”。
-
输入您的详细信息,包括您的访问密钥 ID 和私有访问密钥,然后选择 OK。
第 5 步。在Jenkins脚本中添加CSS支持
以下过程介绍如何在Jenkins脚本中添加CSS支持。
-
重启 Jenkins。
-
在控制面板中,选择管理 Jenkins、节点、内置节点,然后选择脚本控制台。
-
在文本框中,添加该行
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
,然后选择 “运行”。
第 6 步。将 Amazon Inspector Scan 添加到你的版本中
您可以通过在项目中添加构建步骤或使用 Jenkins 声明式管道,将 Amazon Inspector 扫描添加到您的构建中。
Amazon Inspector 通过在项目中添加构建步骤来扫描您的版本
-
在配置页面上,向下滚动到生成步骤,然后选择添加构建步骤。然后选择 Amazon Inspector 扫描。
-
在两种 inspector-sbomgen 安装方法之间进行选择:自动或手动。
-
(选项 1)选择 “自动” 以下载 inspector-sbomgen 的最新版本。如果您选择此方法,请务必选择与执行插件的系统相匹配的CPU架构。
-
(选项 2)如果您要设置 Amazon Inspector SBOM 生成器二进制文件进行扫描,请选择 “手动”。如果您选择这种方法,请确保提供之前下载的 inspector-sbomgen 版本的完整路径。
有关更多信息,请参阅在亚马逊 Inspecto r SBOM 生成器中安装 Amazon Inspector 生成器 (Sbomgen)。SBOM
-
-
完成以下操作以完成 Amazon Inspector 扫描构建步骤的配置:
-
输入映像 ID。映像可以是本地映像、远程映像或归档映像。映像名称应遵循 Docker 命名约定。如果要分析导出的映像,请提供预期的 tar 文件的路径。请参阅下列示例映像 ID 路径:
-
对于本地或远程容器:
NAME[:TAG|@DIGEST]
-
对于 tar 文件:
/path/to/image.tar
-
-
选择用于发送扫描请求的 AWS 区域。
-
(可选)对于 Docker 凭证,请选择您的 Docker 用户名。仅当容器映像位于私有存储库中时才执行此操作。
-
(可选)您可以提供以下支持的 AWS 身份验证方法:
-
(可选)对于IAM角色,请提供一个角色 ARN (arn: aws: iam::
AccountNumber
:角色/RoleName
). -
(可选)对于AWS凭据,请选择要根据IAM用户进行身份验证的 ID。
-
(可选)对于AWS 配置文件名称,请提供要使用配置文件名称进行身份验证的配置文件名称。
-
-
(可选)指定每种严重性的漏洞阈值。如果扫描期间的漏洞数超过了您指定的数量,则映像构建将失败。如果值全部为
0
,则无论是否发现任何漏洞,构建都将成功。
-
-
选择保存。
使用Jenkins声明式管道将 Amazon Inspector Scan 添加到你的版本中
你可以使用 Jenkins 声明式管道自动或手动将 Amazon Inspector Scan 添加到你的版本中。
自动下载SBOMGen声明式管道
-
要将 Amazon Inspector Scan 添加到版本中,请使用以下示例语法。根据你首选的 Amazon Inspector Generator 下载SBOM操作系统架构,替换
SBOMGEN_SOURCE
有 linuxAmd 64 或 linuxArm 64。Replace(替换)IMAGE_PATH
附上图片的路径(例如alpine:latest
),IAM_ROLE
使用您在步骤 1 中配置的IAM角色,以及 ARNID
如果您使用的是私有存储库,请使用您的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 添加到版本中,请使用以下示例语法。Replace(替换)
SBOMGEN_PATH
使用您在步骤 3 中安装的 Amazon Inspector SBOM 生成器的路径,IMAGE_PATH
附上图片的路径(例如alpine:latest
),IAM_ROLE
使用您在步骤 1 中配置的IAM角色,以及 ARNID
如果您使用的是私有存储库,请使用您的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,则可以选择下载报告的JSONSBOM或CSV版本。以下是HTML报告的示例:
![Amazon Inspector 漏洞报告示例。](images/report.png)
故障排除
以下是您在使用 Amazon Inspector Scan 插件时可能遇到的常见错误Jenkins。
加载凭证失败或 sts 异常错误
错误:
InstanceProfileCredentialsProvider(): Failed to load credentials or sts exception.
分辨率
aws_secret_access_key
为你的 AWS 账户获取aws_access_key_id
和使用。在 ~/.aws/credentials
中设置 aws_access_key_id
和 aws_secret_access_key
。
检查员-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作业。