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 ファイルを使用したスキャン対象のアプリケーションの準備
  1. HCL® AppScan® Source for Analysis がインストールされた Linux システム上の AppScan® Source クライアントを使用して、paf/ppf ファイルを生成します。

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

  2. アプリケーション・ファイルと paf/ppf ファイルが、Jenkins ホスト/エージェントからアクセス可能であることを確認します。

    例えば、アプリケーションが Jenkins ホスト/エージェントのルート・パス、/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® Source CLI (手動介入なしのスキャン) で使用されるコマンドです。
    login …
    oa /cvol/SampleApp/SampleAll.ppf
    scan
    …
    logout
フォルダー・スキャン用のアプリケーションの準備:
  1. アプリケーション・ファイルは Jenkins ホスト/エージェントからアクセス可能であることを確認します。

    例えば、アプリケーションは Jenkins ホスト/エージェント上のパス /usr/user1/SampleApp でアクセスできます。

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

Jenkins ホスト/エージェントでのランタイム環境の準備

Jenkins ホスト/エージェントでランタイム環境を準備するには:
  1. AppScan® Source から Jenkins ホストに My HCL ソフトウェア・ポータル CLI コンテナーをダウンロードするか、HCL Harbor から直接アクセスします。

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

  2. スキャン中に CLI コンテナーで使用できるようにする必要がある環境変数のリストを含むファイル (env.list など) を作成します。必須情報の一部には以下が含まれます。
    AS_INSTALL_MODE=standalone
    AS_LICENSE_URL=<license server url>
    パラメーターの完全なリストは、こちらから入手可能です。

コンテナー・イメージを使用した静的分析スキャンの開始

以下の 2 つの方法のいずれかを使用してスキャンを開始します。

HCL Harbor のコンテナー・イメージを使用したスキャンの開始

Linux シェル・コマンドまたは Podman Linux プラグインを使用してスキャンを実行します。
  • 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 ソフトウェア・ポータル のコンテナー・イメージを使用したスキャンの開始

AppScan® Source CLI コンテナー・イメージは、アーカイブ形式 (tar.gz) で My HCL ソフトウェア・ポータル で使用できます。スキャンに使用する前に、コンテナー・イメージをロードする必要があります。
  1. Jenkins ホスト/エージェントにコンテナー・イメージをダウンロードします。例えば、/appscansrc/appscan-src-cli-10.10.0.tar.gz です。

    コンテナー・イメージは使用前にロードする必要があります

  2. 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"
注: バージョン 10.3.0 で、AppScan® SourcePodman を使用したコンテナー化をサポートしています。Docker は Red Hat Enterprise Linux 8 と 9 ではサポートされていないため、ホストで RHEL 8 または 9 が実行されている場合、Podman を使用してください。Podman は主要なすべての Docker コマンドをサポートしています。このトピックの例の Docker を Podman に置き換えて、Podman 環境でコンテナーを作成してスキャンします。