Skip to main content

Docker利用のGradleプロジェクトにJavaエージェントをインストール

ここでは、アプリケーションプラグインDockerプラグインを含むGradleプロジェクトをサンプルとして使用し、JavaのWebアプリケーションを構築します。 また、Webアプリケーションの動作を検証するJUnit5の統合テストも実行します。プロセスの一環として、統合テスト時にContrast Assessでコードが解析されるよう、テストに使用するDockerイメージにContrastを組み込む手順を解説します。サンプルについては、GitHubリポジトリのGradleプロジェクトの例を参照してください。

注記

以下の手順において、パッケージングや配布に関して言及している部分はいかなる形式でも、全て組織内での使用を目的としています。ContrastをアプリケーションやDockerコンテナと一緒に組織外に配布しないでください。詳細については、Contrastのサービス利用規約を参照してください。

Dockerを使用する既存のGradleプロジェクトにContrast Javaエージェントを追加する手順:

  1. コマンドプロンプトを開き、以下のコマンドを実行してcontrast-java-examplesリポジトリをクローンします。

    $ git clone https://github.com/Contrast-Security-OSS/contrast-java-examples.git
  2. gradle-dockerディレクトリに移動します。

    $ cd contrast-java-examples/gradle-docker
  3. テストビルドを実行し、正常に機能することを確認します。

    $ ./gradlew build
    
    BUILD SUCCESSFUL in 3s
    4 actionable tasks: 3 executed, 1 up-to-date

    注記

    Windowsでは、代わりにgradlew.bat buildを実行してください。

  4. テストビルドがうまくいかない場合は、Java 11が正しくインストールされていることを確認して下さい(サンプルアプリケーションをビルドするには、Java 11以降が必要です。Javaエージェントのサポート対象ページで、ContrastのJavaエージェントでサポートされるJavaのバージョンを参照できます。)。

    $ java -version
    openjdk version "11.0.18" 2023-01-17
    OpenJDK Runtime Environment Temurin-11.0.18+10 (build 11.0.18+10)
    OpenJDK 64-Bit Server VM Temurin-11.0.18+10 (build 11.0.18+10, mixed mode)
  5. 変更を加えたら、再度ビルドを実行します。それでも機能しない場合は、この問題の詳細を記載して問題を報告してください。

  6. エージェントキーを使用して、ContrastエージェントがContrastサーバと通信するための設定をします。以下のキーが必要です。

    • Contrast URL:https://app.contrastsecurity.com/Contrastか、オンプレミス版かプライベートクラウドのURLになります。

    • 組織用APIキー

    • エージェントユーザ名

    • エージェントサービスキー

  7. Gradleのユーザホームディレクトリにある gradle.propertiesファイルに、Gradleのプロパティとしてキーを追加します。このファイルが存在しない場合は、作成して下さい。

    <contrast_url><your_api_key><agent_user_name>、および<agent_user_service_key>をContrast URL、APIキー、ユーザ名、およびサービスキーの値に置き換えます。

    contrastUrl=<contrast_url>
    contrastAgentUserName=<agent_user_name>
    contrastAgentServiceKey=<agent_user_service_key>
    contrastApiKey=<your_api_key>
  8. build.gradlecreateDockerfileタスクを修正して、Contrastエージェントを追加し、それを使用するようにアプリケーションを設定します。

    task createDockerfile(type: Dockerfile) {
      // ... rest of block omitted
    
      copyFile(new Dockerfile.CopyFile("/contrast/contrast-agent.jar", "/contrast.jar").withStage("contrast/agent-java:latest"))
      environmentVariable("JAVA_TOOL_OPTIONS", "-javaagent:/contrast.jar")
    }
  9. build.gradlecreateContainerタスクに以下のコマンドを追加し、Contrastの設定変数をコンテナに渡します。

    task createContainer(type: DockerCreateContainer) {
        // ... rest of the config omitted
    
        envVars = [
            CONTRAST__API__URL: project.property("contrastUrl"),
            CONTRAST__API__USER_NAME: project.property("contrastAgentUserName"),
            CONTRAST__API__SERVICE_KEY: project.property("contrastAgentServiceKey"),
            CONTRAST__API__API_KEY: project.property("contrastApiKey"),
            CONTRAST__APPLICATION__NAME: "${project.name}-how-to"
        ]
    }
  10. ビルドを再度実行します。

    ./gradlew clean build

    注記

    Windowsでは、代わりにgradlew.bat clean buildを実行します。

    これで、DockerコンテナでContrastを有効にしてアプリケーションを実行できるようになりました。総合テストを実行すると、脆弱なエンドポイントが検出され、Contrastに報告されます。報告された脆弱性を参照するには、Contrast Webインターフェイスで脆弱性ページにアクセスし、アプリケーション名のgradle-application-how-toでフィルターをかけます。