Container Threat Detection の使用

>

Security Command Center のダッシュボードで Container Threat Detection の検出結果を確認します。また、Container Threat Detection の検出例を確認します。Container Threat Detection は、Security Command Center のプレミアム ティアの組み込みサービスです。Container Threat Detection の検出結果を表示するには、Security Command Center の [Services] の設定で有効にする必要があります。

次の動画は、Container Threat Detection の設定手順と、ダッシュボードの使用方法を示しています。Container Threat Detection の検出結果の表示と管理の詳細については、このページの後半をご覧ください。

サポートされている GKE バージョンの使用

コンテナに対する潜在的な脅威を検出するには、クラスタがサポートされているバージョンの Google Kubernetes Engine(GKE)に存在していることを確認する必要があります。Container Threat Detection は現在、Regular および Rapid チャネルの以下の GKE バージョンをサポートしています。

  • 1.15.9-gke.12 以上
  • 1.16.5-gke.2 以上
  • 1.17 以上

サポートされている GKE バージョンを使用して、コンテナに対する脅威を検出するには:

  1. ガイドに従って、クラスタをアップグレードします。
  2. クラスタで Container Threat Detection が有効になっていることを確認します。
    1. Cloud Console で Security Command Center の [設定] ページに移動します。
      [設定] ページに移動
    2. [詳細設定] に移動し、メニューを展開します。組織のリソースの一覧が表示されます。
    3. [Container Threat Detection] 列で、アップグレードしたクラスタごとに [デフォルトで有効] を選択します。継承するように設定されている場合、フォルダ内の子リソースに対してサービスが自動的に有効になります。継承されない子リソースに対しては、Container Threat Detection を手動で有効にします。
    4. 選択を確認するダイアログが表示されます。メッセージを読み、[はい、理解しました] をクリックします。
  3. クラスタが Virtual Private Cloud(VPC)にある場合、Container Threat Detection に限定公開の Google アクセスを有効にします。ガイドに従って限定公開の Google アクセスを構成します。

詳しくは、Security Command Center リソースの構成をご覧ください。

GKE クラスタ構成の確認

GKE クラスタ構成または Identity and Access Management(IAM)ロールの制限により、Container Threat Detection の動作に必要なオブジェクトの作成または使用が、妨げられないようにする必要があります。このセクションでは、重要な GKE コンポーネントを Container Threat Detection と連携するように構成する方法について説明します。

Kubernetes オブジェクト

オンボーディング後、Container Threat Detection は有効なクラスタに複数の GKE オブジェクトを作成します。オブジェクトは、コンテナ イメージのモニタリングや、特権付きコンテナと Pod の管理、検出結果を生成するための状態の評価に使用されます。次の表は、オブジェクト、そのプロパティ、重要な機能を示したものです。

Object から継承されたメソッド 名前* プロパティ 関数
ClusterRole pod-reader Pod に getwatchlist の権限を付与します PodSecurityPolicy が有効な場合の機能を保持します
ClusterRoleBinding container-watcher-pod-reader

gce:podsecuritypolicy:container-watcher

pod-readergce:podsecuritypolicy:privileged のロールを container-watcher-pod-reader の ServiceAccount に付与します
RoleBinding gce:podsecuritypolicy:container-watcher container-watcher-pod-reader の ServiceAccount に gce:podsecuritypolicy:privileged ロールを付与します
DaemonSet container-watcher 特権付き Linux セキュリティ モジュールとコンテナ エンジンとのインタラクション
/host/ を読み書きとしてマウントします Linux セキュリティ モジュールとの通信
container-watcher-token にアクセスするために、読み取り専用として /etc/container-watcher/secrets をマウントします 認証
hostNetwork を使用します 検出結果の生成
イメージ
gcr.io/gke-release/watcher-daemonset
有効化とアップグレード
バックエンド
containerthreatdetection-region.googleapis.com:443
検出結果の生成
ServiceAccount container-watcher-pod-reader 有効化、アップグレード、無効化
シークレット container-watcher-token 認証

* すべてのオブジェクトは kube-system Namespace にあります(container-watcher-pod-readergce:podsecuritypolicy:container-watcher を除く)。

PodSecurityPolicy とアドミッション コントローラ

PodSecurityPolicy は、クラスタ上で Pod を作成および更新するリクエストを検証するために作成する、アドミッション コントローラ リソースです。Container Threat Detection は、enable-pod-security-policy フラグを使用してクラスタを作成または更新する際に自動的に適用される PodSecurityPolicy と互換性があります。具体的には、Container Threat Detection は PodSecurityPolicy が有効な場合に gce.privileged ポリシーを使用します。

カスタムの PodSecurityPolicy または他のアドミッション コントローラを使用する場合、それらが Container Threat Detection の動作に必要なオブジェクトの作成や使用を妨げないようにする必要があります。たとえば、特権のデプロイを拒否またはオーバーライドする Webhook ベースのアドミッション コントローラにより、Container Threat Detection が正常に機能しなくなる可能性があります。

詳細については、PodSecurityPolicies の使用をご覧ください。

必要な IAM 権限

オンボーディング中に作成された Container Threat Detection のサービス アカウントには、クラスタをモニタリングするために roles/containerthreatdetection.serviceAgent IAM ロールが必要です。このデフォルトのロールをサービス アカウントから削除すると、Container Threat Detection が正常に動作しなくなる可能性があります。

検出結果の確認

Container Threat Detection によって生成された検出結果は、Security Command Center で表示できます。Google Cloud のオペレーション スイートに書き込むように Security Command Center シンクを構成している場合は、Cloud Logging で検出結果を表示することもできます。検出結果を生成して構成を検証するには、意図的に検出器をトリガーして、Container Threat Detection をテストします。

Container Threat Detection には、次のレイテンシがあります。

  • 新しくオンボーディングした組織でのアクティベーション レイテンシ(3.5 時間)。
  • 新しく作成したクラスタのアクティベーション レイテンシ(数分)。
  • アクティブ化されたクラスタで脅威を検出するためのレイテンシ(数分)。

Security Command Center で検出結果を確認する

Security Command Center で Container Threat Detection の検出結果を確認するには:

  1. Google Cloud Console で Security Command Center の [検出] タブに移動します。
    [検出] タブに移動
  2. [表示] の横にある [ソースの種類] をクリックします。
  3. [ソースの種類] リストで、[Container Threat Detection] を選択します。
  4. 特定の検出結果の詳細を表示するには、[category] の下の検出結果名をクリックします。検出結果の詳細パネルが展開され、次の情報が表示されます。
    • 検出結果の種類(例: 追加されたバイナリの実行)
    • ソース: 「Container Threat Detection」
    • イベントの日時: 検出が発生した日時
    • 検出結果 ID: 検出結果の一意の ID
    • リソース名: 影響を受ける GKE クラスタ
    • 次のような情報を含む検出結果のプロパティ:
      • コンテナ名
      • コンテナの作成日時
      • コンテナ イメージの URI と ID
      • 検出器による追加のフィールド。たとえば、リバースシェルの検出結果には、リモートホストの IP アドレスが含まれます。

Cloud Logging での検出結果の表示

Cloud Logging で Container Threat Detection の検出結果を表示するには:

  1. Cloud Console で Cloud Logging の [ログビューア] ページに移動します。
    ログビューア ページに移動
  2. [ログビューア] ページで [選択] をクリックし、Container Threat Detection ログを保存するプロジェクトをクリックします。
  3. リソースのプルダウン リストで、[Cloud Threat Detector] を選択します。
    • すべての検出項目から検出結果を表示するには、[all detector_name] を選択します。
    • 特定の検出器からの検出結果を表示するには、その名前を選択します。

検出結果の例

Container Threat Detection の検出項目を読んで、検出結果の例を確認してください。

次のステップ