Trend Vision One Container SecurityをECS Fargate環境に導入してみた

2023.12.12

こんにちはカスタマーソリューション部のこーへいです!

今回は、トレンド社が最近力を入れているXDR製品のVision Oneの機能の1つであるVision One Container Security(以降V1CS)を導入してみたのでその手順を共有します。

Vision One Container Security とは

トレンド社の提供しているXDR製品のVision Oneの機能の1つです。

CloudOneにもC1CSという機能がありましたが、ECSは対応しておらずEKSしか対応していませんでした。

V1CSになりECSにも対応するようになったことで、これからコンテナセキュリティ製品としての使用率がアップするのではないかと注目しています。2023年9月にリリースされたためまだ新しいですが積極的に触って慣れていきたいですね。

前提

  • Vision Oneアカウントを作成済みであること
  • Credit(Vision One内の通貨)の準備ができていること

また今回紹介する手順はこちらのトレンド社の公式ドキュメントを参照しています。

事前準備(ECS Fargate環境)

上記ブログを参照するなどして、事前にECS Fargate環境を準備しておいてください。

こちらの構成が準備できていれば問題ないです。

Vision OneとAWSアカウントを連携する

この章の手順は、公式ドキュメントの「Amazon ECSインスタンスを保護する」と「Amazon ECSインスタンスの追加」のページを参照に実施しています。

弊社のブログでも、アカウント連携手順をわかりやすく紹介しているので連携手順はこちらを元に実施してください。

一点注意点として、V1CS機能を使用するためスタック作成時に「Amazon ECSのコンテナ保護」の有効化を実施してください。

連携後、AWSアカウント内のECSクラスター等が認識されているか確認します。

Vision Oneコンソール画面のナビゲーションバー「Container Inventory」をクリックし、連携した自分のAWSアカウントをクリックし、今回監視対象のクラスターを選択します(クラスターが表示されている時点で正しく認識していることがわかります)。

続けて、クラスターのパラメータを設定し、保存しましょう。

  • ポリシーを選択する
    • 今回はデフォルトで用意されている「LogOnlyPolicy」を選択しました
  • ランタイムセキュリティを有効化する
  • ランタイム検索を有効化する

タスク定義を更新する

この章の手順は、公式ドキュメントの「ECS Fargate環境でのコンテナセキュリティのデプロイ」のページを参照に実施しています。

今回監視対象のタスクに付与しているタスクロール(タスク実行ロールではない)に以下のポリシーを追加します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter"
            ],
            "Resource": "arn:aws:ssm:${Region}:${Account}:parameter/V1CS/*"
        }
    ]
}

どうやらパラメータストアから値を取得する必要があるらしい?ということで、パラメータストアを見に行くと以下の値が登録されていました。いつ作成されたものか確認すると連携した際のCloudFormationの実行で作成されたようです。

下準備ができたので、タスク定義を更新します。

ECSのナビゲーションバーから「タスク定義」を選択し、監視対象のタスク定義をクリックします。

その後、更新したいリビジョンを選択します。

詳細画面のタブ「JSON」に移動し、「JSONのダウンロード」を選択するとローカルにJSONファイルをダウンロードできます。

ここからは、公式ドキュメントの「ECS Fargate環境でのコンテナセキュリティのデプロイ」手順6~8(7のダウンロードは実施済み)を行います。

ドキュメントの記述を解説するとダウンロードしたタスク定義ファイルをトレンド社が提供しているコンテナ(ドキュメント上ではパッチ適用ツールと記載されている)上で書き換えを行います。

cat test-task-definition-revision17.json(タスク定義のファイル名に書き換えてください) | docker run -i --rm trendmicrocloudone/ecs-taskdef-patcher:2.3.26(タグは実行時の最新バージョンに書き換えてください) > out-task.json

※起動するDockerイメージの最新タグはこちらからご確認いただけます。

私は面倒だったので、上記コマンドにてdockerイメージをローカルにダウンロードせずに一発でコンテナ起動とファイルの書き換えを実行しました(つまり手順の6と8を同時実行した)。

実行後は「out-task.json」でファイルが出力されています。中身を確認すると新しいコンテナ(監視用のサイドカーコンテナ)等の記述が増えていることがわかります。

新しいリビジョンのタスク定義を作成し、起動する

それでは新しいタスク定義でタスクを起動していきます。

ECSのコンソール画面から対象のタスク定義をクリックし、「JSONを使用した新しいリビジョンの作成」を選択します(元となるリビジョンはなんでも良いです)。

その後、先ほど書き換えを行ったタスク定義ファイルの中身を、遷移先の画面で上書きコピーし、作成します。

すると、コンテナの欄に監視用サイドカーコンテナが追加されていることが確認できました。

そのまま新しいタスク定義を元にタスクを起動しましょう。ナビゲーションバーから「クラスター」を選択し、対象のサービス(trendmicro-scoutではない)を選択します。

「サービスを更新」を選択します。

タスク定義を先ほど作成した新しいリビジョンに変更しタスクを起動します。

起動後の確認

起動後のタスクを確認すると、1つのメインコンテナと3つのトレンド社のサイドカーコンテナが起動しているのが確認できました。

サイドカーコンテナの2つは終了していますが問題ないです。

Vision Oneのコンソールも確認しました。タスクの保護ステータスの色が緑だとOKです。

その他の色の状態はこちらを参照ください。

まとめ

コンテナのセキュリティ製品はいろいろ種類がありますが、今回はV1CSの導入をやってみました。

実際に検知してみた様子は以下の記事がございますので、ぜひ参考にしてみてください。

参考