Skip to main content

ローカルスキャンの実行

Contrast Scanローカルエンジンは、Java JARファイルとして提供されます。スキャンを実行するために、ビルドした成果物が必要です。

開始する前に

  • スキャンしたいビルド済み成果物の場所を確認します。

  • スキャン結果をローカルシステム上のどこに保存するかを決めます。

    出力結果のパスを指定しない場合、ローカル エンジンは結果をresults.sarifという名前のファイルで現在の作業ディレクトリに書き込みます。

  • 以下のソフトウェアがお使いのシステムにインストールされていることを確認します。

    • Java 11

    • JavaScriptのプロジェクトファイルをスキャンする場合、Semgrep App バージョン0.114.0

  • Contrast Scanローカルエンジンがスキャン結果とスキャナ出力をContrastにアップロードできるように、インターネットアクセスが必要です。

  • 使用可能なCPUが1つ(Contrast Scanローカルエンジンはシングルスレッド)あり、RAMに12GBの空きがあることを確認してください。

  • Contrast Scanローカルエンジンを実行するディレクトリや指定の出力ディレクトリに対して、読み取りおよび書き込み権限があることを確認します。

重要

スキャンするファイルのパスにスペースが含まれていないことを確認してください。

手順

  1. Contrast Webインタフェースにログインします。

  2. ユーザメニューより、ユーザの設定を選択します 。

  3. プロファイルにある、「あなたのキー」のセクションの以下の情報を取得します。

    • 組織ID

    • あなたのAPIキー

    • サービスキー

    • Contrast URL

    Image shows the user settings with arrows indicating the information you need
  4. ローカルスキャナが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>は、スキャン結果のファイルを保存するローカルシステムのパスに置き換えます。

      オプション:変数を使用する代わりに、コマンドでパスを指定することもできます。

  5. 以下のようなコマンドでスキャンを開始します。

    java -jar sast-local-scan-runner.jar <ScanArtifact> --project- \
    name <ProjectName> --label <LabelName>
    • Docker版のローカルエンジンを使用する場合、次のコマンドでスキャンを開始します。

    • <ProjectName>は、スキャンプロジェクトの名前に置き換えます。例:"my project name"

    • <ScanArtifact>は、スキャンするJAR、 WAR、またはZIPファイルのパスに置き換えます。また、フォルダを指定することもできます。

  6. スキャン完了後、数分待つと、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インターフェイスにアップロードされません。

コマンドのオプション

以下のコマンドオプションが使用できます。

オプション

説明

-o, --output-results

出力結果の保存場所を指定します。

指定しない場合、ローカルスキャナは現在の作業ディレクトリに結果を書き込みます。

-V, --version

バージョン情報を表示します。

-b, --branch

スキャンするリポジトリ内のブランチを指定します。

指定すると、スキャン結果は、メインブランチのスキャンに影響を与えることなく、現在のブランチの結果に対して集計されます。

--fail

検出された脆弱性の深刻度に基づいて、ビルドを失敗させます。--severityオプションと一緒に使用してください(例:contrast scan --fail --severity high)。深刻度を指定しない場合、すべての深刻度で失敗が返ります。失敗が検出された場合、CLIコマンドはコード2で終了します。

--label <ラベル>

このスキャンのラベルを指定します。

--memory <値>

デフォルトのメモリ使用量である2GBをオーバーライドできます。

このオプションは、多言語ソースコードのスキャンエンジンでのみ使用できます。

--project-name <プロジェクト名>

スキャンプロジェクトの名前を指定します。

既に存在するプロジェクト名を指定した場合、ローカルエンジンはそのプロジェクトにスキャンを追加します。存在しない場合は、指定された名前の新しいプロジェクトを作成します。

プロジェクト名にスペースが含まれる場合は、二重引用符(")で囲んでください。例:"My Scan Project"

プロジェクトIDを使用しない場合、このオプションは必須です。

--project-ID

既存のプロジェクトのIDを指定します。

プロジェクト名を使用しない場合、このオプションは必須です。

--severity <深刻度>

パイプラインでビルドをゲートするために使用できる、ビルド失敗のステータスコードを返すContrastの脆弱性の深刻度を指定します。

有効な値:critical(重大)、high(高)、medium(中)、low(低)、note(注意)

指定する値は、ビルド失敗のステータスコードを返す最小の深刻度です。例えば、--severity highを指定すると、この深刻度(high)以上の検出結果があった場合に、ビルド失敗のステータスコードが返されます。

--failオプションと一緒に使用してください。

-r <リソースグループ名>

プロジェクトを追加したいリソースグループの名前を指定します。

SaaS版をご利用中でロールベースのアクセス制御が有効になっている場合は、このオプションは必須です。

--timeout <分>

多言語ソースコードのスキャンエンジンが指定されたソースコードをスキャンする最長時間を制御できます。値を分単位で指定します。最大値は、1440分(24 時間)です。

このオプションは、ローカルスキャンエンジンでのみ使用できます。

このオプションは、スキャン対象のコードで検出された各言語に適用されます。例えば、リポジトリに4つの言語がある場合に、この値を120分に設定すると、スキャンが何時間も(4言語 x 各120分)実行される可能性があります。

終了コード

ローカルエンジンは、スキャンが完了すると以下の終了コードを返します。

終了コード

説明

0

スキャンは正常に終了し、結果をContrastにアップロードしました。

1

入力値の検証エラーです。

2

Contrast APIサーバへの接続エラーです。

3

Contrast APIサーバからエラーが返されました。

4

ローカルエンジンがエラーを返しました、詳細はログファイルにあります。

5

予期せぬエラーが発生しました、詳細はログファイルにあります。