Container Threat Detection とは
Security Command Center (以下 SCC)の Premium Tier でのみ使える機能で、
Google Kubernetes Engine(以下 GKE)のコンテナの脅威検知が可能です。
https://cloud.google.com/security-command-center/docs/concepts-container-threat-detection-overview
検出可能な脅威は、これを書いている 2023/08 時点では以下の5つです。
追加されたバイナリの実行 | 元のコンテナイメージに含まれないバイナリが実行された。
攻撃者がワークロードで任意のコマンドを実行している可能性がある。 |
追加されたライブラリの読み込み | 元のコンテナイメージに含まれないライブラリが読み込まれた。
攻撃者がワークロードで任意のコードを実行している可能性がある。 |
悪意のあるスクリプトの実行 | 悪意がある bash スクリプトが実行された。
攻撃者が不正なコマンドを実行している可能性がある。 機械学習によって、既知・未知の不正なスクリプトを識別するもの。 |
悪意のある URL の観測 | 実行中のプロセスの引数リストに、Google セーフブラウジングサービスで安全でないとされている URL が検出された。 |
リバースシェル | リモート接続ソケットへのストリーム リダイレクトで始まるプロセスが検出された。 |
仕組み
公式ドキュメントの内容をかいつまむと、
DaemonSet 経由でイベントとコンテナの情報を収集し、分析の結果上記のような脅威が検出されれば、SCC に検出結果が表示されます。
使ってみる
機能の有効化
SCC を Premium Tier にアップグレードしておきます。
アップグレード時に Container Threat Detection を有効化、有効な設定を継承していれば、
既に Container Threat Detection は Enabled になっているはずです。
もし有効化されていない場合は、SCC の Settings より、機能を有効化します。
GKE クラスターの作成
適当にクラスターを作成します。Autopilot と Standard のクラスターを両方用意しました。
Pod および DaemonSet を確認してみると、Autopilot、Standard ともにcontainer-watcher というリソースが自動作成されていました。
(画像を撮り忘れましたが、比較用に作成した Container Threat Detection 無効のプロジェクトのクラスターには、ありませんでした)
その他、Role なども作成されていました。作成されるリソース一覧は、公式ドキュメントに記載されています。
テストしてみる
続いて、実際にコンテナ上で不審なアクティビティを模した操作を行い、検知させてみます。
ありがたいことに、検出タイプ別のテストコマンド用意されています。
https://cloud.google.com/security-command-center/docs/how-to-test-container-threat-detection
数分も経たないうちに、SCC のダッシュボードに検知結果が表示されました。
詳細を見ると、前回試した Event Threat Detection と同様に、AI によるサマリもあります。
検出結果に対応する
公式ドキュメントに、各脅威別の調査方法がステップバイステップで懇切丁寧に記載されているので、これを見ながら調査をすればよさそうです。
https://cloud.google.com/security-command-center/docs/how-to-investigate-threats
Container Threat Detection で出来るのは脅威の検知までであり、自動で封じ込めを行ったり、Pod を停止したりすることは出来ません。
余談
クラスター毎に Container Threat Detection を有効化/無効化できるのか?
SCC の設定画面から、クラスター毎に有効/無効を設定できます。
元々有効だった状態で、無効化すると、クラスターから container-watcher が削除されました。
なお、再度有効化すると、数分で再デプロイされていました。
SCC Premium を使っているのであれば、基本的に有効にして利用するのが良いとは思いますが、
他のコンテナセキュリティソリューションを導入しているため、二重でモニタリングする必要がない、
といったケースでは無効化することもありそうです。
おわりに
SCC の Container Threat Detection を試してみました。
GKE Autopilot でも利用でき、エージェントインストールも自動で行われるので、手軽に GKE 環境のワークロード保護が出来ます。
GKE には Security Posture という構成チェック・脆弱性スキャンおよび その結果を表示するダッシュボードもあるので、組み合わせて使うのが良いのではないでしょうか。
(欲を言えば、一つのダッシュボードでまとめて見れるようになると嬉しいです)