GitLab CI/CD およびコンテナーを使用したスキャン自動化の構成

HCL Harbor および HCL FlexNet Operations ポータル (FNO) から入手できる、HCL®AppScan® ソース コマンド行インターフェース (CLI) コンテナーを使用すると、AppScan® ソース のフル・インスタンスをインストールしなくても、GitLab による静的分析スキャンを自動化できます。

コンテナーを使用したスキャンの主な手順は次のとおりです。
  1. アプリケーションを準備します。
  2. HCL FNO のコンテナー・イメージを使用して、GitLab CI/CD を準備します。
  3. 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 ファイルを使用したスキャン対象のアプリケーションの準備
  1. AppScan® ソース がインストールされた Linux システム上の HCL®AppScan® Source for Analysis クライアントを使用して、paf/ppf ファイルを生成します。

    paf および ppf ファイルがスキャン対象のアプリケーションのルートにあることを確認します。

  2. アプリケーション・ファイルと paf/ppf ファイルが、GitLab CI/CD ランナーからアクセス可能であることを確認します。

    例えば、アプリケーションが GitLab CI/CD ランナーのルート・パス、/usr/user1/SampleApp でアクセス可能な場合、paf/ppf ファイルは /usr/user1/SampleApp/SampleApp.paf および /usr/user1/SampleApp/SampleApp.ppf にあります。

  3. コンテナーから見えるボリュームの名前を特定します。
    例えば、ホスト上の /usr/user1 をコンテナー内の cvol にマッピングします。
    注: ボリューム・マッピングは、コンテナーで CLI を実行するときに指定されます。
  4. CLI スクリプトを作成します。例えば、/usr/user1/SampleAppSampleApp.script です。
    この例のスクリプトは、cvol パスを使用して、アプリケーション・コンテンツにアクセスするようにコンテナーに伝えます。リストされているコマンドは、AppScan® ソース CLI (手動介入なしのスキャン) で使用されるコマンドです。
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout
フォルダー・スキャン用のアプリケーションの準備:
  1. アプリケーション・ファイルは GitLab CI/CD ランナーからアクセス可能であることを確認します。

    例えば、アプリケーションは、GitLab CI/CD ランナー上のパス /usr/user1/SampleApp でアクセスできます。

  2. コンテナーから見えるボリュームの名前を特定します。
    例えば、ホスト上の /usr/user1 をコンテナー内の cvol にマッピングします。
    注: ボリューム・マッピングは、コンテナーで CLI を実行するときに指定されます。
  3. CLI スクリプトを作成します。例えば、/usr/user1/SampleAppSampleApp.script です。
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout

GitLab CI/CD ランナーでのランタイム環境の準備

GitLab CI/CD ランナーでランタイム環境を準備するには:
  1. HCL FNO から GitLab ホストに AppScan® ソース CLI コンテナーをダウンロードするか、HCL Harbor から直接アクセスします。

    HCL FNO からダウンロードした場合は、docker load コマンドを使用して CLI コンテナー・イメージをロードします。

  2. 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 ランナーを使用した静的分析スキャンの開始

静的分析スキャンを開始するには:
  1. GitLab CI/CD ランナーがオンラインであることを確認します。GitLab で、「管理」 > 「ランナー」を選択し、ステータスを確認します。
  2. 「管理」 > 「Joba」 を選択すると、ブランチ内に存在する .yaml スクリプトを使用して、静的分析スキャンが開始します。