GitHub Action とコンテナーを使用したスキャン自動化の構成
HCL Harbor および HCL® AppScan® Source から入手できる、My HCL ソフトウェア・ポータル コマンド行インターフェース (CLI) コンテナーを使用すると、AppScan® Source のフル・インスタンスをインストールしなくても、GitHub による静的分析スキャンを自動化できます。
- アプリケーションを準備します。
- My HCL ソフトウェア・ポータル のコンテナー・イメージを使用して、GitHub Action を準備します。
- GitHub Action を使用してスキャンを開始します。
前提条件
- GitHub Action 環境: Podman がインストールされた 1 つ以上の Linux RHEL 7.9 ベースの GitHub Action ランナー。
これが、CLI コンテナー を使用して静的分析スキャンを実行する対象となるシステムです。
-
AppScan® Source for Automation の有効なライセンスと関連するライセンス・サーバー情報。
-
AppScan® Source CLI コンテナー・イメージ
HCL Harbor または AppScan® Source から My HCL ソフトウェア・ポータル CLI コンテナー・イメージをダウンロードします。有効なライセンスがあれば、HCL ID を使用して、これらの場所にアクセスできます。
-
AppScan® Source CLI スクリプト
GitHub Action を使用してコンテナーでスキャンするには、スクリプトが必要です。
- AppScan® Source プロジェクト (.ppf) およびアプリケーション (.paf) ファイル: AppScan® Source for Analysis を使用して構成ファイルを生成します (スキャン・ターゲットにアクセスできる Linux システムに AppScan® Source がインストールされている必要があります)。
- コンテナーから GitHub Action のコンテンツへのアクセス:
- スキャン対象のアプリケーションが GitHub に存在し、スキャンを実行する GitHub Action からアクセスできる必要があります。
.paf/.ppfファイル
注: ボリューム・マッピング (コンテナー・ホスト上のパスからコンテナー内のパスへのマッピング) が、この目的でスキャンのインスタンス化中に使用されます。
スキャン対象のアプリケーションの準備
.paf/.ppfファイル- フォルダー・スキャン
paf/ppf ファイルを使用したスキャン対象のアプリケーションの準備- HCL® AppScan® Source for Analysis がインストールされた Linux システム上の AppScan® Source クライアントを使用して、
.paf/.ppfファイルを生成します。.pafおよび.ppfファイルがスキャン対象のアプリケーションのルートにあることを確認します。 - アプリケーション・ファイルと
paf/ppfファイルが、GitHub Action ランナーからアクセス可能であることを確認します。例えば、アプリケーションがルート・パス、
/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
- アプリケーション・ファイルは GitHub Action ランナーからアクセス可能であることを確認します。
例えば、アプリケーションは GitHub Action ランナー上のパス /
usr/user1/SampleAppでアクセスできます。 - コンテナーから見えるボリュームの名前を特定します。例えば、ホスト上の
/usr/user1をコンテナー内のcvolにマッピングします。注: ボリューム・マッピングは、コンテナーで CLI を実行するときに指定されます。 - CLI スクリプトを作成します。例えば、
/usr/user1/SampleAppのSampleApp.scriptです。login … oa /cvol/SampleApp/SampleAll.ppf scan … logout
CLI コンテナー・イメージを使用した GitHub Action の準備
- AppScan® Source から GitHub ホストに My HCL ソフトウェア・ポータル CLI コンテナーをダウンロードするか、HCL Harbor から直接アクセスします。
My HCL ソフトウェア・ポータル からダウンロードした場合は、
podman loadコマンドを使用して CLI コンテナー・イメージをロードします。 - HCL Harbor から AppScan® Source CLI コンテナーを使用して、静的分析スキャンを実行するための
yamlスクリプト・ファイルを作成し、適切なブランチに配置します。例:# This is a basic workflow to help you get started with Actions name: CI # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the development branch push: <name of the branch used for running SAST scan> pull_request: <name of the branch used for running SAST scan> # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" SAST_SCAN: # The type of runner that the job will run on , here we used a self-hosted runner runs-on: [ self-hosted ] # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so our job can access it - uses: actions/checkout@v2 # Displays current working path - name: Display current workspace run: echo $GITHUB_WORKSPACE . - name: podman cleanup run : podman system prune -a -f - name: podman run run : podman run --rm --env-file $GITHUB_WORKSPACE/env.list -v $GITHUB_WORKSPACE/:/wa hclcr.io/appscan/appscan-src-cli:10.1.0 script /wa/CLI.script - name: podman cleanup run : podman system prune -a -f - name: Success run: echo Scan completed successfully.
GitHub Action ランナーを使用した静的分析スキャンの開始
- GitHub Action ランナーがオンラインであることを確認します。
ランナーがセルフホストの場合は、GitHub からダウンロードした実行スクリプトを手動で実行します。
- GitHub で、 を選択すると、ブランチ内に存在する
.yamlスクリプトを使用して、静的分析スキャンが開始します。