使用 Amazon Inspector Jenkins 插件 - Amazon Inspector

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 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/。以下步骤描述了如何设置 Amazon Ins Jenkins pector 插件。

重要

在完成以下步骤之前,必须将 Jenkins 升级到 2.387.3 或更高版本才能运行该插件。

第 1 步。设置一个 AWS 账户

AWS 账户 使用允许访问 Amazon Inspector 扫描的IAM角色进行配置API。有关说明,请参阅设置 AWS 账户以使用 Amazon Inspector CI/CD 集成

第 2 步。安装 Amazon Inspector Jenkins 插件

以下过程描述了如何从Jenkins控制面板安装 Amazon Inspector Jenkins 插件。

  1. 在 Jenkins 控制面板中,选择 “管理 Jenkins”,然后选择 “管理插件”。

  2. 选择 “可用”。

  3. 从 “可用” 选项卡中搜索 Amazon Inspector 扫描件,然后安装该插件。

(可选)步骤 3。将 docker 凭据添加到 Jenkins

注意

仅当 docker 镜像位于私有存储库中时,才添加 docker 凭据。否则,请跳过此步骤。

以下过程介绍如何Jenkins从控制面板添加 docker 凭证。Jenkins

  1. 在 Jenkins 控制面板中,选择 “管理 Jenkins”、“凭据”,然后选择 “系统”。

  2. 选择全局凭证,然后选择添加凭据

  3. 在 “种类” 中,选择 “带密码的用户名”。

  4. 对于 “范围”,选择 “全局”(Jenkins、节点、项目、所有子项目等)。

  5. 输入您的详细信息,然后选择 “确定”

(可选)步骤 4。添加 AWS 凭证

注意

只有在要根据IAM用户进行身份验证时才添加 AWS 凭据。否则,请跳过此步骤。

以下过程介绍如何从Jenkins仪表板添加 AWS 凭据。

  1. 在 Jenkins 控制面板中,选择 “管理 Jenkins”、“凭据”,然后选择 “系统”。

  2. 选择全局凭证,然后选择添加凭据

  3. 在 “种类” 中,选择 “AWS凭证”。

  4. 输入您的详细信息,包括您的访问密钥 ID私有访问密钥,然后选择 OK

第 5 步。在Jenkins脚本中添加CSS支持

以下过程介绍如何在Jenkins脚本中添加CSS支持。

  1. 重启 Jenkins。

  2. 在控制面板中,选择管理 Jenkins节点内置节点,然后选择脚本控制台

  3. 在文本框中,添加该行System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", ""),然后选择 “运行”。

第 6 步。将 Amazon Inspector Scan 添加到你的版本中

您可以通过在项目中添加构建步骤或使用 Jenkins 声明式管道,将 Amazon Inspector 扫描添加到您的构建中。

Amazon Inspector 通过在项目中添加构建步骤来扫描您的版本

  1. 在配置页面上,向下滚动到生成步骤,然后选择添加构建步骤。然后选择 Amazon Inspector 扫描

  2. 在两种 inspector-sbomgen 安装方法之间进行选择:自动手动

    1. (选项 1)选择 “自动” 以下载 inspector-sbomgen 的最新版本。如果您选择此方法,请务必选择与执行插件的系统相匹配的CPU架构。

    2. (选项 2)如果您要设置 Amazon Inspector SBOM 生成器二进制文件进行扫描,请选择 “手动”。如果您选择这种方法,请确保提供之前下载的 inspector-sbomgen 版本的完整路径。

    有关更多信息,请参阅在亚马逊 Inspecto r SBOM 生成器中安装 Amazon Inspector 生成器 (Sbomgen)。SBOM

  3. 完成以下操作以完成 Amazon Inspector 扫描构建步骤的配置:

    1. 输入映像 ID。映像可以是本地映像、远程映像或归档映像。映像名称应遵循 Docker 命名约定。如果要分析导出的映像,请提供预期的 tar 文件的路径。请参阅下列示例映像 ID 路径:

      1. 对于本地或远程容器:NAME[:TAG|@DIGEST]

      2. 对于 tar 文件:/path/to/image.tar

    2. 选择用于发送扫描请求的 AWS 区域

    3. (可选)对于 Docker 凭证,请选择您的 Docker 用户名。仅当容器映像位于私有存储库中时才执行此操作。

    4. (可选)您可以提供以下支持的 AWS 身份验证方法:

      1. (可选)对于IAM角色,请提供一个角色 ARN (arn: aws: iam::AccountNumber:角色/RoleName).

      2. (可选)对于AWS凭据,请选择要根据IAM用户进行身份验证的 ID

      3. (可选)对于AWS 配置文件名称,请提供要使用配置文件名称进行身份验证的配置文件名称。

    5. (可选)指定每种严重性的漏洞阈值。如果扫描期间的漏洞数超过了您指定的数量,则映像构建将失败。如果值全部为 0,则无论是否发现任何漏洞,构建都将成功。

  4. 选择保存

使用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角色,以及 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 添加到版本中,请使用以下示例语法。Replace(替换) SBOMGEN_PATH 使用您在步骤 3 中安装的 Amazon Inspector SBOM 生成器的路径,IMAGE_PATH 附上图片的路径(例如 alpine:latest), IAM_ROLE 使用您在步骤 1 中配置的IAM角色,以及 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 漏洞报告

  1. 完成项目的新构建。

  2. 生成完成后,从结果中选择一种输出格式。如果选择HTML,则可以选择下载报告的JSONSBOM或CSV版本。以下是HTML报告的示例:

Amazon Inspector 漏洞报告示例。

故障排除

以下是您在使用 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_idaws_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?

解决方案:

完成以下步骤以解决问题。

  1. 将正确的操作系统架构 Inspector-sbomgen 放在Jenkins目录中有关更多信息,请参阅 Amazon Inspector 生成器。SBOM

  2. 使用以下命令向二进制文件授予可执行权限:chmod +x inspector-sbomgen

  3. 在插件中提供正确的Jenkins机器路径,例如/opt/folder/arm64/inspector-sbomgen

  4. 保存配置,然后执行Jenkins作业。