AWS Elastic BeanstalkでのJavaエージェント

  • 更新

エージェントインストールガイド 

概要

ここでは、AWS Elastic Beanstalkの環境でContrastのJavaエージェントを使用する方法について紹介します。本項を参考にご利用の環境に合わせた方法で、JavaアプリケーションにContrastエージェントをインストールしてBeanstalk環境にデプロイし、必要に応じてチーム内で共有してください。

本項では主に、BeanstalkにデプロイしたJavaアプリケーションにContrastエージェントを組み込み、Contrastでセキュリティデータを確認するための最も一般的な方法について説明します。

 

主な手順

.ebextensions」を使用する設定ファイルを作成

  1. Contrast Javaエージェントをダウンロード
  2. Contrastエージェントの設定ファイルを作成
  3. JVM引数を更新してContrastエージェントをロード

Contrastエージェントを有効にしてアプリケーションを起動

  1. .ebextensionsの設定ファイルでアプリケーションをデプロイ

サポート対象のテクノロジ

作業を開始する前に、ご利用のJavaのツールや環境がContrastでサポートされていることを確認してください:

https://docs.contrastsecurity.jp/ja/java-supported-technologies.html 

 

本項は以下を前提としております:

  • DevOpsの実践とBeanstalkでのデプロイ方法に関してある程度の知識があること
  • Contrast JavaエージェントがContrastサーバに接続するための必要な情報があること:https://docs.contrastsecurity.jp/ja/java-configuration.html
  • Contrast Javaエージェントをダウンロードして起動したことがあること
  • カスタマイズした設定ファイル(.ebextensions)をインストールするためのBeanstalk環境へのアクセスがあること

(参考)

https://aws.amazon.com/jp/premiumsupport/knowledge-center/elastic-beanstalk-configuration-files/

 

手順

まず、Contrast用に.ebextensionsで使用する設定ファイルを作成します。

1. Contrast Javaエージェントをダウンロード

Contrast Javaエージェントをダウンロードしてアプリケーションに組み込むには、.ebextensionsの設定ファイルを使用することをお勧めします。.ebextensionsを使用する設定ファイルでは、filesセクションに、リモートURLからContrastエージェントをダウンロードするように指定します。次の例では、Mavenの公開リポジトリからContrast Javaエージェントをダウンロードしています。

以下に、Mavenから最新バージョンのContrast Javaエージェントをダウンロードするよう.ebextensionsを設定する例を示します。

files:
 "/opt/contrast/contrast.jar":
   mode: "000755"
   owner: root
   group: root
    source: "https://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=com.contrastsecurity&a=contrast-agent&v=LATEST"

Contrastエージェントの場所には、/opt/contrastを推奨しますが、必要に応じて別の場所を使用することもできます。また、必要に応じて、社内ポジトリからエージェントをダウンロードするようにURLを変更することもできます。

ビルド時に、希望のエージェントバージョンを指定して、Mavenリポジトリからダウンロードできます。

 

2. Contrastエージェントの設定ファイルを作成

Contrastエージェントの設定を指定するために、さまざまな値を使用できます。設定する値には有効になる優先順位があります。各レベルは、上位のレベルが指定された場合に無効になります。優先順位は次のとおりで、最も優先されるのが1です:

      1. 企業の基準(例、期限切れのライセンスはassess.enableより優先)
      2. システムプロパティの値
      3. 環境変数の値
      4. YAML設定ファイルの値
      5. Contrast UIで指定した値
      6. デフォルトの値

優先順位の詳細については、以下を参照してください:
エージェントの設定の優先順位

設定する値を組み合わせて利用することをお勧めします:

  • 共通の設定はYAMLファイルに保存して.ebextensionsの設定ファイルとして指定
  • アプリケーション固有の設定に関する値は環境変数を使用

共通の設定

以下は、基本となる設定をYAMLファイルに指定する方法です。基本の設定として一般的ものをいくつか紹介します。必要に応じて編集してください。

  • ログをコンソール出力にリダイレクト
  • プロキシの設定(プロキシがある場合)
  • エージェントのアクティビティを制限するパフォーマンスチューニングオプション

以下は、.ebextensionsの設定ファイルの一例で、デプロイ時にContrastエージェントのYAMLファイルを作成し設定する方法を示します。

files:
"/var/contrast/contrast_security.yaml" :
  mode: "000755"
  owner: root
  group: root
  content: |
    api:
      proxy:
        url: https://host:port
    agent:
       java:
        scan_all_classes: false
        scan_all_code_sources: false
      logger:
         stdout: true

 

アプリケーション固有の設定

この方法によって、アプリケーションごとに追加のオプションを指定できます。アプリケーション固有の設定を指定するために、環境変数を使用します。

  • アプリケーションのメタデータ:アプリケーションに関連付けるユーザ定義のメタデータを指定
    CONTRAST__APPLICATION__METADATA
  • アプリケーション名:Contrastサーバに報告されるアプリケーション名を指定
    CONTRAST__AGENT__JAVA__STANDALONE_APP_NAME
  • アプリケーションのセッションメタデータ:ビルド番号、バージョン、ハッシュなどの情報でセッションの新規作成時に使用されるメタデータを指定
    CONTRAST__APPLICATION__SESSION_METADATA

詳細については、Contrastのドキュメントを参照:https://docs.contrastsecurity.jp/ja/session-metadata.html

  • アプリケーショングループ:このアプリケーションを関連付けるアクセスグループをオンボード時に指定(注:アプリケーションのアクセスグループは、先にContrastで作成しておく必要あり)
    CONTRAST__APPLICATION__GROUP
  • サーバの環境:アプリケーションを実行する環境を指定、このオプションで有効な値:development、qa、production
    CONTRAST__SERVER__ENVIRONMENT

環境変数は、環境の作成時に設定できます。以下は、その例です。

eb create <environment name> --envvars CONTRAST__API__URL=https://app.contrastsecurity.com/Contrast,CONTRAST__API__API_KEY=<value>,CONTRAST__API__SERVICE_KEY=<value>,CONTRAST__API__USER_NAME=<value>,CONTRAST__SERVER__NAME=<value>,CONTRAST__SERVER__ENVIRONMENT=<value>

環境を作成した後に設定することも可能です。以下は、その例です。

eb setenv CONTRAST__API__URL=https://app.contrastsecurity.com/Contrast CONTRAST__API__API_KEY=<value> CONTRAST__API__SERVICE_KEY=<value> CONTRAST__API__USER_NAME=<value> CONTRAST__SERVER__NAME=<value> CONTRAST__SERVER__ENVIRONMENT=<value>

 

3. JVM引数を更新

Javaアプリケーションにプロファイラをロードするために、アプリケーションに-javaagentオプションを渡す必要があります。これを行うには、JAVA_TOOL_OPTIONS環境変数を設定します。

アプリケーション固有の環境変数と同じ方法で設定します。ContrastエージェントのJARとYAML設定ファイルのパスを使用します。以下は、その例です。

eb setenv JAVA_TOOL_OPTIONS="-javaagent:/opt/contrast/contrast.jar -Dcontrast.config.path=/var/contrast/contrast_security.yaml"

このステップは、Contrastエージェントに環境変数を渡す前のステップと組み合わせることができます。

 

4. .ebextensionsの設定を使用してアプリケーションをデプロイ

AWSでは、Beanstalkのカスタマイズ設定は、デプロイフォルダのルートの .ebextensionsフォルダ内に設定ファイルがあることが前提とされています。

以下は、 .ebextensionsフォルダを含むディレクトリ構成の例です。ContrastエージェントのダウンロードとYAML設定が含まれたcontrast.configファイルがあります。

├── .ebextensions
│   └── contrast.config
└── application.jar

 

このフォルダ構成に対して、以下のコマンドを使用し、Contrast Javaエージェントを有効にしてアプリケーションをデプロイします。

eb deploy < environment name >

 

FAQ

  1. Contrast Javaエージェントは、アプリケーションのパフォーマンスにどの程度影響しますか?

https://support.contrastsecurity.com/hc/en-us/articles/360000500286-Java-Agent-Effects-on-Application-Performance-Assess-

  1. Javaで実行する場合に、アプリケーションの起動に影響ありますか?

https://support.contrastsecurity.com/hc/en-us/articles/360000460066-Java-Agent-Effects-on-Startup-Performance

  1. Contrastログに表示されるSSL接続エラーを解決するにはどうすればよいですか?

JavaエージェントがContrast UIに接続できない:javax.net.ssl.SSLHandshakeException

  1. 新しいバージョンのエージェントは、古いバージョンのContrastサーバに対して動作しますか?また、その逆は?

動作するかもしれませんが、推奨しません。

https://docs.contrastsecurity.jp/ja/agents.html

この記事は役に立ちましたか?

0人中0人がこの記事が役に立ったと言っています

他にご質問がございましたら、リクエストを送信してください