Azure とコンテナーを使用したスキャン自動化の構成

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

前提条件

開始する前に、環境が次の要件を満たしていることを確認してください。
  • Podman がインストールされた Linux エージェント/ホストを 1 つ以上含む Azure 環境。

    これが、CLI コンテナー を使用して静的分析スキャンを実行する対象となるシステムです。

  • AppScan® Source for Automation の有効なライセンスと関連するライセンス・サーバー情報。

  • AppScan® Source CLI コンテナー・イメージ

    HCL Harbor または AppScan® Source から My HCL ソフトウェア・ポータル CLI コンテナー・イメージをダウンロードします。有効なライセンスがあれば、HCL ID を使用して、これらの場所にアクセスできます。

  • AppScan® Source CLI スクリプト

    Azure パイプラインでコンテナーを使用してスキャンするには、スクリプトが必要です。

  • コンテナーから Azure ホスト/エージェントのコンテンツへのアクセス:

    スキャン対象のアプリケーションは、スキャンを実行する Azure ホストからアクセスできる必要があります。

    注: ボリューム・マッピング (コンテナー・ホスト上のパスからコンテナー内のパスへのマッピング) が、この目的でスキャンのインスタンス化中に使用されます。

スキャン対象のアプリケーションの準備

次のいずれかを使用して、アプリケーションをスキャンする準備をします。
  • paf/ppf ファイル
  • フォルダー・スキャン
paf/ppf ファイルを使用したスキャン対象のアプリケーションの準備
  1. HCL® AppScan® Source for Analysis がインストールされた Linux システム上の AppScan® Source クライアントを使用して、paf/ppf ファイルを生成します。

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

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

    例えば、アプリケーションが Azure ホスト/エージェントのルート・パス、/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. アプリケーション・ファイルが Azure ホスト/エージェントからアクセス可能なことを確認します。

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

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

Azure DevOps パイプライン環境の準備

この環境を準備するには、次の 3 つの方法があります。
  • My HCL ソフトウェア・ポータル を使用して HCL Harbor のコンテナー・イメージを使用する。
  • クラシック・エディターを使用して HCL Harbor のコンテナー・イメージを使用する。
  • YAML 構成ファイルを使用して HCL Harbor のコンテナー・イメージを使用する。
クラシック・エディターで My HCL ソフトウェア・ポータル のコンテナー・イメージを使用して Azure DevOps パイプラインを準備するには:
  1. AppScan® Source から Azure VM に My HCL ソフトウェア・ポータル CLI コンテナーをダウンロードします。
  2. podman load コマンドを使用して、CLI コンテナー・イメージをロードします。
  3. Azure DevOps 組織内で、クラシック・エディターを使用して新しいパイプラインを作成します。「クラシック・エディターの使用」をクリックします。
  4. スキャン対象のプロジェクトと CLI スクリプトが保存されているリポジトリーとブランチを選択し、「続行」をクリックします。
    1. ソースとして「Azure Repos Git」を選択します。
    2. 「チーム・プロジェクト」を選択します。
    3. 「リポジトリー」を選択します。
  5. AppScan® Source CLI コンテナーで構成された Azure VM が存在する Azure の「エージェント・プール」を選択します。
  6. イメージをロードするための新しい Podman タスクを追加します。以下の仕様を含めます。
    • タスクのバージョン: 0
    • 表示名: 名前を指定するか、デフォルトを使用します。
    • コンテナー・レジストリー・タイプ: レジストリー・タイプを指定するか、デフォルトを使用します。
    • Podman レジストリー・サービス接続: 接続を指定するか、デフォルトを使用します。
    • アクション: Podman コマンドを実行します
    • コマンド: load -i /usr/user1/appscan-src-cli-10.2.0.tar.gz
  7. 新しい Podman タスクを追加して、次の仕様のイメージを実行します。
    • タスクのバージョン: 1
    • 表示名: 名前を指定するか、デフォルトを使用します。
    • コンテナー・レジストリー・タイプ: レジストリー・タイプを指定するか、デフォルトを使用します。
    • Podman レジストリー・サービス接続: 接続を指定するか、デフォルトを使用します。
    • コマンド: run
    • 引数: --rm
    • イメージ名: appscan/appscan-src-cli:10.10.0
    • ボリューム: /usr/user1:/wa
    • 環境変数:
      • AS_INSTALL_MODE=standalone
      • AS_LICENSE_URL=<license_server_url>
    • コンテナー・コマンド: script /wa/cli.script
  8. クリーンアップのため、次の仕様の新しい Podman タスクを追加します。
    • タスクのバージョン: 0
    • 表示名: 名前を指定するか、デフォルトを使用します。
    • コンテナー・レジストリー・タイプ: レジストリー・タイプを指定するか、デフォルトを使用します。
    • Podman レジストリー・サービス接続: 接続を指定するか、デフォルトを使用します。
    • アクション: Podman コマンドを実行します
    • コマンド: rmi appscan/appscan-src-cli:10.10.0
クラシック・エディターで HCL Harbor のコンテナー・イメージを使用して Azure DevOps パイプラインを準備するには:
  1. スキャン中に CLI コンテナーで使用できるようにする必要がある環境変数を含むファイル (env.list など) を作成します。次の必須情報を含めます。
    • AS_INSTALL_MODE=standalone

    • AS_LICENSE_URL=<license server url>

    パラメーターの完全なリストは、こちらから入手可能です。

  2. Azure DevOps 組織内で、クラシック・エディターを使用して新しいパイプラインを作成します。「クラシック・エディターの使用」をクリックします。
  3. スキャン対象のプロジェクトと CLI スクリプトが保存されているリポジトリーとブランチを選択し、「続行」をクリックします。
    1. ソースとして「Azure Repos Git」を選択します。
    2. 「チーム・プロジェクト」を選択します。
    3. 「リポジトリー」を選択します。
  4. AppScan® Source CLI コンテナーで構成された Azure VM が存在する Azure の「エージェント・プール」を選択します。
  5. 新しい Podman タスクを追加して、次の仕様のイメージを実行します。
    • タスクのバージョン: 2
    • 表示名: 名前を指定するか、デフォルトを使用します。
    • Container Registry: レジストリー・タイプを指定するか、デフォルトを使用します。
    • アクション: Podman コマンドを実行します
    • コマンド: run
    • 引数: --rm --env-file /usr/user1/env.list -v $(Agent.BuildDirectory)/s:/wa hclcr.io/appscan/appscan-src-cli:10.10.0 script /wa/cli.script
  6. クリーンアップのため、次の仕様の新しい Podman タスクを追加します。
    • タスクのバージョン: 0
    • 表示名: 名前を指定するか、デフォルトを使用します。
    • コンテナー・レジストリー・タイプ: レジストリー・タイプを指定するか、デフォルトを使用します。
    • Podman レジストリー・サービス接続: レジストリー・タイプを指定するか、デフォルトを使用します。
    • アクション: Podman コマンドを実行します
    • コマンド: rmi appscan/appscan-src-cli:10.10.0

YAML で HCL Harbor のコンテナー・イメージを使用して Azure DevOps パイプラインを準備するには

HCL Harbor の AppScan Source CLI コンテナーを使用して静的分析スキャンを実行するには、次のサンプル・スクリプトをガイドとして使用してください。

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- main

pool:
  name: Ubuntu-VM-pool
  #vmImage: ubuntu-latest

#steps:
#- script: echo Hello, world!
#  displayName: 'Run a one-line script'

steps:
- task: CmdLine@2
  inputs:
    script: |
- task: Podman@1
  displayName: 'Run an image'
  inputs:
    containerregistrytype: 'Container Registry'
    podmanRegistryEndpoint: 'MyConnection’
    command: 'Run an image'
    arguments: '--rm'
    imageName: 'hclcr.io/appscan/appscan-src-cli:10.10.0 '
    volumes: '$(Agent.WorkFolder)<path to downloaded source files>:/wa'
    envVars: |
     AS_INSTALL_MODE=standalone
     AS_LICENSE_TYPE=CLS
     AS_LICENSE_SERVER_ID=<specify the license server ID>
     AS_LICENSE_SERVER=<specify the license server name>
    containerCommand: 'script /wa/cli.script'
    runInBackground: false
- task: Podman@0
  displayName: Clean
  inputs:
    containerregistrytype: 'Container Registry'
    podmanRegistryConnection: 'MyConnection'
    action: 'Run a Podman command'
    customCommand: ' rmi hclcr.io/appscan/appscan-src-cli:10.10.0'

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

パイプラインを使用してスキャンを開始するには、以下のようにします。

  1. Azure で、Azure Agent プール内の Azure VM がオンラインであることを確認します。
  2. 「パイプライン」ページで、実行するパイプラインを選択します。
  3. 「パイプラインの実行」を選択して、静的分析スキャンを開始します。
注: バージョン 10.3.0 で、AppScan® SourcePodman を使用したコンテナー化をサポートしています。Docker は Red Hat Enterprise Linux 8 と 9 ではサポートされていないため、ホストで RHEL 8 または 9 が実行されている場合、Podman を使用してください。Podman は主要なすべての Docker コマンドをサポートしています。このトピックの例の Docker を Podman に置き換えて、Podman 環境でコンテナーを作成してスキャンします。