Runtime不正プログラムスキャンは、Kubernetesクラスターで実行されているコンテナ内の不正プログラムを検出します。事前デプロイメントのイメージスキャンとは異なり、Runtime不正プログラムスキャンは実行中のコンテナのファイルシステム上で動作し、実行時にダウンロードされた不正プログラムやデプロイメント後にサプライチェーンの妥協を通じて導入された不正プログラムを検出することができます。
検索の種類
ランタイム不正プログラム検索は、2つの補完的な検索タイプをサポートしています。
|
検索の種類
|
トリガ
|
範囲
|
|
予約検索
|
Cronスケジュール
|
クラスター内のすべてのコンテナイメージ; 実行中のコンテナで書き込まれたまたは変更された個々のファイル
|
|
リアルタイム検索
|
ファイル書き込みイベントまたは新しいイメージのデプロイメント
|
新しくデプロイされたイメージ; 実行中のコンテナで書き込まれたまたは変更された個々のファイル
|
注意2つの検索タイプは補完的です。スケジュール検索は、最新の不正プログラムパターンに対してすべてのイメージを包括的にカバーし、リアルタイム検索は展開後に導入された脅威を即座に検出します。
|
各検索の種類の詳細については、以下を参照してください。
-
スケジュール検索: スケジュールスキャンを有効にするを参照してください。
-
リアルタイム検索:
malwareScanning: enabledを使用してHelmチャートをデプロイすることでリアルタイム検索を有効にできます。詳細はランタイムセキュリティとスキャン機能を有効にするを参照してください。
スケジュールスキャンを有効にする
スケジュールされた検索は、クラスターに割り当てられたContainer Securityポリシーを通じて構成されます。検索マネージャはクラスター内の各ユニークなイメージに対して検索ジョブを作成し、各ジョブはイメージの
ファイルシステムを抽出し、ファイルをローカルの不正プログラムスキャナーに送信して分析します。イメージはそのユニークなイメージIDによって識別されます。同じイメージが複数のポッドで実行されている場合、サイクルごとに一度だけ検索されます。-
に移動します。
-
クラスターに割り当てられたポリシーを選択します。
-
不正プログラムスキャンセクションで、スケジュールスキャンを有効にし、希望のスケジュールを設定してください。
注意検索負荷を均等に分散するために、検索マネージャは各検索ジョブを開始する前にランダムなジッター (最大90秒) を適用します。これにより、すべての検索ジョブが同時に開始されてスキャナーが過負荷になることを防ぎます。
|
検索フィルタールール
Container Securityポリシーで画像フィルタールールを設定し、どの画像を検索するかを制御できます。これは、特定の画像を不正プログラム検索から除外したり、特定の画像のみを検索したりする場合に便利です。フィルタールールは、名前空間レベルのポリシーと組み合わせて、きめ細かい検索戦略を作成することができます。
-
一致する画像をスキップ: 指定された画像を検索から除外します。たとえば、信頼できるサードパーティのオペレーター画像を除外し、検索する必要がない場合に使用します。
-
一致する画像のみを検索: 指定された画像のみを検索します。他のすべての画像は検索から除外されます。
イメージフィルタールールはネームスペースによって範囲を設定でき、異なるネームスペースで同じイメージに異なるスキャンポリシーを適用することができます。例えば、Dynatraceオペレーターイメージは、アプリケーションネームスペース
(ここではinitコンテナとして実行される) ではスキャンから除外され、Dynatraceネームスペース (ここでは長期間のデプロイメントとして実行される) ではスキャンされ続けることができます。
重要Helmチャートがインストールされる前にデプロイされたPodは検索されません。同じイメージがHelmチャートのインストール後に再デプロイされると、次の検索サイクルで再デプロイされたイメージが検索されます。
|
スキャンロジック
-
自動再検索: 検索が完了すると、ワークロードオペレーターは設定可能な再検索間隔 (デフォルトは24時間) を待ってから検索マネージャに新しい検索ジョブを作成するように指示します。再検索は、スケジュールされた検索が実行されるときや不正プログラム検索ポリシーが更新されるときにもトリガーされます。
-
画像検索キャッシュ: 重複検索を避けるために、検索マネージャは24時間の有効期限付きの画像検索キャッシュを維持します。過去24時間以内に検索された画像はスキップされます。
-
パターンの更新: 不正プログラムスキャナーは、TrendAI™のActive Update (AU) サーバから新しい不正プログラムパターンの更新を自動的にダウンロードして適用します。更新はメモリ内で適用され、スキャナーの再起動は必要ありません。
検索範囲と除外されたパス
デフォルトでは、不正プログラムスキャナーはコンテナイメージファイルシステム内のすべてのファイルをスキャンしますが、以下のシステムパスは除外されます。
-
/proc -
/dev -
/sys
Container Securityポリシーで追加の除外パスを設定できます。除外パスはプレフィックスで一致します。パスが除外パスで始まるファイルはスキャン時にスキップされます。この設定は、スキャンされたイメージ内のどのファイルシステムパスが検査されるかを制御します。
注意除外パスは、スキャン対象として選択されたイメージ内でスキャンされるファイルを制御します。スキャンから特定の名前空間内のイメージ全体または特定のイメージを除外するには、代わりにイメージフィルタールールを使用してください。検索フィルタールールを参照してください。
|
緩和策
Container Securityポリシーの不正プログラムスキャンセクションで自動緩和アクションを設定します。以下のアクションが利用可能です。
-
ログ: 検出イベントを記録し、追加のアクションを行いません。これはデフォルト設定です。
-
終了: 影響を受けたポッドを自動的に終了します。
-
隔離: 影響を受けたポッドをすべてのネットワークトラフィックから自動的に隔離します。

重要
[隔離]アクションには、クラスタにインストールされたKubernetesネットワークポリシープラグイン (例: Calico) が必要です。
コンソールの検出の詳細から手動で対応することもできます。Workbenchで影響を受けたポッドを隔離、終了、または調査してください。Workbenchについてさらに学びましょう。
検索結果の表示
不正プログラム検出はContainer Securityコンソールに表示されます。検出を表示するには、に移動してください。フィルターオプションを使用して、クラスター、ネームスペース、重大度、または時間範囲で結果を絞り込むことができます。
各検出には、次の情報が含まれます。
|
フィールド
|
説明
|
|
不正プログラム名
|
検出された不正プログラムの名前
|
|
ファイル名
|
検出されたファイルの名前
|
|
オブジェクトファイル名
|
コンテナ内のファイルのフルパス
|
|
ファイルSHA-256
|
検出されたファイルのSHA-256ハッシュ
|
|
コンテナ
|
影響を受けたコンテナ名とID
|
|
ポッド
|
Pod 名とNamespace
|
|
クラスタ
|
検出が発生したクラスター
|
|
検出時間
|
検出のタイムスタンプ
|
ランタイム不正プログラム検索をテストする
EICARテストファイルを使用して、クラスター内での実行時不正プログラムスキャンをテストしてください。これは標準で安全な不正プログラム対策テストシグネチャです。
-
EICARテストファイルをダウンロードするテストポッドをデプロイします。
kubectl run malware-test --image=busybox --restart=Never -- \ sh -c "wget -q -O /tmp/eicar.com 'https://secure.eicar.org/eicar.com' && sleep 3600"
-
検索が開始されるのを待ちます。スケジュールされた検索が設定されている場合は、次の検索サイクルを待ちます。リアルタイム検索は新しいファイルを検出し、自動的に検索を開始します。
-
に移動します。不正プログラム名
Eicar_test_fileの検出を探し、ファイルパスがmalware-testコンテナ内の/tmp/eicar.comを示していることを確認します。 -
テストポッドをクリーンアップする。
kubectl delete pod malware-test
XDRの統合
ポリシーでXDRテレメトリが有効になっている場合、不正プログラム検出イベントはTrendAI Vision One™データレイクに送信され、Workbenchでのクロスソース相関とSearchアプリでのクエリが可能になります。
アーキテクチャとリソース
ランタイム不正プログラムスキャンは、クラスター内に展開される以下のコンポーネントで構成されています。
|
コンポーネント
|
説明
|
|
ワークロードオペレーター
|
ポッドのデプロイメントを監視し、クラスター内の各ユニークなコンテナイメージに対してカスタムリソースを作成します。
|
|
検索マネージャ
|
スケジュールされた検索スケジュールを管理し、不正プログラム検索ジョブを作成し、検索の完了を監視し、イメージ検索キャッシュを維持します。
|
|
不正プログラム検索ジョブ
|
コンテナイメージのファイルシステムを抽出し、ファイルをスキャナーに送信する短期間のジョブです。ユニークなイメージごとに1つのジョブが作成され、スケジュールされたスキャンで使用されます。
|
|
スカウト
|
各ワーカーノードでDaemonSetとして実行されます。実行中のコンテナ内のファイルシステムイベントをリアルタイムで監視し、検出されたファイルを不正プログラムスキャナーに送信して即座に分析します。
|
|
不正プログラムスキャナー
|
クラスター内に展開されたローカル検索エンジン。検索ジョブ (スケジュール検索) とScout (リアルタイム検索) の両方からファイルを受け取り、不正プログラム分析を実行し、検出結果を返します。検索中にファイルが環境外に出ることはありません。
|
不正プログラム検索ツールと検索ジョブには、以下のデフォルトリソース割り当てがあります。
|
コンポーネント
|
リクエスト
|
制限
|
|
不正プログラムスキャナー
|
CPU: 100m, メモリ: 1Gi
|
CPU: 1, メモリ: 2Gi
|
|
不正プログラム検索ジョブ
|
CPU: 50m, メモリ: 64Mi
|
メモリ: 512Mi
|
不正プログラムスキャナーは、以下のエンドポイントへのアウトバウンドHTTPSアクセスを必要とします。インバウンドネットワークアクセスは必要ありません。
|
FQDN
|
ポート
|
目的
|
|
activeupdate.trendmicro.com
|
443
|
不正プログラムパターンの更新
|
|
TrendAI Vision One™地域エンドポイント
|
443
|
検索結果の報告、ポリシー同期、XDRテレメトリ
|
