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

ファイルの分析を開始するには、クラウドに送信する IRX ファイルを生成する必要があります。HCL AppScan on Cloud Maven プラグインは、Maven の jarwarear の各プロジェクトのスキャンを自動で実行する場合に使用します。このプラグインで、「jar」、「war」、および「ear」の各パッケージ・タイプを使用する Maven プロジェクトの IRX ファイルが生成されます。また、生成された IRX ファイルを分析のために ASoC サービスに自動的に送信することもできます。Maven プロジェクトをスキャンする場合、以下の手順に従ってそのファイルを作成してください。

このタスクについて

このタスクでは、HCL AppScan on Cloud Maven プラグインを使用して Maven プロジェクトの静的分析を実行する方法について説明します。

手順

  1. コマンド・プロンプトで、コマンドを発行して、Maven プロジェクトが含まれる場所 (pom.xml ファイルが含まれているフォルダー) にディレクトリーを変更します。
  2. スキャンを実行する前に、環境変数 APPSCAN_OPTS を設定して、グローバル・オプションを指定します。
    APPSCAN_OPTS を使用して、スキャン速度の設定、シークレット・スキャンの有効化、デバッグ・ログの有効化などを行います。
  3. 以下のいずれかのコマンドを実行します。
    • IRX ファイルのみを生成するには、次のコマンドを発行します。
      mvn com.hcl.security:appscan-maven-plugin:prepare
      このコマンドは、ビルド内のすべての jarwar、および ear のプロジェクト用に IRX ファイルを 1 つ生成します。IRX ファイルは、デフォルトではルート・プロジェクトのターゲット・ディレクトリーに生成されます。この IRX ファイルは、後で ASoC に送信できます。
    • IRX ファイルを生成し、分析のために ASoC サービスに送信するには、次のコマンドを発行します。
      mvn package com.hcl.security:appscan-maven-plugin:analyze
      このコマンドは、IRX ファイルを生成し、分析のために ASoC サービスに送信します。このタスクでは、アプリケーション ID (appId)、API 鍵 (appscanKey)、および API 秘密 (appscanSecret) が必要です。
      注: Maven プロジェクトが、同じリアクター・ビルド内の別のプロジェクトに対してコンパイル時間の依存関係を持つ場合、既存の Maven バグによりコマンドが失敗します。この問題を回避するには、package ゴールを prepare または analyze ゴールとともに実行します。次に例を示します。
      mvn package com.hcl.security:appscan-maven-plugin:prepare
      または
      mvn package com.hcl.security:appscan-maven-plugin:analyze
    1. 構成可能な Maven プラグイン・オプション
    オプション デフォルト値 説明
    output
    <root project>/target/<root project name>.irx
    生成される IRX ファイルの名前または場所 (あるいはその両方)。選択したパスが存在しない場合は、デフォルトのパスが適用されます (<root project>/target/<root project name>.irx)
    appId

    ヌル。analyze に必須。

    クラウド・サービスにおけるアプリケーションの ID。
    appscanKey

    ヌル。analyze に必須。

    ユーザーを識別するための API キー ID。
    appscanSecret

    ヌル。analyze に必須。

    ユーザーの認証用の API キーの秘密。
    namespaces ヌル。 自動名前空間検出をオーバーライドします。名前空間検出を無効にするには、"" に設定します。
    ヒント: コマンド行ユーティリティーには Tomcat JSP コンパイラーが含まれています。この JSP コンパイラーは、IRX ファイルの生成時にデフォルトで使用されます。war または ear ファイル用に IRX ファイルを生成する場合、別の JSP コンパイラーを使用するには、-DjspCompiler オプションを指定してコマンドを発行します。次に例を示します。
    mvn com.hcl.security:appscan-maven-plugin:prepare -DjspCompiler=<jsp_compiler>

    ここで、<jsp_compiler> は使用する JSP コンパイラーへのパスです (サーバーのルート・ディレクトリーを指定します)。

    ヒント: デフォルトでは、サード・パーティーのコードは IRX ファイルの生成中にスキャンされません。サード・パーティーの Java と .NET の除外管理 の手順に従って、サード・パーティーのコードの除外設定を変更できます。サード・パーティーのコードを組み込むには、-DthirdParty オプションを指定してコマンドを発行します。

    サード・パーティー・コードがスキャンで標準的に除外されるようにする開発者の場合、この設定を使用してサード・パーティー・コードをスキャンに含める必要があります。

    ヒント: 上記のコマンドは、次の 2 つの方法のいずれかで短縮できます。
    • pom.xml ファイルの <plugins> セクションに以下を追加します。
      <plugin>
        <groupId>com.hcl.security</groupId>
        <artifactId>appscan-maven-plugin</artifactId>
        <version>1.0.10</version>
      </plugin>
      この方法で pom.xml ファイルを編集すると、他のすべてのユーザーが自動的に変更されます。ただし、バージョン番号を指定する必要があるため、pom.xml ファイルは、新しいバージョンが使用可能になったときに手動で編集して更新する必要があります。
    • groupId (com.hcl.security) を Maven settings.xml 内のプラグイン・グループのリストに追加します。例えば ~/.m2/settings.xml、または ${maven.home}/conf/settings.xml に以下を追加します。
      <pluginGroups>
        <pluginGroup>com.hcl.security</pluginGroup>
      </pluginGroups>
      編集後は、appscan プレフィックスを使用して prepare ゴールを実行できます。次に例を示します。
      mvn appscan:prepare

    詳しくは、「Configuring Maven To Search For Plugins」を参照してください。

    注: デフォルトの名前空間動作をオーバーライドするには、-Dnamespaces="<semi-colon delimited list of namespaces to scan>"コマンド行オプションを使用します。デフォルトでは、ASoC は指定されたプロジェクトのソース・ファイルの名前空間を検出し、同じ名前空間に存在するスキャン済みクラスのみを許可リストに追加します。このプロパティーを空ストリング ("") に設定すると、ホワイトリストが完全に無効になります。
    注: このプラグインに独自の変更を加えたい場合は、ソースをこちらで見つけることができます。

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

このタスクについて

appscan-maven-plugin を使用して API 秘密を暗号化します。Maven を使用したパスワードの暗号化に関するヒントとアドバイスについては、こちらを参照してください。

手順

  1. 以下のコマンドを実行して、暗号化されたマスター・パスワードを生成します。
    mvn -emp myMasterPassword
  2. 出力を ~/.m2/settings-security.xml にコピーし、それを <master> タグの値に挿入します。
    <settingsSecurity>
      <master>{rsB56BJcqoEHZqEZ0R1VR4TIspmODx1Ln8/PVvsgaGw=}</master>
    </settingsSecurity>
    注: settings-security.xml ファイルは別の場所に保存できます。その場合は、オプション-Dsettings.security=path/to/security-settings.xml を使用して実行時に場所を指定する必要があります。
  3. 以下のコマンドを実行して、暗号化された API 秘密鍵を生成します。
    mvn -ep apiSecret
  4. コマンドの出力を ~/.m2/settings.xml にコピーし、<password> タグの値に挿入します。<username> タグには、ユーザーの API 鍵の値を含める必要があります。
    <settings>
      <servers>
        <server>
          <id>appscan</id>
                    <username>MyapiKey</username>
    <password>{uMrbEOEf/VQHnc0W2X49Qab75j9LSTwiM3mg2LCrOzI=}</password>
        </server>
      </servers>
      ...
    </settings>
  5. Maven プラグインを使用して、analyze ゴールを実行します。
    mvn com.hcl.security:appscan-maven-plugin:analyze -DappId=X49Qab75j9LSTwiM3mg2LCrO
    settings-security.xml ファイルをデフォルト以外の場所に格納した場合は、実行時にその場所を指定する必要があります。
    mvn com.hcl.security:appscan-maven-plugin:analyze -DappId=X49Qab75j9LSTwiM3mg2LCrO -Dsettings.security=path/to/security-settings.xml