Skip to main content

コンテナを使用してJavaエージェントをインストール

本項では、Dockerを例として、コンテナ化されたアプリケーションにContrast Javaエージェントをインストールするための一般的な手順について説明します。

注記

エージェントの起動に時間がかかる場合は、Java Agent Effects on Startup Performance(Javaエージェントが起動パフォーマンスに及ぼす影響)およびJava agent with Docker(Docker環境でのJavaエージェント)に、この問題の解決の参考になる情報があります。

インストールを行う前に

コンテナや関連ソフトウェアの仕組みを基本的に理解している必要があります。実際の手順は、ご利用の環境に合わせて調整してください。

ECSのサポート

Amazon ECS(Amazon Elastic Container Service)環境でDockerコンテナを使用する場合、この手順を使用してContrast Javaエージェントをインストールすることができます。

手順 1:エージェントをインストール

Contrastエージェントは、アプリケーションをコンテナイメージに追加する前または後のどちらでも追加できます。推奨される方法は、名前を付けたマルチステージビルドを使用することです。例:

FROM eclipse-temurin:17

# Hidden for brevity...

# Copy the required agent files from the official Contrast agent image.
COPY --from=contrast/agent-java:latest /contrast/contrast-agent.jar /opt/contrast/contrast.jar

この例では、最新のJavaエージェントが使用されます。使用可能なタグは、DockerHubを確認して下さい。

手順2:エージェントを設定

Javaエージェントをコンテナにインストールする場合は:

  • 共通の設定にはYAML設定ファイルを使用して、ベースイメージで指定できるようにします。例えば、共通の設定には、ログをコンソール出力にリダイレクトすることや、プロキシの設定、パフォーマンスのチューニングなどがあります。

    Contrastエージェント設定エディタを使用すると、エージェントを正しく設定することができます。

    YAML設定ファイルを作成し、ベースイメージにコピーします。次の行を追加して、このYAML設定ファイルをベースイメージのDockerfileにコピーします。

    COPY WORKSPACE/contrast_security.yaml /opt/contrast/contrast_security.yaml
  • アプリケーション固有の設定値には、Javaのシステムプロパティ環境変数を使用して、各アプリケーションのオプションをそれぞれ指定します。

    Contrastの設定

    機能

    Javaシステムプロパティ

    環境変数

    アプリケーションのメタデータ

    アプリケーションに関連付けるメタデータを指定

    指定する前にアプリケーションメタデータを作成してください。

    -Dcontrast.application.metadata

    CONTRAST__APPLICATION__METADATA

    アプリケーションのセッションメタデータ

    ビルド番号、バージョン、ハッシュなどの情報でセッションの新規作成時に使用されるセッションメタデータを指定

    -Dcontrast.application.session_metadata

    CONTRAST__APPLICATION__SESSION_METADATA

    アプリケーショングループ

    このアプリケーションを関連付けるアクセスグループをオンボード時に指定(アプリケーションのアクセスグループは先にContrastで作成しておく必要あり)

    -Dcontrast.application.group

    CONTRAST__APPLICATION__GROUP

    サーバの環境

    アプリケーションを実行する環境を指定、このオプションで有効な値:Development、QA、Production

    -Dcontrast.server.environment

    CONTRAST__SERVER__ENVIRONMENT

手順 3:JVMパラメータを更新

Javaアプリケーションにプロファイラをアタッチするために、 JAVA_TOOL_OPTIONS環境変数を設定して、アプリケーションに-javaagentオプションを指定する必要があります。

Contrast共通のJVMパラメータをベースイメージ内の別の環境変数にあらかじめ設定しておき、アプリケーションチームがそれをJAVA_TOOL_OPTIONSで利用できるようにします。 例:

  • ベースイメージのDockerfile:

    ENV CONTRAST_OPTS "-javaagent:/opt/contrast/contrast.jar \
    -Dcontrast.config.path=/opt/contrast/contrast_security.yaml"
  • アプリケーションイメージのDockerfile:

    ENV JAVA_TOOL_OPTIONS $CONTRAST_OPTS \
    -Dcontrast.application.metadata=bU=<value>,contactEmail=<value>,contactName=<value> \
    -Dcontrast.application.group=APP_GROUP

手順 4:アプリケーションイメージを実行

Dockerイメージにエージェントを追加して設定したら、イメージを実行します。

エージェントがContrastサーバにデータを送信するには、エージェントの認証情報が必要です。 エージェントの認証情報を保護するために、Docker secretを利用して、デプロイ時に環境変数として渡すことができます。以下は、Docker runコマンドの例です。

docker run -e CONTRAST__API__URL=https://app.contrastsecurity.com -e CONTRAST__API__API_KEY=<value> -e CONTRAST__API__SERVICE_KEY=<value> -e CONTRAST__API__USER_NAME=<value> -e CONTRAST__SERVER__NAME=<value> -e CONTRAST__SERVER__ENVIRONMENT=<value> image_with_contrast

Contrastが実行されているかを確認するには、コンテナのログをチェックしてください。次のようなメッセージが表示されているはずです。

2020-05-28 22:36:29,910 [main STDOUT] INFO - Copyright: 2019 Contrast Security, Inc
2020-05-28 22:36:29,910 [main STDOUT] INFO - Contact: support@contrastsecurity.com
2020-05-28 22:36:29,910 [main STDOUT] INFO - License: Commercial
2020-05-28 22:36:29,910 [main STDOUT] INFO - NOTICE: This Software and the patented inventions embodied within may only be used as part of
2020-05-28 22:36:29,910 [main STDOUT] INFO - Contrast Security's commercial offerings. Even though it is made available through public
2020-05-28 22:36:29,910 [main STDOUT] INFO - repositories, use of this Software is subject to the applicable End User Licensing Agreement
2020-05-28 22:36:29,910 [main STDOUT] INFO - found at https://www.contrastsecurity.com/enduser-terms-0317a or as otherwise agreed between
2020-05-28 22:36:29,910 [main STDOUT] INFO - Contrast Security and the End User. The Software may not be reverse engineered, modified,
2020-05-28 22:36:29,910 [main STDOUT] INFO - repackaged, sold, redistributed or otherwise used in a way not consistent with the End User
2020-05-28 22:36:29,910 [main STDOUT] INFO - License Agreement.
[Contrast] Thu May 28 22:36:30 EDT 2020 Effective instructions: Assess=false, Protect=true
[Contrast] Thu May 28 22:36:30 EDT 2020 String Supporter has been disabled
[Contrast] Thu May 28 22:36:30 EDT 2020 Logging security messages to /Users/usernamehere/.contrast/security.log
[Contrast] Thu May 28 22:36:31 EDT 2020 Starting JVM [1862ms]

関連項目

Contrastエージェントオペレータ(Kubernetesオペレータ)

Contrastサポートポータル:AWS FargateとContrastエージェントDocker環境でのJavaエージェント