GitLab CI/CD およびコンテナーを使用したスキャン自動化の構成
HCL Harbor および HCL FlexNet Operations ポータル (FNO) から入手できる、HCL®AppScan® ソース コマンド行インターフェース (CLI) コンテナーを使用すると、AppScan® ソース のフル・インスタンスをインストールしなくても、GitLab による静的分析スキャンを自動化できます。
- アプリケーションを準備します。
- HCL FNO のコンテナー・イメージを使用して、GitLab CI/CD を準備します。
- GitLab CI/CD ランナーを使用してスキャンを開始します。
前提条件:
- GitLab CI/CD 環境: Docker がインストールされた 1 つ以上の Linux RHEL 7.9 ベースの GitLab CI/CD ランナー。
これが、CLI コンテナー を使用して静的分析スキャンを実行する対象となるシステムです。
-
AppScan® Source for Automation の有効なライセンスと関連するライセンス・サーバー情報。
-
AppScan® ソース CLI コンテナー・イメージ
HCL Harbor または HCL FNO から AppScan® ソース CLI コンテナー・イメージをダウンロードします。有効なライセンスがあれば、HCL ID を使用して、これらの場所にアクセスできます。
-
AppScan® ソース CLI スクリプト
GitLab CI/CD を使用してコンテナーでスキャンするには、スクリプトが必要です。
- AppScan® ソース プロジェクト (
.ppf
) およびアプリケーション (.paf
) ファイル: AppScan® ソース for Analysis を使用して構成ファイルを生成します (スキャン・ターゲットにアクセスできる Linux システムに AppScan® ソース がインストールされている必要があります)。 - コンテナーから GitLab CI/CD ランナーのコンテンツへのアクセス:
- スキャン対象のアプリケーションが GitLab に存在し、スキャンを実行する GitLab CI/CD ランナーからアクセスできる必要があります。
.paf
/.ppf
ファイル
注: ボリューム・マッピング (コンテナー・ホスト上のパスからコンテナー内のパスへのマッピング) が、この目的でスキャンのインスタンス化中に使用されます。
スキャン対象のアプリケーションの準備
paf
/ppf
ファイル- フォルダー・スキャン
paf
/ppf
ファイルを使用したスキャン対象のアプリケーションの準備- AppScan® ソース がインストールされた Linux システム上の HCL®AppScan® Source for Analysis クライアントを使用して、
paf
/ppf
ファイルを生成します。paf
およびppf
ファイルがスキャン対象のアプリケーションのルートにあることを確認します。 - アプリケーション・ファイルと
paf
/ppf
ファイルが、GitLab CI/CD ランナーからアクセス可能であることを確認します。例えば、アプリケーションが GitLab CI/CD ランナーのルート・パス、
/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
- アプリケーション・ファイルは GitLab CI/CD ランナーからアクセス可能であることを確認します。
例えば、アプリケーションは、GitLab CI/CD ランナー上のパス /
usr/user1/SampleApp
でアクセスできます。 - コンテナーから見えるボリュームの名前を特定します。例えば、ホスト上の
/usr/user1
をコンテナー内のcvol
にマッピングします。注: ボリューム・マッピングは、コンテナーで CLI を実行するときに指定されます。 - CLI スクリプトを作成します。例えば、
/usr/user1/SampleApp
のSampleApp.script
です。login … oa /cvol/SampleApp/SampleAll.ppf scan … logout
GitLab CI/CD ランナーでのランタイム環境の準備
- HCL FNO から GitLab ホストに AppScan® ソース CLI コンテナーをダウンロードするか、HCL Harbor から直接アクセスします。
HCL FNO からダウンロードした場合は、
docker load
コマンドを使用して CLI コンテナー・イメージをロードします。 - HCL Harbor から AppScan® ソース CLI コンテナーを使用して、静的分析スキャンを実行するための
yaml
スクリプト・ファイルを作成します。以下に例を示します。# This is a basic workflow to help you get started with GitLab CI/CD variables: GIT_STRATEGY: clone build-job: stage: build script: - echo "Hello, $GITLAB_USER_LOGIN!" - chmod -R 777 $CI_PROJECT_DIR - docker run --rm --env-file $CI_PROJECT_DIR/env.list -v $CI_PROJECT_DIR/:/wa hclcr.io/appscan/appscan-src-cli:10.3.0 script /wa/CLI_jspWIKI.script - echo "Success, Scan complete" - rm -vrf $CI_PROJECT_DIR - echo "Clean up done"
GitLab CI/CD ランナーを使用した静的分析スキャンの開始
- GitLab CI/CD ランナーがオンラインであることを確認します。GitLab で、 を選択し、ステータスを確認します。
.yaml
スクリプトを使用して、静的分析スキャンが開始します。
を選択すると、ブランチ内に存在する