

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Inspector Jenkins プラグインを使用する
<a name="cicd-jenkins"></a>

 この Jenkins プラグインは、[Amazon Inspector SBOM Generator](https://docs.aws.amazon.com/inspector/latest/user/sbom-generator.html#sbomgen-supported) バイナリと Amazon Inspector スキャン API を活用して、ビルドの最後に詳細なレポートを作成します。これにより、デプロイ前にリスクを調査して修正できます。Amazon Inspector Jenkins プラグインを使用すると、Amazon Inspector の脆弱性スキャンを Jenkins パイプラインに追加することができます。検出された脆弱性の数と重大度に基づいて、パイプラインの実行に成功または失敗するように Amazon Inspector 脆弱性スキャンを設定できます。Jenkins プラグインの最新バージョンは、Jenkins のマーケットプレイス ([https://plugins.jenkins.io/amazon-inspector-image-scanner/](https://plugins.jenkins.io/amazon-inspector-image-scanner/)) で確認できます。次の手順は、Amazon Inspector  Jenkins プラグインを設定する方法を示しています。

**重要**  
 次の手順を完了する前に、プラグインを実行するために Jenkins をバージョン 2.387.3 以降にアップグレードする必要があります。

## ステップ 1. のセットアップ AWS アカウント
<a name="cicd-jenkins-enable"></a>

 Amazon Inspector スキャン API へのアクセスを許可する IAM ロール AWS アカウント を使用して を設定します。手順については、「[Amazon Inspector CI/CD 統合を使用するように AWS アカウントを設定する](configure-cicd-account.md)」を参照してください。

## ステップ 2. Amazon Inspector Jenkins プラグインのインストール
<a name="cicd-jenkins-install-jenkins-plugin"></a>

 次の手順は、Jenkins ダッシュボードから Amazon Inspector Jenkins プラグインをインストールする方法を示しています。

1.  Jenkins ダッシュボードから、**[Jenkins の管理]** を選択し、**[プラグインの管理]** を選択します。

1.  **[利用可能]** を選択します。

1.  **[利用可能]** タブから **[Amazon Inspector スキャン]** を検索し、プラグインをインストールします。

## (オプション) ステップ 3. Jenkins への Docker 認証情報の追加
<a name="cicd-jenkins-add-jenkins"></a>

**注記**  
 Docker イメージがプライベートリポジトリにある場合にのみ、Docker 認証情報を追加します。それ以外の場合は、この手順をスキップしてください。

 次の手順は、Jenkins ダッシュボードから Jenkins に Docker 認証情報を追加する方法を示しています。

1.  Jenkins ダッシュボードから、**[Jenkins の管理]**、**[認証情報]**、**[システム]** の順に選択します。

1.  **[グローバル認証情報]**、**[認証情報を追加]** の順に選択します。

1.  **[種類]** で、**[パスワード付きのユーザー名]** を選択します。

1.  **[スコープ]** で、**[グローバル (Jenkins、ノード、項目、すべての子項目など)]** を選択します。

1.  詳細を入力し、**[OK]** を選択します。

## (オプション) ステップ 4. AWS 認証情報を追加する
<a name="cicd-jenkins-add-aws-credentials"></a>

**注記**  
 IAM ユーザーに基づいて認証する場合にのみ、 AWS 認証情報を追加します。それ以外の場合は、この手順をスキップしてください。

 次の手順では、Jenkinsダッシュボードから AWS 認証情報を追加する方法について説明します。

1.  Jenkins ダッシュボードから、**[Jenkins の管理]**、**[認証情報]**、**[システム]** の順に選択します。

1.  **[グローバル認証情報]**、**[認証情報を追加]** の順に選択します。

1.  **[種類]** で、**[AWS 認証情報]** を選択します。

1.  **[アクセスキー ID]** や **[シークレットアクセスキー]** などの詳細を入力し、**[OK]** を選択します。

## ステップ 5. Jenkins スクリプトへの CSS サポートの追加
<a name="cicd-jenkins-add-css-support"></a>

 次の手順は、Jenkins スクリプトに CSS サポートを追加する方法を示しています。

1.  Jenkins を再起動します。

1.  ダッシュボードから、**[Jenkins の管理]**、**[ノード]**、**[組み込みノード]** **[スクリプトコンソール]** の順に選択します。

1.  テキストボックスに行 `System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")` を追加し、**[実行]** を選択します。

## ステップ 6. Amazon Inspector スキャンのビルドへの追加
<a name="cicd-jenkins-add-inspector-scan"></a>

 Amazon Inspector スキャンをビルドに追加するには、プロジェクトにビルドステップを追加するか、Jenkins 宣言型パイプラインを使用します。

### プロジェクトでのビルドステップの追加による Amazon Inspector スキャンのビルドへの追加
<a name="w2aac39c17c19b5"></a>

1.  設定ページで **[構築ステップ]** まで下にスクロールし、**[構築ステップを追加]** を選択します。次に、**[Amazon Inspector スキャン]** を選択します。

1.  inspector-sbomgen のインストール方法は、**自動** と **手動** の 2 つから選択します。自動オプションを使用すると、プラグインによって最新バージョンがダウンロードされます。また、常に最新の機能、セキュリティ更新、バグ修正を利用することができます。

   1.  (オプション 1) **[自動]**を選択して、最新バージョンの inspector-sbomgen をダウンロードします。このオプションは、現在使用中のオペレーティングシステムと CPU アーキテクチャを自動的に検出します。

   1.  (オプション 2) スキャン用に Amazon Inspector SBOM Generator バイナリを設定する場合は、**[手動]**を選択します。この方法を選択した場合は、以前にダウンロードしたバージョンの inspector-sbomgen への完全なパスを必ず指定してください。

    詳細については、「[Amazon Inspector SBOM Generator](https://docs.aws.amazon.com/inspector/latest/user/sbom-generator.html)」の「[Amazon Inspector SBOM Generator (Sbomgen) のインストール](https://docs.aws.amazon.com/inspector/latest/user/sbom-generator.html#install-sbomgen)」を参照してください。

1.  Amazon Inspector スキャンのビルドステップの設定を完了するには、以下を実行します。

   1.  **[Image Id]** を入力します。イメージはローカル、リモート、アーカイブされたもののいずれでもかまいません。イメージ名は Docker の命名規則に従う必要があります。エクスポートされたイメージを分析する場合は、予想される tar ファイルへのパスを指定します。イメージ ID のパスの例については、以下を参照してください。

      1.  ローカルコンテナまたはリモートコンテナの場合: `NAME[:TAG|@DIGEST]` 

      1.  tar ファイルの場合: `/path/to/image.tar` 

   1.  **[AWS リージョン]** を選択して、スキャンリクエストを送信します。

   1.  (オプション) **[アーティファクト名のレポート]** に、ビルドプロセス中に生成されたアーティファクトのカスタム名を入力します。これにより、それらを一意に識別および管理できます。

   1.  (オプション) **[ファイルのスキップ]** には、スキャンから除外する 1 つ以上のディレクトリを指定します。サイズの都合でスキャンする必要がないディレクトリについては、このオプションを検討してください。

   1.  (オプション) **[Docker credentials]** で Docker ユーザー名を選択します。これは、コンテナイメージがプライベートリポジトリにある場合にのみ行ってください。

   1.  (オプション) 以下のサポートされている AWS 認証方法を指定できます。

      1.  (オプション) **[IAM ロール]** で、ロール ARN (arn:aws:iam::*AccountNumber*:role/*RoleName*) を指定します。

      1.  (オプション) **AWS 認証情報**の場合は、IAM ユーザーに基づいて認証する AWS 認証情報を指定します。

      1.  (オプション) **[AWS プロファイル名]** で、プロファイル名を使用して認証するプロファイルの名前を指定します。

   1.  (オプション) **[脆弱性のしきい値の有効化]** を選択します。このオプションでは、スキャンされた脆弱性が指定した値を超えた場合にビルドを失敗させるかどうかを指定できます。すべての値が `0` に等しい場合、スキャンされる脆弱性の数に関係なく、ビルドは成功します。EPSS スコアの場合、値は 0～1 の範囲になります。スキャンされた脆弱性が値を超えると、ビルドは失敗し、値を超える EPSS スコアを持つすべての CVE がコンソールに表示されます。

1.  **[保存]** を選択します。

### Jenkins 宣言型パイプラインを使用した Amazon Inspector スキャンのビルドへの追加
<a name="w2aac39c17c19b7"></a>

 Jenkins 宣言型パイプラインを使用して、自動または手動で Amazon Inspector スキャンをビルドに追加できます。

**SBOMGen 宣言パイプラインを自動的にダウンロードするには**
+  Amazon Inspector スキャンをビルドに追加するには、次の構文例を使用します。プライベートリポジトリを使用している場合は、*IMAGE\$1PATH* をイメージへのパス (*alpine:latest* など) に置き換え、*IAM ロール*をステップ 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\$1PATH* をステップ 3 でインストールした Amazon Inspector SBOM Generator へのパスに置き換え、*IMAGE\$1PATH* をイメージへのパスに置き換え (*alpine:latest* など)、*IAM\$1ROLE* をステップ 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'
```

 これにより、ビルドを失敗させるかどうかをチェックするときに、特定の CVE は無視されます。対処済みの場合にのみ、誤検出を除外リストに追加する必要があります。これらの脆弱性は除外リストに追加しても CVE セキュリティレポートに表示されますが、ビルドは失敗しません。

**Auto-Fail CVE リスト**  
 重大なセキュリティの脆弱性については、ビルドを必ず失敗させる脆弱性のリストを作成できます。

```
isAutoFailCveEnabled: true,
autoFailCveList: 'CVE-2024-9999'
```

 有効にした設定に関係なく、ビルドは必ず失敗します。このリストは、決してデプロイしてはならない高優先度のセキュリティ問題に対してのみ作成する必要があります。このリストは、他のすべてのしきい値設定を上書きし、セキュリティを最大化します。

## ステップ 7. Amazon Inspector の脆弱性レポートの確認
<a name="cicd-jenkin-view-vulnerability-report"></a>

1.  プロジェクトの新しいビルドを完了します。

1.  ビルドが完了したら、結果から出力形式を選択します。HTML を選択した場合、JSON SBOM または CSV バージョンのレポートをダウンロードするオプションがあります。HTML レポートの例を以下に示します。

![\[Amazon Inspector の脆弱性レポートのサンプル。\]](http://docs.aws.amazon.com/ja_jp/inspector/latest/user/images/report.png)


**注記**  
 プラグインは古いパラメータ名をサポートしているため、古いスクリプトを使用できます。ただし、これらのパラメータを新しいパラメータに更新することを推奨する警告がコンソールに表示されます。例えば、 `isThresholdEnabled` を使用する場合、 パラメータを `isSeverityThresholdEnabled` に更新することを推奨する警告が表示されます。

## トラブルシューティング
<a name="jenkins-troubleshooting"></a>

 Jenkins 向け Amazon Inspector スキャンプラグインを使用する際に発生する可能性がある一般的なエラーを以下に示します。

### 認証情報の読み込み失敗または sts 例外エラー
<a name="w2aac39c17c23b5"></a>

**エラー:**  
 `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` をセットアップします。

### ターボール、ローカル、またはリモートソースからイメージの読み込み失敗
<a name="w2aac39c17c23b7"></a>

**エラー:**  
 `2024/10/16 02:25:17 [ImageDownloadFailed]: failed to load image from tarball, local, or remote sources.` 

**注記**  
 このエラーが発生する可能性があるのは、Jenkins プラグインがコンテナイメージを読み取れず、コンテナイメージが Docker エンジンに見つからない場合、およびコンテナイメージがリモートコンテナレジストリに見つからない場合です。

**解決策:**  
 以下について確認してください。
+  Jenkins プラグインユーザーには、スキャンするイメージに対する読み取りアクセス許可がある。
+  スキャンするイメージは Docker エンジンにある。
+  リモートイメージ URL が正しい。
+  リモートレジストリに対して認証されている (該当する場合)。

### Inspector-sbomgen パスエラー
<a name="w2aac39c17c23b9"></a>

**エラー:**  
 `Exception:com.amazon.inspector.jenkins.amazoninspectorbuildstep.exception.SbomgenNotFoundException: There was an issue running inspector-sbomgen, is /opt/inspector/inspector-sbomgen the correct path?` 

**解決策:**  
 この問題を解決するには、次の手順を完了します。

1.  正しい OS アーキテクチャ Inspector-sbomgen を Jenkins ディレクトリに配置します。詳細については、「[Amazon Inspector SBOM Generator](https://docs.aws.amazon.com/inspector/latest/user/sbom-generator.html)」を参照してください。

1.  以下のコマンドを使用して、バイナリに実行権限を付与します: `chmod +x inspector-sbomgen`。

1.  `/opt/folder/arm64/inspector-sbomgen` など、プラグインで正しい Jenkins マシンパスを指定します。

1.  設定を保存し、Jenkins ジョブを実行します。