コンテナを使用して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エージェント