Skip to main content

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

インストールを行う前に

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

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

ECSのサポート

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

手順 1:Dockerイメージにエージェントを追加

ベースイメージにエージェントを追加すれば、イメージを1回変更するだけで、このベースイメージを使用する全てのアプリケーションでContrastを利用できるようになります。また、こうすることで、アップデートはこのベースイメージの更新に依存することになります。これを行うには:

  1. Contrastエージェントと基本の設定をDockerベースイメージへ追加しますが、有効化はしません。エージェントの追加先には、/opt/contrastを推奨します。例:

    FROM BASE_IMAGE
    ARG CONTRAST_AGENT_VERSION
    ADD https://repo1.maven.org/maven2/com/contrastsecurity/contrast-agent/$CONTRAST_AGENT_VERSION/contrast-agent-$CONTRAST_AGENT_VERSION.jar 
    /opt/contrast/contrast.jar

    オプションとして、内部リポジトリからエージェントをダウンロードするようにURLを変更することもできます。

    次の例に示すように、<YourAgentVersion>をダウンロードしたいバージョン番号に置き換えて、イメージのビルド時に特定のエージェントのバージョンを指定します。

    docker build --build-arg CONTRAST_AGENT_VERSION=<YourAgentVersion> -t image_with_contrast:tag .

    ヒント

    Javaエージェントの任意のバージョンをより柔軟に使用したり、自動アップデートを避けたい場合などは、アプリケーションのDockerイメージに直接ADD命令を追加してください。

  2. アプリケーションのDockerイメージまたはコンテナでContrastを有効にするには、JVMパラメータを使用します。

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

Javaエージェントの設定は、有効になる優先順位があります。コンテナにインストールする場合:

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

    以下は、YAML設定ファイルのサンプルです。

    agent:
      java:
        scan_all_classes: false
        scan_all_code_sources: false
      logger:
        stdout: true

    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エージェント