Jenkins とコンテナーを使用したスキャン自動化の構成
HCL Harbor および HCL® AppScan® Source (MHS) から入手できる、My HCL ソフトウェア・ポータル コマンド行インターフェース (CLI) コンテナーを使用すると、AppScan® Source のフル・インスタンスをインストールしなくても、Jenkins による静的分析スキャンを自動化できます。
前提条件
- Podman がインストールされた Linux エージェント/ホストを 1 つ以上含む Jenkins 環境。
これが、CLI コンテナー を使用して静的分析スキャンを実行する対象となるシステムです。
-
AppScan® Source for Automation の有効なライセンスと関連するライセンス・サーバー情報。
-
AppScan® Source CLI コンテナー・イメージ
HCL Harbor または AppScan® Source から My HCL ソフトウェア・ポータル CLI コンテナー・イメージをダウンロードします。有効なライセンスがあれば、HCL ID を使用して、これらの場所にアクセスできます。
-
AppScan® Source CLI スクリプト
Jenkins パイプラインを使用してコンテナーでスキャンするには、スクリプトが必要です。
-
コンテナーから Jenkins ホスト/エージェントのコンテンツへのアクセス:
スキャン対象のアプリケーションは、スキャンを実行する Jenkins ホストからアクセスできる必要があります。
注: ボリューム・マッピング (コンテナー・ホスト上のパスからコンテナー内のパスへのマッピング) が、この目的でスキャンのインスタンス化中に使用されます。
スキャン対象のアプリケーションの準備
paf/ppfファイル- フォルダー・スキャン
paf/ppf ファイルを使用したスキャン対象のアプリケーションの準備- HCL® AppScan® Source for Analysis がインストールされた Linux システム上の AppScan® Source クライアントを使用して、
paf/ppfファイルを生成します。pafおよびppfファイルがスキャン対象のアプリケーションのルートにあることを確認します。 - アプリケーション・ファイルと
paf/ppfファイルが、Jenkins ホスト/エージェントからアクセス可能であることを確認します。例えば、アプリケーションが Jenkins ホスト/エージェントのルート・パス、
/usr/user1/SampleAppでアクセス可能な場合、paf/ppfファイルは/usr/user1/SampleApp/SampleApp.pafおよび/usr/user1/SampleApp/SampleApp.ppfにあります。 - コンテナーから見えるボリュームの名前を特定します。例えば、ホスト上の
/usr/user1をコンテナー内のcvolにマッピングします。注: ボリューム・マッピングは、コンテナーで CLI を実行するときに指定されます。 - CLI スクリプトを作成します。例えば、/
usr/user1/SampleAppのSampleApp.scriptです。この例のスクリプトは、cvolパスを使用して、アプリケーション・コンテンツにアクセスするようにコンテナーに伝えます。リストされているコマンドは、AppScan® Source CLI (手動介入なしのスキャン) で使用されるコマンドです。login … oa /cvol/SampleApp/SampleAll.ppf scan … logout
- アプリケーション・ファイルは Jenkins ホスト/エージェントからアクセス可能であることを確認します。
例えば、アプリケーションは Jenkins ホスト/エージェント上のパス /
usr/user1/SampleAppでアクセスできます。 - コンテナーから見えるボリュームの名前を特定します。例えば、ホスト上の
/usr/user1をコンテナー内のcvolにマッピングします。注: ボリューム・マッピングは、コンテナーで CLI を実行するときに指定されます。 - CLI スクリプトを作成します。例えば、
/usr/user1/SampleAppのSampleApp.scriptです。login … of /cvol/SampleApp/SampleAll scan … logout
Jenkins ホスト/エージェントでのランタイム環境の準備
- AppScan® Source から Jenkins ホストに My HCL ソフトウェア・ポータル CLI コンテナーをダウンロードするか、HCL Harbor から直接アクセスします。
MHS からダウンロードした場合は、
podman loadコマンドを使用して CLI コンテナー・イメージをロードします。 - スキャン中に CLI コンテナーで使用できるようにする必要がある環境変数のリストを含むファイル (
env.listなど) を作成します。必須情報の一部には以下が含まれます。
パラメーターの完全なリストは、こちらから入手可能です。AS_INSTALL_MODE=standalone AS_LICENSE_URL=<license server url>
コンテナー・イメージを使用した静的分析スキャンの開始
- HCL Harbor のコンテナー・イメージを使用する
- My HCL ソフトウェア・ポータル のコンテナー・イメージを使用する
HCL Harbor のコンテナー・イメージを使用したスキャンの開始
- Linux次のシェル・コマンドを Jenkins パイプラインに組み込んで SampleApp をスキャンします。Jenkins ホスト/エージェント上の
/usr/user1が、コンテナー内のcvolにマッピングされていることに注意してください。CLI コンテナーの目的のバージョンに基づいて、バージョン文字列を調整します。sh "podman run --rm --volume /usr/user1:/cvol --env-file /cvol/SampleApp/ env.list hclcr.io/appscan/appscan-src-cli:10.10.0 script /cvol/SampleApp/SampleApp.script - Podman Jenkins プラグイン次の Podman Jenkins プラグイン API を Jenkins パイプラインに組み込んで SampleApp をスキャンします。Jenkins ホスト/エージェント上の
/usr/user1が、コンテナー内のcvolにマッピングされていることに注意してください。CLI コンテナーの目的のバージョンに基づいて、バージョン文字列を調整します。podman.image('hclcr.io/appscan/appscan-src-cli:10.10.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script') sh "podman logs --follow container-SampleApp"
My HCL ソフトウェア・ポータル のコンテナー・イメージを使用したスキャンの開始
tar.gz) で My HCL ソフトウェア・ポータル で使用できます。スキャンに使用する前に、コンテナー・イメージをロードする必要があります。- Jenkins ホスト/エージェントにコンテナー・イメージをダウンロードします。例えば、
/appscansrc/appscan-src-cli-10.10.0.tar.gzです。コンテナー・イメージは使用前にロードする必要があります。
- Linux シェル・コマンドまたは Podman Linux プラグインを使用してスキャンを実行します。
- Linux次のシェル・コマンドを Jenkins パイプラインに組み込んで SampleApp をスキャンします。Jenkins ホスト/エージェント上の
/usr/user1が、コンテナー内のcvolにマッピングされていることに注意してください。CLI コンテナーの目的のバージョンに基づいて、バージョン文字列を調整します。podman load -i /appscansrc/appscan-src-cli-10.10.0.tar.gz sh "podman run --rm --env-file /cvol/SampleApp/env.list --volume /usr/user1:/cvol appscansrc/appscan-src-cli:10.10.0 script /cvol/SampleApp/cli.script" - Podman Jenkins プラグイン次の Podman Jenkins プラグイン API を Jenkins パイプラインに組み込んで SampleApp をスキャンします。Jenkins ホスト/エージェント上の
/usr/user1が、コンテナー内のcvolにマッピングされていることに注意してください。CLI コンテナーの目的のバージョンに基づいて、バージョン文字列を調整します。podman.image(‘appscan-src-cli:10.10.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script') sh "podman logs --follow container-SampleApp"
- Linux