Jenkins とコンテナーを使用したスキャンの自動化の構成
HCL Harbor および HCL FlexNet Operations ポータル (FNO) から使用可能な HCL®AppScan® ソース コマンド行インターフェース (CLI) コンテナーを使用すると、AppScan® ソース の完全なインスタンスをインストールせずに、Jenkins での静的分析スキャンを自動化することができます。
- アプリケーションの準備
- ランタイム環境の準備
- コンテナー・イメージからのスキャンの開始
前提条件
- Jenkins 環境 (Docker を備えた 1 つ以上の Linux エージェント/ホストを含む) がインストールされている。
これが、CLI コンテナーを使用して静的分析スキャンを実行する対象となるシステムです。
-
AppScan® Source for Automation の有効なライセンスと、関連するライセンス・サーバー情報。
-
AppScan® ソース CLI コンテナー・イメージ
HCL Harbor または HCL FNO から AppScan® ソース CLI コンテナー・イメージをダウンロードします。有効なライセンスがあると、使用している HCL ID にこれらの場所へのアクセス権限が付与されます。
-
AppScan® ソース CLI スクリプト
Jenkins パイプライン内のコンテナーを使用してスキャンするには、スクリプトが必要です。
-
コンテナーからの Jenkins ホスト/エージェント上のコンテンツへのアクセス:
スキャン対象のアプリケーションは、スキャンを実行している Jenkins ホストからアクセス可能である必要があります。
注: ボリューム・マッピング (コンテナー・ホスト上のパスからコンテナー内のパスへのマッピング) は、スキャンのインスタンス化時にこの目的で使用されます。
スキャン対象のアプリケーションの準備
paf
/ppf
ファイル- フォルダー・スキャン
paf
/ppf
ファイルを使用したスキャン対象のアプリケーションの準備- AppScan® ソース がインストールされている Linux システム上で、HCL®AppScan® Source for Analysis クライアントを使用して
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® ソース 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 … oa /cvol/SampleApp/SampleAll.ppf scan … logout
Jenkins ホスト/エージェントでのランタイム環境の準備
- AppScan® ソース CLI コンテナーを HCL FNO から Jenkins ホストにダウンロードするか、HCL Harbor から直接アクセスします。
HCL FNO からダウンロードした場合は、
docker load
コマンドを使用して CLI コンテナー・イメージをロードします。 - スキャン中に CLI コンテナーで使用可能にする必要がある環境変数のリストを含むファイル (例えば、
env.list
) を作成します。必要な情報の一部を以下に示します。
パラメーターの完全なリストは、こちらから見つけることができます。AS_INSTALL_MODE=standalone AS_LICENSE_TYPE=CLS AS_LICENSE_SERVER_ID=<specify the license server ID>
コンテナー・イメージを使用した静的分析スキャンの開始
- HCL Harbor からのコンテナー・イメージの使用
- FlexNet Operations (FNO) からのコンテナー・イメージの使用
HCL Harbor からのコンテナー・イメージを使用したスキャンの開始
- Linux以下のシェル・コマンドを Jenkins パイプラインに組み込んで、SampleApp をスキャンします。Jenkins ホスト/エージェント上の
/usr/user1
は、コンテナー内のcvol
にマップされることに注意してください。CLI コンテナーの目的のバージョンに基づいて、バージョン・ストリングを調整します。sh "docker run --rm --volume /usr/user1:/cvol --env-file /cvol/SampleApp/ env.list hclcr.io/appscan/appscan-src-cli:10.1.0 script /cvol/SampleApp/SampleApp.script
- Docker Jenkins プラグイン以下の Docker Jenkins プラグイン API を Jenkins パイプラインに組み込んで、SampleApp をスキャンします。Jenkins ホスト/エージェント上の
/usr/user1
は、コンテナー内のcvol
にマップされることに注意してください。CLI コンテナーの目的のバージョンに基づいて、バージョン・ストリングを調整します。docker.image('hclcr.io/appscan/appscan-src-cli:10.1.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script') sh "docker logs --follow container-SampleApp"
HCL FNO からのコンテナー・イメージを使用したスキャンの開始
tar.gz
) で使用できます。スキャンのために使用する前に、コンテナー・イメージをロードする必要があります。- コンテナー・イメージを Jenkins ホスト/エージェントにダウンロードします。例えば、
/appscansrc/appscan-src-cli-10.1.0.tar.gz
です。使用する前に、コンテナー・イメージをロードする必要があります。
- Linux シェル・コマンドまたは Docker Linux プラグインを使用してスキャンを実行します。
- Linux以下のシェル・コマンドを Jenkins パイプラインに組み込んで、SampleApp をスキャンします。Jenkins ホスト/エージェント上の
/usr/user1
は、コンテナー内のcvol
にマップされることに注意してください。CLI コンテナーの目的のバージョンに基づいて、バージョン・ストリングを調整します。docker load -i /appscansrc/appscan-src-cli-10.1.0.tar.gz sh "docker run --rm --env-file /cvol/SampleApp/env.list --volume /usr/user1:/cvol appscansrc/appscan-src-cli:10.1.0 script /cvol/SampleApp/cli.script"
- Docker Jenkins プラグイン以下の Docker Jenkins プラグイン API を Jenkins パイプラインに組み込んで、SampleApp をスキャンします。Jenkins ホスト/エージェント上の
/usr/user1
は、コンテナー内のcvol
にマップされることに注意してください。CLI コンテナーの目的のバージョンに基づいて、バージョン・ストリングを調整します。docker.image(‘appscan-src-cli:10.1.0').run('--name container-SampleApp --rm –-volume /usr/user1:/cvol --env-file /cvol/SampleApp/env.list script /cvol/SampleApp/SampleApp.script') sh "docker logs --follow container-SampleApp"
- Linux