Java スキャンのベスト・プラクティス

AppScan on Cloud で Java プロジェクトをスキャンするときに、Maven または Gradle をビルドに使用する場合 (ほとんどの Java アプリはこのいずれかを使用)、それぞれの ASoC Maven プラグインまたは Gradle プラグインを使用する必要があります。

しかし、このいずれのツールも使用しない場合は、appscan-config.xml を使用してスキャンを自分のコードのみに制限し、classpath を指定してすべての依存関係が検出されるようにすることをお勧めします。

appscan-config.xml を使用して限定スキャンをセットアップする主な手順は、次のとおりです。

  1. IRGen プロセスのリハーサルを実行し、結果を調べて、含めるパッケージと除外するパッケージを特定します。
  2. appscan-config.xml を構成して、状況に応じてパッケージを含めるか、または除外します。
  3. 別のリハーサルを実行して、正しいパッケージがスキャンされることを確認します。
  4. すべてが順調な場合は、appscan prepare を実行して IRX ファイルを生成します。

リハーサルの実行と結果の確認

リハーサルでは、スキャンに含まれるファイルが調べられ、次の 2 つの情報が返されます。
  • スキャンに組み込まれるパッケージ。
  • 検出されなかった依存関係のパッケージ名。
リハーサルを実行するには、ターゲット・ディレクトリーで appscan prepare -dr を実行します。例:
  • Windows の場合:
    appscan.bat prepare -dr
  • Linux の場合:
    appscan.sh prepare -dr
出力例:
Validating classes...
100%
Validation complete.
__ 

The following packages/namespaces will be analyzed:
                com.ibm.security
__ 

The following problems were found:
                Missing required reference com.ibm.security.appscan.*
                Missing required reference javax.servlet.*
                Missing required reference javax.servlet.http.*
                Missing required reference javax.ws.rs.*
                Missing required reference javax.ws.rs.core.*
                Missing required reference org.apache.commons.codec.binary.*
                Missing required reference org.apache.commons.lang.*
                Missing required reference org.apache.wink.json4j.*
スキャンで分析するパッケージのリストを調べて、意図したコードのみが分析されることを確認します。

appscan-config.xml の構成

リハーサルを実行して結果を評価したら、以下のように appscan-config.xml を構成します。

  1. スキャンしないパッケージ名がある場合 (サード・パーティーの依存関係や他のチームからの内部依存関係など)、スキャンの範囲を意図したコードのみにする方法は、次の 2 つがあります。
    • appscan-config.xml で、package_includes 属性を指定し、分析対象パッケージのみのスキャンをホワイトリストに登録します。この値は、1 つまたは複数のパッケージ名のセミコロン区切りのリストです。
      例:
      package_includes="com.hcl.appscan.client;com.hcl.appscan.server"
    • appscan-config.xml で、<Exclude> タグを使用してサード・パーティーのファイルやディレクトリーを除外します。<Exclude> タグのコンテンツはパターンであり、* 文字をワイルドカードとして使用できます。
      例えば、以下のようにします。
      <Exclude>myDependency-.jar</Exclude>
      注: このいずれかまたは両方のアプローチを使用できます。
  2. スキャンの範囲を指定したら、欠落しているパッケージのリストを確認し、そうしたパッケージを含む .jar ファイルを特定します。appscan-config.xmladditional_classpath 属性を使用して、各欠落 .jar ファイルの場所を指定します。additional_classpath 属性の値は、各.jar ファイルへのパスが区切り文字付で区切られたリストです。区切り文字は、Linux/Mac ではコロン文字 ( : ) で、Windows ではセミコロン文字 ( ; ) です。
    例:
    additional_classpath=”C:\myDependencies\lib\xyz.jar;C:\myDependencies\lib\sample.jar”/
次のサンプルの appscan-config.xml には、前述の変更が含まれています。
注: appscan-config.xml は、appscan prepare コマンドを実行するディレクトリーに格納する必要があります。appscan-config.xml 内の相対パスは、すべてそのディレクトリーが基準になります。appscan-config.xml の詳細については、こちらをご覧ください。
<Configuration>
 <Targets>
 <Target path="./myApp">
 <CustomBuildInfo package_includes=”com.hcl.appscan.client;com.hcl.appscan.server” additional_classpath=”C:\myDependencies\lib\xyz.jar;C:\myDependencies\lib\sample.jar”/>
 <Exclude>myDependency-.jar</Exclude>*
 <Exclude>abc.jar</Exclude>
 </Target>
 </Targets>
</Configuration>

appscan-config.xml を適切な場所に保存したら、appscan prepare -dr を再度実行して、分析対象のパッケージのリストが想定どおりであること、および欠落している参照がないことを確認します。すべて問題なしと思われる場合は、appscan prepare を使用して IRX ファイルを生成します