Docker利用のGradleプロジェクトにJavaエージェントをインストール
ここでは、アプリケーションプラグインとDockerプラグインを含むGradleプロジェクトをサンプルとして使用し、JavaのWebアプリケーションを構築します。 また、Webアプリケーションの動作を検証するJUnit5の統合テストも実行します。プロセスの一環として、統合テスト時にContrast Assessでコードが解析されるよう、テストに使用するDockerイメージにContrastを組み込む手順を解説します。サンプルについては、GitHubリポジトリのGradleプロジェクトの例を参照してください。
注記
以下の手順において、パッケージングや配布に関して言及している部分はいかなる形式でも、全て組織内での使用を目的としています。ContrastをアプリケーションやDockerコンテナと一緒に組織外に配布しないでください。詳細については、Contrastのサービス利用規約を参照してください。
Dockerを使用する既存のGradleプロジェクトにContrast Javaエージェントを追加する手順:
コマンドプロンプトを開き、以下のコマンドを実行してcontrast-java-examplesリポジトリをクローンします。
$ git clone https://github.com/Contrast-Security-OSS/contrast-java-examples.git
gradle-docker
ディレクトリに移動します。$ cd contrast-java-examples/gradle-docker
テストビルドを実行し、正常に機能することを確認します。
$ ./gradlew build BUILD SUCCESSFUL in 3s 4 actionable tasks: 3 executed, 1 up-to-date
注記
Windowsでは、代わりに
gradlew.bat build
を実行してください。テストビルドがうまくいかない場合は、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)
変更を加えたら、再度ビルドを実行します。それでも機能しない場合は、この問題の詳細を記載して問題を報告してください。
エージェントキーを使用して、ContrastエージェントがContrastサーバと通信するための設定をします。以下のキーが必要です。
Contrast URL:
https://app.contrastsecurity.com/Contrast
か、オンプレミス版かプライベートクラウドのURLになります。組織用APIキー
エージェントユーザ名
エージェントサービスキー
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>
build.gradle
のcreateDockerfile
タスクを修正して、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") }
build.gradle
のcreateContainer
タスクに以下のコマンドを追加し、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" ] }
ビルドを再度実行します。
./gradlew clean build
注記
Windowsでは、代わりに
gradlew.bat clean build
を実行します。これで、DockerコンテナでContrastを有効にしてアプリケーションを実行できるようになりました。総合テストを実行すると、脆弱なエンドポイントが検出され、Contrastに報告されます。報告された脆弱性を参照するには、Contrast Webインターフェイスで脆弱性ページにアクセスし、アプリケーション名のgradle-application-how-toでフィルターをかけます。