Maven プロジェクト用の静的分析の実行
ファイルの分析を開始するには、クラウドに送信する IRX ファイルを生成する必要があります。HCL AppScan on Cloud Maven プラグインは、Maven の jar
、war
、ear
の各プロジェクトのスキャンを自動で実行する場合に使用します。このプラグインで、「jar」、「war」、および「ear」の各パッケージ・タイプを使用する Maven プロジェクトの IRX ファイルが生成されます。また、生成された IRX ファイルを分析のために ASoC サービスに自動的に送信することもできます。Maven プロジェクトをスキャンする場合、以下の手順に従ってそのファイルを作成してください。
このタスクについて
手順
- コマンド・プロンプトで、コマンドを発行して、Maven プロジェクトが含まれる場所 (pom.xml ファイルが含まれているフォルダー) にディレクトリーを変更します。
-
スキャンを実行する前に、環境変数
APPSCAN_OPTS
を設定して、グローバル・オプションを指定します。APPSCAN_OPTS
を使用して、スキャン速度の設定、シークレット・スキャンの有効化、デバッグ・ログの有効化などを行います。 -
以下のいずれかのコマンドを実行します。
- IRX ファイルのみを生成するには、次のコマンドを発行します。
このコマンドは、ビルド内のすべてのmvn com.hcl.security:appscan-maven-plugin:prepare
jar
、war
、およびear
のプロジェクト用に IRX ファイルを 1 つ生成します。IRX ファイルは、デフォルトではルート・プロジェクトのターゲット・ディレクトリーに生成されます。この IRX ファイルは、後で ASoC に送信できます。 - IRX ファイルを生成し、分析のために ASoC サービスに送信するには、次のコマンドを発行します。
このコマンドは、IRX ファイルを生成し、分析のために ASoC サービスに送信します。このタスクでは、アプリケーション ID (mvn package com.hcl.security:appscan-maven-plugin:analyze
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>
セクションに以下を追加します。
この方法で pom.xml ファイルを編集すると、他のすべてのユーザーが自動的に変更されます。ただし、バージョン番号を指定する必要があるため、pom.xml ファイルは、新しいバージョンが使用可能になったときに手動で編集して更新する必要があります。<plugin> <groupId>com.hcl.security</groupId> <artifactId>appscan-maven-plugin</artifactId> <version>1.0.10</version> </plugin>
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 は指定されたプロジェクトのソース・ファイルの名前空間を検出し、同じ名前空間に存在するスキャン済みクラスのみを許可リストに追加します。このプロパティーを空ストリング (""
) に設定すると、ホワイトリストが完全に無効になります。注: このプラグインに独自の変更を加えたい場合は、ソースをこちらで見つけることができます。 - IRX ファイルのみを生成するには、次のコマンドを発行します。
Maven プラグインを使用した appscanSecret
の暗号化
このタスクについて
appscan-maven-plugin
を使用して API 秘密を暗号化します。Maven を使用したパスワードの暗号化に関するヒントとアドバイスについては、こちらを参照してください。手順
-
以下のコマンドを実行して、暗号化されたマスター・パスワードを生成します。
mvn -emp myMasterPassword
-
出力を
~/.m2/settings-security.xml
にコピーし、それを<master>
タグの値に挿入します。<settingsSecurity> <master>{rsB56BJcqoEHZqEZ0R1VR4TIspmODx1Ln8/PVvsgaGw=}</master> </settingsSecurity>
注:settings-security.xml
ファイルは別の場所に保存できます。その場合は、オプション-Dsettings.security=path/to/security-settings.xml
を使用して実行時に場所を指定する必要があります。 -
以下のコマンドを実行して、暗号化された API 秘密鍵を生成します。
mvn -ep apiSecret
-
コマンドの出力を
~/.m2/settings.xml
にコピーし、<password>
タグの値に挿入します。<username>
タグには、ユーザーの API 鍵の値を含める必要があります。<settings> <servers> <server> <id>appscan</id> <username>MyapiKey</username> <password>{uMrbEOEf/VQHnc0W2X49Qab75j9LSTwiM3mg2LCrOzI=}</password> </server> </servers> ... </settings>
-
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