AppScan プロキシー・サーバーを使用した AppScan® Enterprise でのテスト自動化
AppScan プロキシー・サーバーでは、トラフィックを記録して、AppScan Enterprise (ASE) ジョブで探査データとして使用できます。AppScan プロキシー・サーバーは、記録プロキシーを管理するためのシステムです。要求に応じてプロキシー・インスタンスを作成して、後で DAST スキャンに使用されるトラフィックを記録できます。この文書では、プロキシー・サーバーを設定して使用する方法について説明します。
概説
- AppScan プロキシー・サーバーを使用すると、記録プロキシーを自動的に開始できます。自動化フレームワークから Web アプリへの要求が記録されるのは、この記録プロキシーを経由して送信されるためです。トラフィックは、HAR 形式で .dast.config ファイルに保存されます。このファイルは、AppScan Enterprise (ASE) がスキャンの探査データとして使用できるように後でアップロードできます。
- また、プロキシー・サーバーを経由してトラフィックを手動で記録して、.dast.config ファイルを作成することもできます。
- プロキシー・サーバーを使用せずに、独自の HAR ファイルを ASE に直接アップロードすることもできます。
この図は、automated scan flow with AppScan® Enterprise を示します。
通常ワークフロー
AppScan プロキシー・サーバーのインストール
- 現在のバージョンの Node.js (v12 以降) のいずれかをダウンロードして、マシンにインストールしてください。サービスが FIPS に準拠している場合は、FIPS 準拠の Node.js サーバーを使用する必要があります。
- マシン上の任意のフォルダーに DastProxyServerStandalone.zip を解凍します。
- プロキシー・サーバーを実行するデフォルト・ポートを上書きするには、以下のようにします。Settings.json でポート設定を構成します。
AppScan プロキシー・サーバーの構成
FIPS 準拠モード
- プロキシー・サーバーのルート・フォルダーで Settings.json ファイルを見つけて、テキスト・エディターで開きます。
- 設定 requireFips を見つけ、その値を false から true に変更します。
- ファイルを保存します。
プロキシー・サーバー接続
- プロキシー・サーバーを実行するデフォルト・ポートを設定するには、以下のようにします。Settings.json でポート設定を構成します。
- プロキシー・サーバーへのセキュアな (SSL) 接続の場合:Settings.json で独自の PEM 証明書または PKCS12 証明書を構成します。
- PEM 証明書には 2 つのファイル (絶対パス) が必要であり、PKCS12 証明書には 1 つのファイル (絶対パス) とパスワードが必要です。
- 必要に応じて、ファイル・パスとパスワードの両方で文字をエスケープすることを忘れないでください。例えば、abc!”123 というパスワードであれば abc!\”123 とします (" はエスケープされます)。
openssl を使用して PEM 証明書を作成する例:
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt
openssl を使用して PEM 証明書を PKCS12 証明書に変換する例:
openssl pkcs12 -export -out certificate.pfx -inkey key.pem -in server.crt
Java のキー生成ツールを使用して JKS 証明書を PKCS12 証明書に変換する例:
keytool -importkeystore -srckeystore certificate.jks -srcstoretype JKS -destkeystore certificate.p12 -deststoretype PKCS12
ルート証明書
テスト対象のアプリケーションが SSL (HTTPS) を使用している場合、トラフィックを記録するためには AppScan 記録プロキシーが中間者攻撃として動作する必要があります。このためには、AppScan 記録プロキシーに、アプリケーションとの通信に署名するために使用できるルート証明書が必要です。
- AppScan プロキシー・サーバーによって生成された証明書を 1 つ以上のマシンにインストールします。
- REST API を使用して自己署名ルート認証局をダウンロードします。これは、AppScan プロキシー・サーバーで PEM ファイルとして使用します。
- 探査に使用するブラウザー、または必要な場所 (トラフィックの送信元に応じて決まります) に証明書をインストールします。
- 独自のルート証明書を AppScan プロキシー・サーバーにインポートします。サポートされる証明書形式は、PKCS12 (.P12、.PFX)、JKS です。
- コマンド行ウィンドウを開き、プロキシー・サーバー・マシンのインストール・フォルダーに移動します。
- 以下のコマンドを実行します。
.\Java\jre\bin\java -jar DastProxy.jar -irc [path to certificate file] -ircp [password]
注: コマンドの詳しい使用法を表示するには、.\Java\jre\bin\java -jar DastProxy.jar コマンドを実行します。重要: 証明書がプロキシー・サーバーに保存されるため、専用のテスト証明書を使用することをお勧めします。
- StartProxy コマンドで (ルート証明書ではなく) 独自の固定サーバー証明書を指定します。
プロキシー非アクティブ・タイムアウトの設定
記録プロキシー・インスタンスは、使用後に close コマンドで閉じないと、ポート上で開いたままとなって listen を続行します。記録プロキシー・インスタンスは、事前定義した時間だけアイドルになると、自動的に閉じられます。
記録プロキシー・インスタンスのデフォルトの非アクティブ・タイムアウトは、60 分です。この値を変更するには、インストール・フォルダーに保存されている Settings.json ファイルで inactivityTimeoutInMinutes の値を変更します。
トラフィックの暗号化
デフォルトでは、トラフィック (.dast.config) ファイルは暗号化されません。すべてのトラフィックを暗号化するようにサーバーを構成するには、インストール・フォルダーにある Settings.json ファイルで「encryptDastConfig」値を「true」に変更します。
チェーニングされたプロキシー
複数のチェーニングされたプロキシー、またはプロキシーの例外を定義する必要がある場合、インストール・フォルダーにあるチェーニングされたプロキシーのルール・ファイル (proxy.chain) を使用します。このファイルには、使用手順が含まれています。
プロキシー・サーバーの開始
単にプロキシー・サーバーを開始することも、サービスとして実行する (以下) こともできます。両方を並行して行うことはできない点に注意してください。
- 以下のコマンドを実行します。 node app.js [port]
ここで、*port は REST API 要求に対してプロキシー・サーバーが listen するポートです。
- プロキシー・サーバーの開始時にポートを定義しないと、Settings.json ファイルに設定されたポートが使用されます。このファイルに何も定義されていない場合は、ポート 8383 が使用されます。
- プロキシー・サーバーを停止する必要はなく、永続的に実行したままにすることができます。
サービスとして開始
サービスを開始するには、以下のコマンドを実行します。
node service.js --install
node service.js --start
追加のサービス・コマンド
このリストは、node service.js --help コマンドを実行して出力できます。
サービス・コマンド | 説明 |
---|---|
--start | サービスの開始 |
--stop | サービスの停止 |
--install | サービスのインストール |
--uninstall | サービスの停止とアンインストール |
--h | --help | 使用状況情報の出力 |
プロキシー・サーバーの使用
プロキシー・サーバーを開始したら、新しい記録プロキシー・インスタンスを開始して、アプリケーションのトラフィックを記録できます。
- プロキシー・インスタンスを開始するには、REST API 要求を使用します。StartProxy
- 定義された記録プロキシー・ポートを介して、テスト対象のアプリケーションにトラフィックを送信します。
- 完了したら、以下の REST API 要求を送信します:StopProxy。
- REST API 要求を送信して、記録されたトラフィックが含まれている .dast.config ファイルをダウンロードします。トラフィック。ファイルは、1 つ以上の .har (HTTP Archive) ファイルを含む ZIP ファイルです。このファイルをダウンロードすると、AppScan プロキシー・サーバーからデータが削除されます。
- ASE REST API を使用し、.dast.config ファイルを使用して既存のジョブの探査データを更新できます。以下の資料を参照してください。https://%3Case_server%3E:9443/ase/api/pages/apidocs.html。詳しくは、「プロキシー・サーバー API コマンド」セクションを参照してください。
プロキシー・サーバー API コマンド
プロキシー・サーバーを開始したら、記録プロキシー・インスタンスを開始して、アプリケーションにトラフィックを送信できます。
資料
Swagger で REST API 資料全体を参照するには、ブラウザーに以下のように入力します。http(s)://<server>:<port>
すべてのコマンドが以下のようなエンドポイントを指します。
http(s)://[server]:[port]/automation/
server = プロキシー・サーバーがインストールされているマシンの IP アドレス (デフォルトは localhost)。
port = プロキシー・サーバーがリスンするポート。
「StartProxy」
- URL:http://[server]:[port]/automation/StartProxy/<recordingPort>
- 要求タイプ: POST または GET (chainedProxy、proxyCertificate、および clientCertificate を使用している場合、要求は POST、それ以外の場合は GET)
「StopProxy」
- URL:http://[server]:[port]/automation/StopProxy/<recordingPort>
- 要求タイプ: GET
"StopAllProxies"
実行中のすべての記録プロキシーを停止します。このコマンドは、他のユーザーが開始したものを含め、すべてのポート上のすべての記録プロキシーを停止します。
- URL:http://[server]:[port]/automation/StopAllProxies
- 要求タイプ: POST
"EncryptDastConfig"
- URL:http://[server]:[port]/automation/EncryptDastConfig
- 要求タイプ: POST
"DownloadEncryptedDast"
- URL:http://[server]:[port]/automation/DownloadEncryptedDastConfig/<uuid>
- 要求タイプ: GET
「Traffic」
- URL:http://[server]:[port]/automation/Traffic/<recordingPort>
- 要求タイプ: GET
「Certificate」
- URL:http://[server]:[port]/automation/Certificate
- 要求タイプ: GET
AppScan プロキシー・サーバーの更新
AppScan プロキシー・サーバーをドロップして新しいバージョンに移行する前に、変更した構成ファイルがあれば新しいフォルダーに必ずコピーしてください。
プロキシー・サーバーをサービスとしてインストールした場合は、更新する前にサービスをアンインストール (「追加のサービス・コマンド」を参照) してから再インストールしてください。