Skip to main content

AWS Elastic BeanstalkでJavaエージェントをインストール

本項での手順を使用して、Javaエージェントを設定し、AWS Elastic Beanstalkと連携させることができます。ContrastのJavaエージェントをダウンロードして、アプリケーションに組み込んで検査をするために、.ebextensionsファイルをどのように作成するかを説明します。

ご利用の環境によっては、本項の手順をカスタマイズする必要があります。

この手順は、DevOpsの実践とDockerの仕組みに関して知識があるユーザを対象としています。

開始する前に

  • ご利用のJavaのツールや環境がContrastでサポートされていることを確認すること。

  • ContrastのJavaエージェントがContrastサーバに接続するための必要な情報があること。

  • ContrastのJavaエージェントをダウンロードして起動したことがあること。

  • カスタマイズした設定ファイル.ebextensionsをインストールするためのBeanstalk環境へのアクセスがあること。

手順1:Contrast Javaエージェントをダウンロードする設定を指定

設定ファイル.ebextensionsのfilesセクションに、リモートURLからContrastエージェントをダウンロードするよう指定します。以下は、MavenリポジトリからContrastエージェントをダウンロードするための設定の例です。

files:
  "/opt/contrast/contrast.jar":
    mode: "000755"
    owner: rootCorporate rule
    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. 社内規定(例、ライセンスの期限切れによる無効化など)

  2. システムプロパティ

  3. 環境変数

  4. YAML設定ファイル

  5. Contrast Webインターフェイスで設定されている値

  6. Contrast Securityが設定したデフォルト値

エージェントの設定ファイルを作成する方法として、共通の設定とアプリケーション固有の設定を組み合わせて使用することをお勧めします。

  • 共通の設定: 基本となる一連の設定を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__APPLICATION_NAME
    • アプリケーションのセッションメタデータ:ビルド番号、バージョン、ハッシュなどの情報でセッションの新規作成時に使用されるメタデータを指定

      CONTRAST__APPLICATION__SESSION_METADATA

      注記

      詳細については、セッションメタデータの設定をご覧ください。

    • アプリケーションのグループ:アプリケーションをContrastに追加した時に関連付ける、アプリケーションアクセスグループを指定。アプリケーションアクセスグループは、使用する前に先に作成しておく必要があります。

      CONTRAST__APPLICATION__GROUP
    • サーバの環境:アプリケーションを実行する環境を指定。このオプションで有効な値:development、qa、 production

      CONTRAST__SERVER__ENVIRONMENT

    例1:環境の作成時に環境変数を設定する方法

    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>

    例 2:環境を作成した後に環境変数を設定する方法

    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環境変数を設定します。

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

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

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

AWSでは、Beanstalkのカスタマイズ設定は、デプロイフォルダのルートの .ebextensionsフォルダ内に設定ファイルがあることが前提とされています。以下は、.ebextensionsフォルダを含むディレクトリ構成の例です。ContrastエージェントのダウンロードとYAML設定が含まれた contrast.configファイルがあります。

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