Gradle プロジェクト用の静的分析の実行

ファイルの分析を開始するには、クラウドに送信する IRX ファイルを生成する必要があります。HCL AppScan on Cloud Gradle プラグインは、Gradle で Java と Java Web プロジェクトのスキャンを自動化するために使用されます。このプラグインは、「java」プラグインまたは「war」プラグインが適用されている Gradle プロジェクト用の IRX ファイルを生成します。また、生成された IRX ファイルを分析のために ASoC サービスに自動的に送信することもできます。プラグインの適用と最新のプラグイン・バージョンの確認についての詳細は、Gradle プラグインを参照してください。

手順

Gradle プロジェクト用の IRX ファイルを生成するには、次の手順を実行します。
  1. コマンド・プロンプトで、コマンドを実行して、Gradle プロジェクトが含まれる位置にディレクトリーを変更します。
  2. スキャンを実行する前に、環境変数 APPSCAN_OPTS を設定して、グローバル・オプションを指定します。
    APPSCAN_OPTS を使用して、スキャン速度の設定、シークレット・スキャンの有効化、デバッグ・ログの有効化などを行います。
  3. 以下のいずれかのコマンドを実行します。
    • IRX ファイルのみを生成するには、appscan-prepare を発行します。

      このコマンドは、ビルド内のすべての Java および War プロジェクト用として IRX ファイルを 1 つ生成します。この IRX ファイルは、デフォルトではルート・プロジェクトのビルド・ディレクトリーに生成されます。この IRX ファイルは、後で ASoC に送信できます。

    • IRX ファイルを生成し、分析のために ASoC サービスに送信するには、appscan-analyze を発行します。

      このコマンドは、IRX ファイルを生成し、分析のために ASoC サービスに送信します。このタスクは、API 鍵、秘密、およびアプリケーション ID が必要です。

    構成可能なオプション

    コマンド行で構文 -Doption=value を使用して JVM パラメーターを指定するか、またはビルド・スクリプトの appscanSettings ブロックを使用すると、以下のオプションを設定できます。

    1. 構成可能な Gradle プラグイン・オプション
    オプション デフォルト値 説明
    irxName ルート・プロジェクトの名前。 生成する .irx ファイルの名前。
    irxDir ルート・プロジェクトのビルド・ディレクトリー。 生成する .irx ファイルの位置。
    appId ヌル。appscan-analyze に必須 ASoC サービスにおけるアプリケーションの ID。
    appscanKey ヌル。appscan-analyze に必須 ユーザーの認証用の API 鍵。
    appscanSecret ヌル。appscan-analyze に必須 ユーザーの認証用の API 鍵の秘密。
    namespaces ヌル。 自動名前空間検出をオーバーライドします。名前空間検出を無効にするには、"" に設定します。
    例 1: コマンド行でのオプションの指定:
    gradle appscan-prepare -DirxName=MyApp
    Example 2: ビルド・スクリプトでのオプションの指定:
    appscanSettings {
    	irxName="MyApp"
    	irxDir="/myApplication/sample"
    }
    
    注: appscanKey オプションと appscanSecret オプションは、ユーザーの gradle.properties ファイルで指定できます。このファイルで指定する場合、ビルド・スクリプトまたはコマンド行で認証情報を指定する必要はありません。例えば、次の行を ~/.gradle/gradle.properties に追加します (このファイルが存在しない場合は作成します)。
    appscanKey="2358cd02-3fs3-322c-62c9-b5cc63c61f2a"
    appscanSecret="qU939siTXgF7csk3jSig+Vza7ilWLu/Uy/ReWye5E/c="
    
    API 鍵とキーの秘密はこちらで生成できます。詳しくは、API 鍵の生成を参照してください。
    注: デフォルトの名前空間動作をオーバーライドするには、-Dnamespaces="<semi-colon delimited list of namespaces to scan>"コマンド行オプションを使用します。デフォルトでは、ASoC は指定されたプロジェクトのソース・ファイルの名前空間を検出し、同じ名前空間に存在するスキャン済みクラスのみを許可リストに追加します。このプロパティーを空ストリング ("") に設定すると、ホワイトリストが完全に無効になります。
    注: このプラグインに独自の変更を加えたい場合は、ソースをこちらで見つけることができます。

Gradle プラグインを使用した appscanSecret の暗号化

このタスクについて

API 秘密鍵を暗号化するには、appscan-gradle-plugin とともに Gradle 資格情報プラグインを使用します。
注: 最新バージョンの資格情報プラグインには Gradle 5.0 以降が必要です。プラグインの詳細については、gradle-credentials-plugin を参照してください。

手順

  1. appscan-gradle-plugin とともに、プロジェクトに資格情報プラグインを適用します。
    plugins {
    	id 'nu.studer.credentials' version '2.1'
    	id ' com.hcl.security.appscan' version '1.0.2'
    }
  2. 次のコマンドを実行して API 秘密鍵を暗号化します。
    gradle addCredentials --key appscanSecret --value Yq9M+iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1
    デフォルトでは、暗号化された値は ~/.gradle/ gradle.encrypted.properites に保存され、そこから取得されます。credentialsLocation プロパティーを使用して別の場所を指定します。
    gradle addCredentials --key appscanSecret --value Yq9M+iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1 -PcredentialsLocation=/some/directory
  3. ビルド・スクリプトで appscanSettings ブロックを使用して、appscanKey 値と暗号化された appscanSecret 値を設定します。
    appscanSettings {
    	appscanKey=22iFHyhRU2eEx+XobXwhX9xoW4hEXWz2fJDI8I=1
    	appscanSecret=credentials.appscanSecret
    appId=95e69f47-9547-4378-ab93-f5d48ada52cc1
    }
    ここで ASoC appId も設定できます。
  4. appscan-analyze を実行します。
    gradle appscan-analyze
    ビルド・スクリプトで appId を指定しなかった場合は、この Id を実行時にコマンド行で設定します。
    gradle appscan-analyze -DappId=95e69f47-9547-4378-ab93-f5d48ada52cc1
    appscanSecret 値の暗号化時に credentialsLocation プロパティーを使用した場合は、実行時にもこのプロパティーを指定します。
    gradle appscan-analyze -PcredentialsLocation=/some/directory