AWS EC2におけるContrastエージェント

  • 更新

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

概要

ここでは、AWS EC2の環境でContrastのJavaエージェントを使用する方法について紹介します。 Amazon Elastic Compute Cloud(Amazon EC2)は、アマゾン ウェブ サービス (AWS) クラウド内で安全でサイズ変更可能なコンピューティング性能を提供します。Amazon EC2を使用すれば、ハードウェアへの先行投資が不要になるため、アプリケーションの開発・デプロイを迅速に行うことができます。

本項を参考にご利用の環境に合わせた方法で、アプリケーションにContrastエージェントをインストールし、必要に応じてチーム内で共有してください。

本項では主に、Amazon AWS EC2のLinuxベースの環境で実行するJavaアプリケーションにContrastエージェントを組み込むための最も一般的な方法について説明します。

 

主な手順

EC2インスタンスにContrastエージェントをインストールするには、以下の2つの方法があります。

方法 1:Contrast APIを使用してContrastエージェントをインストール

  1. EC2インスタンスを起動
  2. EC2インスタンスの起動時にContrast エージェントをダウンロード/インストールするスクリプトをユーザデータに指定
  3. Contrastエージェントを利用するようにEC2インスタンスを設定
  4. Contrastエージェントを有効にしてアプリケーションを起動

方法 2:yumリポジトリからContrasエージェントをインストール

  1. EC2インスタンスを起動
  2. EC2インスタンスにContrast yumリポジトリを追加するスクリプトをユーザデータに指定
  3. yumリポジトリからContrastエージェントをインストール
  4. Contrastエージェントを利用するようEC2インスタンスを設定
  5. Contrastエージェントを有効にしてアプリケーションを起動

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

作業を開始する前に、ご利用のJavaのツールや環境がContrastでサポートされていることを確認してください:
https://docs.contrastsecurity.jp/ja/java-supported-technologies.html

 

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

手順

 

事前の準備

AWS CLIを使用して、必要なAPI認証情報をAWS Secrets Managerに追加

ターミナルから、コマンドラインで以下の2つのコマンドを実行します。

aws secretsmanager create-secret --region <AWS_REGION> --name <SECRET_NAME_API> --secret-string <YOUR_API_KEY>
aws secretsmanager create-secret --region <AWS_REGION> --name <SECRET_NAME_AUTH> --secret-string <YOUR_AUTHORIZATION_HEADER>

ご利用の環境に合わせて値を置き換えてください:

  • <SECRET_NAME_API>= ユーザのAPIキーを保存するために作成するAWS Secrets Managerのシークレット名
  • <SECRET_NAME_AUTH> = ユーザの認証ヘッダーを保存するために作成するAWS Secrets Managerのシークレット名
  • <YOUR_API_KEY> = Contrast APIにアクセスするために使用されるユーザのAPIキー
  • <YOUR_AUTHORIZATION_HEADER> = Contrast APIにアクセスするために使用されるユーザの認証ヘッダー

ユーザのAPIキーの検索方法は、Contrastドキュメントで以下を参照ください。

https://docs.contrastsecurity.jp/ja/personal-keys.html

注: 

Contrast APIへのプログラムによるアクセスのために、API用ユーザを作成することをお勧めします。

AWS Secrets Managerへのアクセスを許可するIAMロールを作成

AWSの管理コンソールで、IAMを選択し、続いて表示される画面でロールを選択します。

  1. 「ロールの作成」ボタンをクリックします。
  2. 「AWS サービス」を選択し、「EC2」を選択します。
  3. 「次のステップ:アクセス権限」をクリックします。
  4. 「SecretsManagerReadWrite」を検索します。
  5. 「SecretsManagerReadWrite」ポリシーのチェックボックスにチェックをします。
  6. 「次のステップ:タグ」を選択し、ロールに適切なタグを作成します。
  7. 「次のステップ:確認」をクリックします。
  8. IAMロールに適切な名前を付けます(本項では<IAM_ROLE>として表記されます)。

 

EC2のユーザデータでContrast Javaエージェントをインストール

以下の手順で、EC2インスタンスにContrast Javaエージェントをインストールします。

 

EC2インスタンスを作成

AWS EC2の管理コンソールで、インスタンス起動を選択して、EC2起動画面を開始します。

インスタンス起動の画面で、

  1. Amazonマシンイメージ(AMI)の選択画面で、「Amazon Linux 2 AMI (64-ビット x86)」を選択します。
  2. インスタンスタイプには、「t2.micro」を選択するか、アプリケーションに応じて適切なタイプを選択します。
  3. 「次のステップ:インスタンスの詳細の設定」をクリックします。
  4. 「インスタンスの詳細の設定」画面で、以下を行います。
    • 前述の事前準備で作成したIAMロール<IAM_ROLE>を選択します。
    • 「ユーザーデータ」フィールドに以下のスクリプトを貼り付けます。
#!/bin/bash
# install updates
yum update -y
# Setup directories and download the Contrast Java Agent
mkdir -p /opt/contrast
cd /opt/contrast
authHeader=`aws --region us-east-1 secretsmanager get-secret-value --secret-id <SECRET_NAME_AUTH> --query SecretString --output text`
apiKey=`aws --region us-east-1 secretsmanager get-secret-value --secret-id <SECRET_NAME_API> --query SecretString --output text`
curl https://app.contrastsecurity.com/Contrast/api/ng/<ORGANIZATION_ID>/agents/default/JAVA \
-H API-Key:$apiKey \
-H Authorization:$authHeader \
-OJ
# Enable the Contrast Java Agent for all user Java processes on this server
echo "export JAVA_TOOL_OPTIONS=\"-javaagent:/opt/contrast/contrast.jar\"" >> /etc/profile.d/contrast.sh

ご利用の環境に合わせて値を置き換えてください:

  • <SECRET_NAME_API> = 前述の事前準備で作成した、APIキーを保存しているAWS Secrets Managerのシークレット名
  • <SECRET_NAME_AUTH> = 前述の事前準備で作成した、認証ヘッダーを保存しているAWS Secrets Managerのシークレット名
  • <ORGANIZATION_ID> = Contrastサーバ内の自分の組織の組織ID
  1. 「確認と作成」をクリックします。
  2. 「作成」をクリックして、EC2インスタンスを起動します。

 

yumリポジトリからContrast Javaエージェントをインストール

以下の手順で、EC2インスタンスにContrast Javaエージェントをインストールします。

 

EC2インスタンスを作成

AWS EC2の管理コンソールで、インスタンス起動を選択して、EC2起動画面を開始します。

インスタンス起動の画面で、

  1. Amazonマシンイメージ(AMI)の選択画面で、「Amazon Linux 2 AMI (64-ビット x86)」を選択します。
  2. インスタンスタイプには、「t2.micro」を選択するか、アプリケーションに応じて適切なタイプを選択します。
  3. 「次のステップ:インスタンスの詳細の設定」をクリックします。
  4. 「インスタンスの詳細の設定」画面で、以下を行います。
    • 前述の事前準備で作成したIAMロール<IAM_ROLE>を選択します。
    • 「ユーザーデータ」フィールドに以下のスクリプトを貼り付けます。
#!/bin/bash
# install updates
yum update -y

# Setup Contrast repository and install the Contrast Java Agent
OSREL=$(rpmquery -E "%{rhel}")
tee /etc/yum.repos.d/contrast.repo << EOF

[contrast]
name=contrast repo
baseurl=https://pkg.contrastsecurity.com/rpm-public/centos-$OSREL/
gpgcheck=0
enabled=1
EOF
yum install contrast-java-agent -y

# Download the default contrast_security.yaml file from the Contrast TeamServer API
mkdir -p /opt/contrast
cd /opt/contrast
authHeader=`aws --region us-east-1 secretsmanager get-secret-value --secret-id <SECRET_NAME_AUTH> --query SecretString --output text`
apiKey=`aws --region us-east-1 secretsmanager get-secret-value --secret-id <SECRET_NAME_API> --query SecretString --output text`
curl https://apptwo.contrastsecurity.com/Contrast/api/ng/<ORGANIZATION_ID>/agents/external/default/JAVA \
-H API-Key:$apiKey \
-H Authorization:$authHeader \
-H 'content-type: application/json' \
-H 'accept: application/json' \
--data-binary '{"metadata":[]}' --compressed -OJ

# Enable the Contrast Java Agent for all user Java processes on this server
echo "export JAVA_TOOL_OPTIONS=\"-javaagent:/opt/contrast/contrast-agent.jar -Dcontrast.config.path=/opt/contrast/contrast_security.yaml\"" >> /etc/profile.d/contrast.sh

ご利用の環境に合わせて値を置き換えてください:

  • <SECRET_NAME_API> = 前述の事前準備で作成した、APIキーを保存しているAWS Secrets Managerのシークレット名
  • <SECRET_NAME_AUTH> = 前述の事前準備で作成した、認証ヘッダーを保存しているAWS Secrets Managerのシークレット名
  • <ORGANIZATION_ID> = Contrastサーバ内の自分の組織の組織ID
  1. 「確認と作成」をクリックします。
  2. 「作成」をクリックして、EC2インスタンスを起動します。

FAQ

  1. Javaエージェントをインストールするたびに、最新のエージェントに更新する方法は?

Javaエージェントを最新の状態に保つ方法についてこちらで解説しています: https://support.contrastsecurity.com/hc/en-us/articles/360054526731

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

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

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