翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Inspector Jenkins プラグインを使用する
この Jenkins プラグインは、Amazon Inspector SBOM Generator バイナリと Amazon Inspector スキャン 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 アカウント
Amazon Inspector スキャン API へのアクセスを許可する IAM ロール AWS アカウント を使用して を設定します。手順については、「Amazon Inspector CI/CD 統合を使用するように AWS アカウントを設定する」を参照してください。
ステップ 2. Amazon Inspector Jenkins プラグインのインストール
次の手順は、Jenkins ダッシュボードから Amazon Inspector Jenkins プラグインをインストールする方法を示しています。
-
Jenkins ダッシュボードから、[Jenkins の管理] を選択し、[プラグインの管理] を選択します。
-
[利用可能] を選択します。
-
[利用可能] タブから [Amazon Inspector スキャン] を検索し、プラグインをインストールします。
(オプション) ステップ 3. Jenkins への Docker 認証情報の追加
注記
Docker イメージがプライベートリポジトリにある場合にのみ、Docker 認証情報を追加します。それ以外の場合は、この手順をスキップしてください。
次の手順は、Jenkins ダッシュボードから Jenkins に Docker 認証情報を追加する方法を示しています。
-
Jenkins ダッシュボードから、[Jenkins の管理]、[認証情報]、[システム] の順に選択します。
-
[グローバル認証情報]、[認証情報を追加] の順に選択します。
-
[種類] で、[パスワード付きのユーザー名] を選択します。
-
[スコープ] で、[グローバル (Jenkins、ノード、項目、すべての子項目など)] を選択します。
-
詳細を入力し、[OK] を選択します。
(オプション) ステップ 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 スキャンのビルドへの追加
Amazon Inspector スキャンをビルドに追加するには、プロジェクトにビルドステップを追加するか、Jenkins 宣言型パイプラインを使用します。
プロジェクトでのビルドステップの追加による Amazon Inspector スキャンのビルドへの追加
-
設定ページで [構築ステップ] まで下にスクロールし、[構築ステップを追加] を選択します。次に、[Amazon Inspector スキャン] を選択します。
-
inspector-sbomgen のインストール方法は、自動 と 手動 の 2 つから選択します。自動オプションを使用すると、プラグインは最新バージョンをダウンロードできます。また、常に最新の機能、セキュリティ更新、バグ修正を確実に行うことができます。
-
(オプション 1) [自動]を選択して、最新バージョンの inspector-sbomgen をダウンロードします。このオプションは、現在使用中のオペレーティングシステムと CPU アーキテクチャを自動的に検出します。
-
(オプション 2) スキャン用に Amazon Inspector SBOM Generator バイナリを設定する場合は、[手動]を選択します。この方法を選択した場合は、以前にダウンロードしたバージョンの inspector-sbomgen への完全なパスを必ず指定してください。
詳細については、「Amazon Inspector SBOM Generator」の「Amazon Inspector SBOM Generator (Sbomgen) のインストール」を参照してください。
-
-
Amazon Inspector スキャンのビルドステップの設定を完了するには、以下を実行します。
-
[Image Id] を入力します。イメージはローカル、リモート、アーカイブされたもののいずれでもかまいません。イメージ名は Docker の命名規則に従う必要があります。エクスポートされたイメージを分析する場合は、予想される tar ファイルへのパスを指定します。イメージ ID のパスの例については、以下を参照してください。
-
ローカルコンテナまたはリモートコンテナの場合:
NAME[:TAG|@DIGEST]
-
tar ファイルの場合:
/path/to/image.tar
-
-
[AWS リージョン] を選択して、スキャンリクエストを送信します。
-
(オプション) レポートアーティファクト名に、ビルドプロセス中に生成されたアーティファクトのカスタム名を入力します。これにより、それらを一意に識別および管理できます。
-
(オプション) スキップファイルには、スキャンから除外するディレクトリを 1 つ以上指定します。サイズが原因でスキャンする必要のないディレクトリの場合は、このオプションを検討してください。
-
(オプション) [Docker credentials] で Docker ユーザー名を選択します。これは、コンテナイメージがプライベートリポジトリにある場合にのみ行ってください。
-
(オプション) 以下のサポートされている AWS 認証方法を指定できます。
-
(オプション) [IAM ロール] で、ロール ARN (arn:aws:iam::
AccountNumber
:role/RoleName
) を指定します。 -
(オプション) AWS 認証情報の場合は、IAM ユーザーに基づいて認証する AWS 認証情報を指定します。
-
(オプション) [AWS プロファイル名] で、プロファイル名を使用して認証するプロファイルの名前を指定します。
-
-
(オプション) 脆弱性しきい値を有効にするを選択します。このオプションを使用すると、スキャンされた脆弱性が値を超えた場合にビルドが失敗するかどうかを判断できます。すべての値が に等しい場合
0
、スキャンされる脆弱性の数に関係なく、ビルドは成功します。EPSS スコアの値は 0~1 です。スキャンされた脆弱性が値を超えると、ビルドは失敗し、値を超える EPSS スコアを持つすべての CVEs がコンソールに表示されます。
-
-
[保存] を選択します。
Jenkins 宣言型パイプラインを使用した Amazon Inspector スキャンのビルドへの追加
Jenkins 宣言型パイプラインを使用して、自動または手動で Amazon Inspector スキャンをビルドに追加できます。
SBOMGen 宣言パイプラインを自動的にダウンロードするには
-
Amazon Inspector スキャンをビルドに追加するには、次の構文例を使用します。プライベートリポジトリを使用している場合は、
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', archivePath: 'IMAGE_PATH', // Path to your container image or tar file awsRegion: 'REGION', // AWS region for scan requests iamRole: 'IAM ROLE', // IAM role ARN for authentication credentialId: 'Id', // Docker credentials (empty if public repo) awsCredentialId: 'AWS ID', // AWS credential ID for authentication awsProfileName: 'Profile Name', // AWS profile name to use sbomgenSkipFiles: '*.log,node_modules,/tmp/*', // Files/directories to exclude from scanning // Vulnerability threshold settings (updated parameter names) isSeverityThresholdEnabled: false, // Enable/disable build failure on vulnerability count countCritical: 0, // Max critical vulnerabilities before build fails countHigh: 0, // Max high vulnerabilities before build fails countMedium: 5, // Max medium vulnerabilities before build fails countLow: 10, // Max low vulnerabilities before build fails // EPSS (Exploit Prediction Scoring System) settings isEpssThresholdEnabled: false, // Enable/disable EPSS-based failure threshold epssThreshold: 0.7, // EPSS score threshold (0.0 to 1.0) // NEW FEATURE: CVE Suppression - ignore specific false positives isSuppressedCveEnabled: false, // Enable CVE suppression feature suppressedCveList: '', // Comma-separated list of CVEs to ignore in thresholds // NEW FEATURE: Auto-Fail CVEs - always fail on critical security issues isAutoFailCveEnabled: false, // Enable auto-fail CVE feature autoFailCveList: '' // Comma-separated list of CVEs that always fail build ]) } } } }
SBOMGen 宣言パイプラインを手動でダウンロードするには
-
Amazon Inspector スキャンをビルドに追加するには、次の構文例を使用します。
SBOMGEN_PATH
をステップ 3 でインストールした Amazon Inspector SBOM Generator へのパスに置き換え、IMAGE_PATH
をイメージへのパスに置き換え (alpine:latest
など)、IAM_ROLE
をステップ 1 で設定した IAM ロールの ARN に置き換え、プライベートリポジトリを使用している場合はID
を Docker の認証情報 ID に置き換えます。オプションで脆弱性のしきい値を有効にし、重大度ごとに値を指定できます。
注記
Jenkins ディレクトリSbomgenに を配置し、プラグインの 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', archivePath: 'IMAGE_PATH', // Path to your container image or tar file awsRegion: 'REGION', // AWS region for scan requests iamRole: 'IAM ROLE', // IAM role ARN for authentication credentialId: 'Id', // Docker credentials (empty if public repo) awsCredentialId: 'AWS ID', // AWS credential ID for authentication awsProfileName: 'Profile Name', // AWS profile name to use sbomgenSkipFiles: '*.log,node_modules,/tmp/*', // Files/directories to exclude from scanning // Vulnerability threshold settings (updated parameter names) isSeverityThresholdEnabled: false, // Enable/disable build failure on vulnerability count countCritical: 0, // Max critical vulnerabilities before build fails countHigh: 0, // Max high vulnerabilities before build fails countMedium: 5, // Max medium vulnerabilities before build fails countLow: 10, // Max low vulnerabilities before build fails // EPSS (Exploit Prediction Scoring System) settings isEpssThresholdEnabled: false, // Enable/disable EPSS-based failure threshold epssThreshold: 0.7, // EPSS score threshold (0.0 to 1.0) // NEW FEATURE: CVE Suppression - ignore specific false positives isSuppressedCveEnabled: false, // Enable CVE suppression feature suppressedCveList: '', // Comma-separated list of CVEs to ignore in thresholds // NEW FEATURE: Auto-Fail CVEs - always fail on critical security issues isAutoFailCveEnabled: false, // Enable auto-fail CVE feature autoFailCveList: '' // Comma-separated list of CVEs that always fail build ]) } } } }
プラグインには、セキュリティの脆弱性を管理するための機能が含まれています。
抑制された CVE リスト
スキャンは、実際の脅威ではない脆弱性を検出することがあります。これらの誤検出がビルドを停止しないようにするには、それらを抑制リストに追加できます。
isSuppressedCveEnabled: true, suppressedCveList: 'CVE-2023-1234,CVE-2023-5678'
これにより、ビルドが失敗するかどうかをチェックするときに、特定の CVEs は無視されます。誤検出は、対応した場合にのみ、抑制されたリストに追加する必要があります。これらの脆弱性を抑制リストに追加しても、CVEsセキュリティレポートに表示されますが、ビルドの失敗は発生しません。
Auto-Fail CVE リスト
重大なセキュリティの脆弱性については、ビルドが常に失敗する原因となるリストを作成できます。
isAutoFailCveEnabled: true, autoFailCveList: 'CVE-2024-9999'
これにより、有効にした設定に関係なく、ビルドは常に失敗します。このリストは、デプロイすべきではない優先度の高いセキュリティ問題に対してのみ作成する必要があります。このリストは、セキュリティを最大化するために他のすべてのしきい値設定を上書きします。
ステップ 7。Amazon Inspector の脆弱性レポートの確認
-
プロジェクトの新しいビルドを完了します。
-
ビルドが完了したら、結果から出力形式を選択します。HTML を選択した場合、JSON SBOM または CSV バージョンのレポートをダウンロードするオプションがあります。HTML レポートの例を以下に示します。

注記
プラグインは古いパラメータ名をサポートしているため、古いスクリプトを使用できます。ただし、コンソールでこれらのパラメータを新しいパラメータに更新することを示す警告が表示されます。たとえば、 を使用する場合isThresholdEnabled
、 パラメータを に更新することを示す警告が表示されますisSeverityThresholdEnabled
。
トラブルシューティング
Jenkins 向け Amazon Inspector スキャンプラグインを使用する際に発生する可能性がある一般的なエラーを以下に示します。
認証情報の読み込み失敗または sts 例外エラー
エラー:
InstanceProfileCredentialsProvider(): Failed to load credentials or sts exception.
解決策
AWS アカウントの aws_access_key_id
と aws_secret_access_key
を取得します。~/.aws/credentials
の aws_access_key_id
とaws_secret_access_key
をセットアップします。
ターボール、ローカル、またはリモートソースからイメージの読み込み失敗
エラー:
2024/10/16 02:25:17 [ImageDownloadFailed]: failed to load image from tarball, local, or remote sources.
注記
このエラーが発生する可能性があるのは、Jenkins プラグインがコンテナイメージを読み取れず、コンテナイメージが Docker エンジンに見つからない場合、およびコンテナイメージがリモートコンテナレジストリに見つからない場合です。
解決策:
以下について確認してください。
-
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?
解決策:
この問題を解決するには、次の手順を完了します。
-
正しい OS アーキテクチャ Inspector-sbomgen を Jenkins ディレクトリに配置します。詳細については、「Amazon Inspector SBOM Generator」を参照してください。
-
以下のコマンドを使用して、バイナリに実行権限を付与します:
chmod +x inspector-sbomgen
。 -
/opt/folder/arm64/inspector-sbomgen
など、プラグインで正しい Jenkins マシンパスを指定します。 -
設定を保存し、Jenkins ジョブを実行します。