エージェントインストールガイド
概要
ここでは、Docker環境でContrastのPythonエージェントを使用する方法について紹介します。 本項を参考にご利用の環境に合わせた方法で、DockerのPythonアプリケーションにContrastエージェントをインストールし、必要に応じてチーム内で共有してください。
本項では主に、Docker上のPythonアプリケーションにContrastエージェントを組み込み、Contrastでセキュリティデータを確認するための最も一般的な方法について説明します。
また、DjanGoatというサンプルのPythonアプリケーションに関する情報も記載しています。自分のアプリケーションで作業をする前に、このサンプルアプリケーションで手順を確認してみるのも良いでしょう。DjanGoatのサンプルコードへのリンクは本項の最後にあります。サンプルコードを使用して、Docker環境のDjanGoatにContrastエージェントをインストールしてアプリケーションを検査してみてください。
主な手順
アプリケーションのDockerfileを更新する:
アプリケーションでエージェントを有効にして起動する:
サポート対象のテクノロジ
作業を開始する前に、ご利用のPythonのツールや環境がContrastでサポートされていることを確認してください:Pythonエージェントのサポート対象テクノロジ
本項は以下を前提としております:
- DevOpsの実践とDockerの仕組みに関してある程度の知識があること
- ContrastエージェントのPyPIリポジトリへアクセスできること
- アプリケーションにPythonエージェントを組み込みContrastで検出結果を確認したことや知識があること:Pythonエージェントのインストール
手順
まず、アプリケーションのDockerfileを編集します。
1) Contrast Pythonエージェントを追加
ここでは、DockerイメージにContrastエージェントを追加して、基本の設定を行う方法について2つ紹介します。最適な方法をお選びください。
方法 1: Dockerfileに追加
この方法では、アプリケーションのDockerfileにContrastエージェントを追加します。最新のエージェントを追加できます。
RUN pip install contrast-agent
|
もしくは、特定のバージョンを対象とすることもできます。
RUN pip install contrast-agent=3.3.1
|
例:Dockerfileの設定
FROM python:2.7-buster |
方法 2:requirements.txtに追加
この方法では、requirements.txtファイルにエージェントを追加します。手順は、以下のとおりです。
- アプリケーションのrequirements.txt ファイルにContrastエージェントを追加します。必要に応じて、エージェントのバージョンを指定してください。
- requirements.txtからのインストールが行われていない場合は、Dockerfileに追加します。
例:requirements.txtにエージェントを追加する
contrast-agent==3.3.1
|
pip install -r requirements.txt
|
ミドルウェアを設定
各フレームワークの固有の設定については、Contrastドキュメントを参照:ミドルウェアの設定
例:Djangoでsettings.pyを更新する
MIDDLEWARE = [ |
2) Contrastエージェントの設定を指定
Contrastエージェントの設定を指定するために、さまざまな値を使用できます。設定する値には有効になる優先順位があります。各レベルは、上位のレベルが指定された場合に無効になります。優先順位は以下のとおりで、最も優先されるのが1です。
- 企業の基準(例、期限切れのライセンスは、assess.enableより優先)
- 環境変数の値
- YAML設定ファイルの値
- Contrast UIで指定した値
- デフォルトの値
優先順位の詳細については、以下を参照してください:
エージェントの設定の優先順位
設定する値を組み合わせて利用することをお勧めします。
- 共通の設定はYAMLファイルに保存してベースイメージに配置
- 認証情報やアプリケーション固有の設定は環境変数を使用
共通の設定
以下は、基本となる設定をYAMLファイルに指定する方法です。ベースイメージに追加して、必要に応じて環境変数で上書きすることもできます。
手順は以下のとおりです。
- サービスとログの基本的な設定を追加します。
agent: |
- 編集したYAMLファイルをベースイメージのDockerfileにコピーします。
コンテナ内の以下のいずれかの場所にコピーします:
- <approot>/contrast_security.yaml
- /etc/contrast_security.yaml
- /etc/contrast/python/contrast_security.yaml
その他のオプションについては、Contrastのドキュメントを参照: YAML設定
例:
COPY WORKSPACE/contrast_security.yaml approot/contrast_security.yaml |
アプリケーション固有の設定
アプリケーション固有の設定には、アプリケーションのコンテナで環境変数を指定します。以下は、一般的によく使用される設定オプションです。注:アンダースコアは2つ付けてください。
詳細については、Contrastのドキュメントを参照:Pythonエージェントの設定
- アプリケーション名:Contrastサーバに報告されるアプリケーション名を指定
CONTRAST__APPLICATION__NAME
- アプリケーショングループ:このアプリケーションを関連付けるアクセスグループをオンボード時に指定(注:アプリケーションのアクセスグループは、先にContrastで作成しておく必要あり)
CONTRAST__APPLICATION__GROUP
- アプリケーションのタグ:アプリケーションにタグを指定
CONTRAST__APPLICATION__TAGS
- サーバ名:Contrastに報告されるサーバ名を指定
CONTRAST__SERVER__NAME
- サーバの環境:アプリケーションを実行する環境を指定、このオプションで有効な値:development、qa、production
CONTRAST__SERVER__ENVIRONMENT
- サーバのタグ:サーバにタグを追加
CONTRAST__SERVER__TAG
3) 環境の認証資格情報を追加
PythonエージェントがContrastサーバにデータを送信するには、APIのURLとサーバに対するエージェントの認証情報が必要です。このデータは機密情報となりますので、取り扱いにはご注意ください。
CONTRAST__API__URL=https://app.contrastsecurity.com/Contrast |
APIの値(エージェントキー)は、Contrast UIで取得するか、PythonエージェントのYAMLファイルをダウンロードすることで取得できます。詳細は、Contrastのドキュメントを参照: エージェントキーの検索
4) アプリケーションでエージェントを有効にして起動
これで、Contrastを有効にしてアプリケーションイメージを実行できます。アプリケーションの起動時にContrastエージェントが組み込まれて解析が始まり、Contrastサーバに脆弱性が報告されます。
Contrastが実行されているかを確認するには、コンテナのログをチェックしてください。次のようなメッセージが表示されるはずです。
web_1 | Django version 1.11.1, using settings 'pygoat.settings' |
ソースコードのサンプル:DjanGoat
以下のGitHubのリポジトリにあるサンプルアプリケーションを参考にしてください。Docker環境のPythonアプリケーションにContrastエージェントを組み込むための手順や設定を理解するのに役立ちます。
https://github.com/marklacasse/DjanGoat/tree/docker