Azure とコンテナーを使用したスキャン自動化の構成
HCL Harbor および HCL Software License Management Portal から入手できる、HCL® AppScan® Source コマンド行インターフェース (CLI) コンテナーを使用すると、AppScan® Source のフル・インスタンスをインストールしなくても、Azure による静的分析スキャンを自動化できます。
- アプリケーションを準備します。
- Azure DevOps パイプライン環境を準備します。
- コンテナー・イメージからスキャンを開始します。
前提条件
- Docker がインストールされた Linux エージェント/ホストを 1 つ以上含んだ Azure 環境。
これが、CLI コンテナー を使用して静的分析スキャンを実行する対象となるシステムです。
-
AppScan® Source for Automation の有効なライセンスと関連するライセンス・サーバー情報。
-
AppScan® Source CLI コンテナー・イメージ
HCL Harbor または HCL ソフトウェア・ライセンス管理ポータル から AppScan® Source CLI コンテナー・イメージをダウンロードします。有効なライセンスがあれば、HCL ID を使用して、これらの場所にアクセスできます。
-
AppScan® Source CLI スクリプト
Jenkins パイプラインを使用してコンテナーでスキャンするには、スクリプトが必要です。
-
コンテナーから Azure ホスト/エージェントのコンテンツへのアクセス:
スキャン対象のアプリケーションは、スキャンを実行する Azure ホストからアクセスできる必要があります。
注: ボリューム・マッピング (コンテナー・ホスト上のパスからコンテナー内のパスへのマッピング) が、この目的でスキャンのインスタンス化中に使用されます。
スキャン対象のアプリケーションの準備
paf
/ppf
ファイル- フォルダー・スキャン
paf
/ppf
ファイルを使用したスキャン対象のアプリケーションの準備- HCL® AppScan® Source for Analysis がインストールされた Linux システム上の AppScan® Source クライアントを使用して、
paf
/ppf
ファイルを生成します。paf
およびppf
ファイルがスキャン対象のアプリケーションのルートにあることを確認します。 - アプリケーション・ファイルと
paf
/ppf
ファイルが、Jenkins ホスト/エージェントからアクセス可能であることを確認します。例えば、アプリケーションが Jenkins ホスト/エージェントのルート・パス、
/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
- アプリケーション・ファイルは Jenkins ホスト/エージェントからアクセス可能であることを確認します。
例えば、アプリケーションは Jenkins ホスト/エージェント上のパス /
usr/user1/SampleApp
でアクセスできます。 - コンテナーから見えるボリュームの名前を特定します。例えば、ホスト上の
/usr/user1
をコンテナー内のcvol
にマッピングします。注: ボリューム・マッピングは、コンテナーで CLI を実行するときに指定されます。 - CLI スクリプトを作成します。例えば、
/usr/user1/SampleApp
のSampleApp.script
です。login … oa /cvol/SampleApp/SampleAll.ppf scan … logout
Azure DevOps パイプライン環境の準備
- HCL Software License Management Portal を使用して HCL Harbor のコンテナー・イメージを使用する。
- クラシック・エディターを使用して HCL Harbor のコンテナー・イメージを使用する。
- YAML 構成ファイルを使用して HCL Harbor のコンテナー・イメージを使用する。
- HCL ソフトウェア・ライセンス管理ポータル から Azure VM に AppScan® Source CLI コンテナーをダウンロードします。
docker load
コマンドを使用して、CLI コンテナー・イメージをロードします。- Azure DevOps 組織内で、クラシック・エディターを使用して新しいパイプラインを作成します。「クラシック・エディターの使用」をクリックします。
- スキャン対象のプロジェクトと CLI スクリプトが保存されているリポジトリーとブランチを選択し、「続行」をクリックします。
- ソースとして「Azure Repos Git」を選択します。
- 「チーム・プロジェクト」を選択します。
- 「リポジトリー」を選択します。
- AppScan® Source CLI コンテナーで構成された Azure VM が存在する Azure の「エージェント・プール」を選択します。
- イメージをロードするための新しい Docker タスクを追加します。以下の仕様を含めます。
- タスクのバージョン: 0
- 表示名: 名前を指定するか、デフォルトを使用します。
- コンテナー・レジストリー・タイプ: レジストリー・タイプを指定するか、デフォルトを使用します。
- Docker レジストリー・サービス接続: 接続を指定するか、デフォルトを使用します。
- アクション: Docker コマンドを実行する
- コマンド: load -i /usr/user1/appscan-src-cli-10.2.0.tar.gz
- 新しい Docker タスクを追加して、以下の仕様のイメージを実行します。
- タスクのバージョン: 1
- 表示名: 名前を指定するか、デフォルトを使用します。
- コンテナー・レジストリー・タイプ: レジストリー・タイプを指定するか、デフォルトを使用します。
- Docker レジストリー・サービス接続: 接続を指定するか、デフォルトを使用します。
- コマンド: run
- 引数: --rm
- イメージ名: appscan/appscan-src-cli:10.2.0
- ボリューム: /usr/user1:/wa
- 環境変数:
- AS_INSTALL_MODE=standalone
- AS_LICENSE_TYPE=CLS
- AS_LICENSE_SERVER_ID=<ライセンス・サーバー ID>
- AS_LICENSE_SERVER=hclsoftware
- コンテナー・コマンド: script /wa/cli.script
- 以下の仕様でクリーンアップの新しい Docker タスクを追加します。
- タスクのバージョン: 0
- 表示名: 名前を指定するか、デフォルトを使用します。
- コンテナー・レジストリー・タイプ: レジストリー・タイプを指定するか、デフォルトを使用します。
- Docker レジストリー・サービス接続: 接続を指定するか、デフォルトを使用します。
- アクション: Docker コマンドを実行する
- コマンド: rmi appscan/appscan-src-cli:10.2.0
- スキャン中に CLI コンテナーで使用できるようにする必要がある環境変数を含むファイル (
env.list
など) を作成します。次の必須情報を含めます。-
AS_INSTALL_MODE=standalone
-
AS_LICENSE_TYPE=CLS
-
AS_LICENSE_SERVER_ID=<the license server ID>
パラメーターの完全なリストは、こちらから入手可能です。
-
- Azure DevOps 組織内で、クラシック・エディターを使用して新しいパイプラインを作成します。「クラシック・エディターの使用」をクリックします。
- スキャン対象のプロジェクトと CLI スクリプトが保存されているリポジトリーとブランチを選択し、「続行」をクリックします。
- ソースとして「Azure Repos Git」を選択します。
- 「チーム・プロジェクト」を選択します。
- 「リポジトリー」を選択します。
- AppScan® Source CLI コンテナーで構成された Azure VM が存在する Azure の「エージェント・プール」を選択します。
- 新しい Docker タスクを追加して、以下の仕様のイメージを実行します。
- タスクのバージョン: 2
- 表示名: 名前を指定するか、デフォルトを使用します。
- Container Registry: レジストリー・タイプを指定するか、デフォルトを使用します。
- アクション: Docker コマンドを実行する
- コマンド: run
- 引数: --rm --env-file /usr/user1/env.list -v $(Agent.BuildDirectory)/s:/wa hclcr.io/appscan/appscan-src-cli:10.2.0 script /wa/cli.script
- 以下の仕様でクリーンアップの新しい Docker タスクを追加します。
- タスクのバージョン: 0
- 表示名: 名前を指定するか、デフォルトを使用します。
- コンテナー・レジストリー・タイプ: レジストリー・タイプを指定するか、デフォルトを使用します。
- Docker レジストリー・サービス接続: レジストリー・タイプを指定するか、デフォルトを使用します。
- アクション: Docker コマンドを実行する
- コマンド: rmi appscan/appscan-src-cli:10.2.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: Docker@1
displayName: 'Run an image'
inputs:
containerregistrytype: 'Container Registry'
dockerRegistryEndpoint: 'MyConnection’
command: 'Run an image'
arguments: '--rm'
imageName: 'hclcr.io/appscan/appscan-src-cli:10.2.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: Docker@0
displayName: Clean
inputs:
containerregistrytype: 'Container Registry'
dockerRegistryConnection: 'MyConnection'
action: 'Run a Docker command'
customCommand: ' rmi hclcr.io/appscan/appscan-src-cli:10.2.0'
コンテナー・イメージを使用した静的分析スキャンの開始
パイプラインを使用してスキャンを開始するには:
- Azure で、Azure Agent プール内の Azure VM がオンラインであることを確認します。
- 「パイプライン」ページで、実行するパイプラインを選択します。
- 「パイプラインの実行」を選択して、静的分析スキャンを開始します。