ローカルスキャンの実行
Contrast Scanローカルエンジンは、Java JARファイルとして提供されます。スキャンを実行するために、ビルドした成果物が必要です。
開始する前に
スキャンしたいビルド済み成果物の場所を確認します。
スキャン結果をローカルシステム上のどこに保存するかを決めます。
出力結果のパスを指定しない場合、ローカル エンジンは結果を
results.sarif
という名前のファイルで現在の作業ディレクトリに書き込みます。以下のソフトウェアがお使いのシステムにインストールされていることを確認します。
多言語ソースコードスキャン:Java 17
Javaバイナリスキャン: Java 17まで
JavaScriptプロジェクトファイルのスキャン:Semgrep App バージョン0.114.0
Contrast Scanローカルエンジンがスキャン結果とスキャナ出力をContrastにアップロードできるように、インターネットアクセスが必要です。
使用可能なCPUが1つ(Contrast Scanローカルエンジンはシングルスレッド)あり、RAMに12GBの空きがあることを確認してください。
Contrast Scanローカルエンジンを実行するディレクトリや指定の出力ディレクトリに対して、読み取りおよび書き込み権限があることを確認します。
重要
スキャンするファイルのパスにスペースが含まれていないことを確認してください。
手順
Contrast Webインタフェースにログインします。
ユーザメニューより、ユーザの設定を選択します 。
プロファイルにある、「あなたのキー」のセクションの以下の情報を取得します。
組織ID
あなたのAPIキー
サービスキー
Contrast URL
ローカルスキャナがContrastと通信するための環境変数を設定します。
注記
ローカルスキャンエンジンとContrastプラットフォーム間の通信にプロキシサーバを使用する場合は、プロキシサーバの環境変数も指定します。
export CONTRAST__API__URL=<URL> export CONTRAST__API__USER_NAME=<Username> export CONTRAST__API__API_KEY=<APIKey> export CONTRAST__API__SERVICE_KEY=<ServiceKey> export CONTRAST__API__ORGANIZATION=<OrgId> export LOCAL_ARTIFACT_LOCATION=<LocalArtifactLocation> export LOCAL_OUTPUT_LOCATION=<LocalOutputLocation>
<URL>
は、スキャン結果を報告するContrastのURLアドレスに置き換えます。 URLの後ろにContrast/api/sast
を追加してください。export CONTRAST__API__URL=https://app.contrastsecurity.com/Contrast/api/sast
<Username>
は、自分のContrastアカウント(通常はログインID)に置き換えます。<APIKey>
は、ContrastのAPIキーに置き換えます。<ServiceKey>
は、Contrastのサービスキーに置き換えます。<OrgID>
は、Contrastの組織IDに置き換えます。<LocalArtifactLocation>
は、Javaのスキャンの場合、JARファイルやWARファイルのパスに置き換えます。JavaScriptのスキャンの場合は、ソースコードが含まれるフォルダを指定します。オプション:変数を使用する代わりに、コマンドでパスを指定することもできます。
<LocalOutputLocation>
は、スキャン結果のファイルを保存するローカルシステムのパスに置き換えます。オプション:変数を使用する代わりに、コマンドでパスを指定することもできます。
以下のようなコマンドでスキャンを開始します。
java -jar sast-local-scan-runner.jar <ScanArtifact> --project- \ name <ProjectName> --label <LabelName>
Docker版のローカルエンジンを使用する場合、次のコマンドでスキャンを開始します。
<ProjectName>
は、スキャンプロジェクトの名前に置き換えます。例:"my project name"<ScanArtifact>
は、スキャンするJAR、 WAR、またはZIPファイルのパスに置き換えます。また、フォルダを指定することもできます。
スキャン完了後、数分待つと、Contrast Webインタフェースに結果が表示されます。アップロードと処理時間の関係で、結果はすぐに表示されません。
リポジトリ内のブランチのスキャン
プルリクエスト(PR)などで、リポジトリ内のブランチをスキャンするには、スキャンの実行時に--branch
オプションを使用してください。例:
java -jar sast-local-scan-runner-1.0.10.jar --project-name <ProjectName> --label <LabelName> --branch <BranchName> <ScanArtifact>
ブランチのスキャンで、GitHubアクションが成功したか失敗したかのステータスが返ります。現在、スキャン結果はContrast Webインターフェイスにアップロードされません。
コマンドのオプション
以下のコマンドオプションが使用できます。
オプション | 説明 |
---|---|
| 出力結果の保存場所を指定します。 指定しない場合、ローカルスキャナは現在の作業ディレクトリに結果を書き込みます。 |
| バージョン情報を表示します。 |
| スキャンするリポジトリ内のブランチを指定します。 指定すると、スキャン結果は、メインブランチのスキャンに影響を与えることなく、現在のブランチの結果に対して集計されます。 |
| このスキャンのラベルを指定します。 |
| 指定したログレベルのログ記録を有効にします。このオプションの値は次のとおりです。
このオプションは、Contrastサポートから指示された場合にのみ使用してください。すべてのスキャンに使用しないでください。 |
| デフォルトのメモリ使用量である2GBをオーバーライドできます。 このオプションは、多言語ソースコードのスキャンエンジンでのみ使用できます。 |
| スキャンプロジェクトの名前を指定します。 既に存在するプロジェクト名を指定した場合、ローカルエンジンはそのプロジェクトにスキャンを追加します。存在しない場合は、指定された名前の新しいプロジェクトを作成します。 プロジェクト名にスペースが含まれる場合は、二重引用符(")で囲んでください。例:"My Scan Project" プロジェクトIDを使用しない場合、このオプションは必須です。 |
| 既存のプロジェクトのIDを指定します。 プロジェクト名を使用しない場合、このオプションは必須です。 |
| パイプラインでビルドをゲートするために使用できる、ビルド失敗のステータスコードを返すContrastの脆弱性の深刻度を指定します。 有効な値: 指定する値は、ビルド失敗のステータスコードを返す最小の深刻度です。例えば、 |
| ソースコードのスキャン時にコード品質ルールを含める場合に指定します。 このオプションは、Javaバイナリスキャンには適用できません。 |
| プロジェクトを追加したいリソースグループの名前を指定します。 SaaS版をご利用中でロールベースのアクセス制御が有効になっている場合は、このオプションは必須です。 |
| 多言語ソースコードのスキャンエンジンが指定されたソースコードをスキャンする最長時間を制御できます。値を分単位で指定します。 このオプションは、ローカルスキャンエンジンでのみ使用できます。 このオプションは、スキャン対象のコードで検出された各言語に適用されます。例えば、リポジトリに4つの言語がある場合に、この値を120分に設定すると、スキャンが何時間も(4言語 x 各120分)実行される可能性があります。 |
終了コード
ローカルエンジンは、スキャンが完了すると以下の終了コードを返します。
終了コード | 説明 |
---|---|
0 | スキャンは正常に終了し、結果をContrastにアップロードしました。 |
1 | 入力値の検証エラーです。 |
2 | Contrast APIサーバへの接続エラーです。 |
3 | Contrast APIサーバからエラーが返されました。 |
4 | ローカルエンジンがエラーを返しました、詳細はログファイルにあります。 |
5 | 予期せぬエラーが発生しました、詳細はログファイルにあります。 |