Event Threat Detection 用カスタム モジュールの概要

このページでは、Event Threat Detection 用カスタム モジュールの概要について説明します。

Cloud Logging ストリームを処理し、指定したパラメータに基づいて脅威を検出するモジュール(検出機能)を構成できます。この機能は、Event Threat Detection のモニタリング機能を拡張し、組み込み検出機能がサポートしない構成用の独自の検出パラメータ、修復ガイダンス、重大度の指定を持つモジュールを追加できます。

カスタム モジュールは、組織固有のニーズを満たす検出ルールを持つモジュールが必要な場合に役立ちます。たとえば、リソースが特定の IP アドレスに接続されていることや、リソースが制限のあるリージョンで作成されたことがログエントリに示されている場合は、検出結果を作成するカスタム モジュールを追加できます。

Event Threat Detection 用カスタム モジュールの仕組み

カスタム モジュールとは、Event Threat Detection 検出機能の特定のグループのことで、独自の検出パラメータを使用して構成できます。Event Threat Detection 用カスタム モジュールは Google Cloud コンソールから作成できます。また、カスタム モジュール テンプレートを更新し、そのカスタム モジュールを Google Cloud CLI から Security Command Center に送信することもできます。利用可能なテンプレートについては、カスタム モジュールとテンプレートをご覧ください。

カスタム モジュール テンプレートは JSON で記述します。このテンプレートでは、検出パラメータを定義して、ログエントリ内のどのイベントで検出結果をトリガーするかを制御できます。たとえば、組み込み Malware: Bad IP 検出機能は、既知の不審な IP アドレスへの接続の証拠について、Virtual Private Cloud のフローログを確認します。お客様が保有する疑わしい IP アドレスのリストを使用し、Configurable Bad IP カスタム モジュールを有効にして変更することもできます。指定した IP アドレスへの接続がログに示されている場合は、検出結果が生成され、Security Command Center に書き込まれます。

また、モジュール テンプレートでは、脅威の重大度を定義し、セキュリティ チームが問題を修正するための修復手順を用意することもできます。

カスタム モジュールを使用すると、Event Threat Detection で脅威を検出し、検出結果を報告する方法をより細かく制御できます。カスタム モジュールには、指定したパラメータが含まれますが、Event Threat Detection 独自の検出ロジックと脅威インテリジェンス(トリップワイヤ インジケーター マッチングなど)も引き続き使用されます。脅威モデルは、組織固有の要件に合わせて、幅広く実装できます。

Event Threat Detection のカスタム モジュールは、組み込み検出機能と並行して実行されます。有効なモジュールはリアルタイム モードで実行され、新しいログが作成されるたびにスキャンがトリガーされます。

カスタム モジュールとテンプレート

次の表に、サポートされているカスタム モジュール タイプ、説明、必要なログ、JSON モジュール テンプレートの一覧を示します。

これらの JSON モジュール テンプレートは、gcloud CLI を使用してカスタム モジュールを作成または更新する場合に必要です。テンプレートを表示するには、テンプレート名の横にある展開アイコン をクリックします。カスタム モジュールの使用方法については、カスタム モジュールの構成と管理をご覧ください。

検出結果のカテゴリ モジュール タイプ ログソースのタイプ 説明
構成可能な不正 IP CONFIGURABLE_BAD_IP VPC フローログ
ファイアウォール ルールのログ
指定された IP アドレスへの接続を検出します
テンプレート: 構成可能な不正 IP

{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "ips": [
    "IP_ADDRESS_1",
    "IP_ADDRESS_2"
  ]
}

次のように置き換えます。

  • SEVERITY: このモジュールが生成する検出結果の重大度。有効な値は、LOWMEDIUMHIGHCRITICAL です。
  • DESCRIPTION: カスタム モジュールが検出する脅威の説明。この説明は、このモジュールで生成された各検出結果の explanation プロパティへの入力に使用されます。
  • RECOMMENDATION: 検出された問題を解決するためにセキュリティ チームが実施できる推奨手順の説明。この説明は、このモジュールで生成された各検出結果の nextSteps プロパティへの入力に使用されます。
  • IP_ADDRESS_1: 監視するパブリック ルーティング可能な IPv4 アドレス、IPv6 アドレス、または CIDR ブロック(例: 192.0.2.1192.0.2.0/24)。
  • IP_ADDRESS_2: 省略可。監視するパブリック ルーティング可能な IPv4 アドレス、IPv6 アドレス、または CIDR ブロック(例: 192.0.2.1192.0.2.0/24)。
構成可能な不正ドメイン CONFIGURABLE_BAD_DOMAIN Cloud DNS のログ 指定されたドメイン名への接続を検出します
テンプレート: 構成可能な不正ドメイン

{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "domains": [
    "DOMAIN_1","DOMAIN_2"
  ]
}

次のように置き換えます。

  • SEVERITY: このモジュールが生成する検出結果の重大度。有効な値は、LOWMEDIUMHIGHCRITICAL です。
  • DESCRIPTION: カスタム モジュールが検出する脅威の説明。この説明は、このモジュールで生成された各検出結果の explanation プロパティへの入力に使用されます。
  • RECOMMENDATION: 検出された問題を解決するためにセキュリティ チームが実施できる推奨手順の説明。この説明は、このモジュールで生成された各検出結果の nextSteps プロパティへの入力に使用されます。
  • DOMAIN_1: 監視するドメイン名(例: example.com)。値 localhost は使用できません。Unicode と Punycode のドメイン名は正規化されています。たとえば、例子.example と xn--fsqu00a.example は同じです。
  • DOMAIN_2: 省略可。監視するドメイン名(例: example.com)。値 localhost は使用できません。Unicode と Punycode のドメイン名は正規化されています。たとえば、例子.example と xn--fsqu00a.example は同じです。
想定外の Compute Engine インスタンス タイプ CONFIGURABLE_ALLOWED_COMPUTE_ENGINE_INSTANCE_TYPE Cloud Audit Logs:
管理アクティビティ ログ(必須)
データアクセス ログ(省略可)
指定されたインスタンス タイプや構成に一致しない Compute Engine インスタンスの作成を検出します。
テンプレート: 想定外の Compute Engine インスタンス タイプ

{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "instances": [
    {
      "series": "SERIES",
      "cpus": {
        "minimum": MINIMUM_NUMBER_OF_CPUS,
        "maximum": MAXIMUM_NUMBER_OF_CPUS
      },
      "ram_mb": {
        "minimum": MINIMUM_RAM_SIZE,
        "maximum": MAXIMUM_RAM_SIZE
      },
      "gpus": {
        "minimum": MINIMUM_NUMBER_OF_GPUS,
        "maximum": MAXIMUM_NUMBER_OF_GPUS
      },
      "projects": [
        "PROJECT_ID_1",
        "PROJECT_ID_2"
      ],
      "regions": [
        "REGION_1",
        "REGION_2"
      ]
    },
    {
      "series": " ... ",
      ...
      "regions": [ ... ]
    }
  ]
}

次のように置き換えます。

  • SEVERITY: このモジュールが生成する検出結果の重大度。有効な値は、LOWMEDIUMHIGHCRITICAL です。
  • DESCRIPTION: カスタム モジュールが検出する脅威の説明。この説明は、このモジュールで生成された各検出結果の explanation プロパティへの入力に使用されます。
  • RECOMMENDATION: 検出された問題を解決するためにセキュリティ チームが実施できる推奨手順の説明。この説明は、このモジュールで生成された各検出結果の nextSteps プロパティへの入力に使用されます。
  • SERIES: 省略可。Compute Engine マシンシリーズ(例: C2)。空の場合、このモジュールはすべてのシリーズを許可します。詳細については、マシン ファミリーのリソースと比較ガイドをご覧ください。
  • MINIMUM_NUMBER_OF_CPUS: 省略可。許可する CPU の最小数存在しない場合、最小値はありません。負の値は使用できません。
  • MAXIMUM_NUMBER_OF_CPUS: 省略可。許可する CPU の最大数。存在しない場合、最大値はありません。minimum 以上 1,000 以下にする必要があります。
  • MINIMUM_RAM_SIZE: 省略可。許可する最小 RAM サイズ(MB)。存在しない場合、最小値はありません。
  • MAXIMUM_RAM_SIZE: 省略可。許可する最大 RAM サイズ(MB)。存在しない場合、最大値はありません。minimum 以上 10,000,000 以下にする要があります。
  • MINIMUM_NUMBER_OF_GPUS: 省略可。許可する GPU の最小数。存在しない場合、最小値はありません。負の値は使用できません。
  • MAXIMUM_NUMBER_OF_GPUS: 省略可。許可する GPU の最大数。存在しない場合、最大値はありません。minimum 以上 100 以下にする要があります。
  • PROJECT_ID_1: 省略可。このモジュールを適用するプロジェクトの ID(例: projects/example-project)。空または未設定の場合、現在のスコープ内のすべてのプロジェクトで作成されたインスタンスにモジュールが適用されます。
  • PROJECT_ID_2: 省略可。このモジュールを適用するプロジェクトの ID(例: projects/example-project)。
  • REGION_1: 省略可。このモジュールを適用するリージョン(例: us-central1)。空または未設定の場合、すべてのリージョンで作成されたインスタンスにモジュールが適用されます。
  • REGION_2: 省略可。このモジュールを適用するリージョン(例: us-central1)。
想定外の Compute Engine ソースイメージ CONFIGURABLE_ALLOWED_COMPUTE_ENGINE_SOURCE_IMAGE Cloud Audit Logs:
管理アクティビティ ログ(必須)
データアクセス ログ(省略可)
指定したリストに一致しないイメージまたはイメージ ファミリーを持つ Compute Engine インスタンスの作成を検出します
テンプレート: 想定外の Compute Engine ソースイメージ

{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "patterns": [
    {

      "pattern": "PATTERN_1",
      "name": "NAME_1"
    },
    {
      "pattern": "PATTERN_2",
      "name": "NAME_2"
    }
  ]
}

次のように置き換えます。

  • SEVERITY: このモジュールが生成する検出結果の重大度。有効な値は、LOWMEDIUMHIGHCRITICAL です。
  • DESCRIPTION: カスタム モジュールが検出する脅威の説明。この説明は、このモジュールで生成された各検出結果の explanation プロパティへの入力に使用されます。
  • RECOMMENDATION: 検出された問題を解決するためにセキュリティ チームが実施できる推奨手順の説明。この説明は、このモジュールで生成された各検出結果の nextSteps プロパティへの入力に使用されます。
  • PATTERN_1: イメージを確認する別の RE2 正規表現(例: debian-image-1)。イメージを使用して Compute Engine インスタンスを作成し、そのイメージの名前が指定のどの正規表現にも一致しない場合は、検出結果が発行されます。
  • NAME_1: このパターンのわかりやすい名前(例: first-image)。
  • PATTERN_2: 省略可。イメージを確認する別の RE2 正規表現(例: debian-image-2)。
  • NAME_2: 省略可。2 番目のパターンのわかりやすい名前(例: second-image)。
想定外の Compute Engine リージョン CONFIGURABLE_ALLOWED_COMPUTE_ENGINE_REGION Cloud Audit Logs:
管理アクティビティ ログ(必須)
データアクセス ログ(省略可)
指定したリストにないリージョンでの Compute Engine インスタンスの作成を検出します
テンプレート: 想定外の Compute Engine リージョン

{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "regions": [
    {
      "region": "REGION_1"
    },
    {
      "region": "REGION_2"
    }
  ]
}

次のように置き換えます。

  • SEVERITY: このモジュールが生成する検出結果の重大度。有効な値は、LOWMEDIUMHIGHCRITICAL です。
  • DESCRIPTION: カスタム モジュールが検出する脅威の説明。この説明は、このモジュールで生成された各検出結果の explanation プロパティへの入力に使用されます。
  • RECOMMENDATION: 検出された問題を解決するためにセキュリティ チームが実施できる推奨手順の説明。この説明は、このモジュールで生成された各検出結果の nextSteps プロパティへの入力に使用されます。
  • REGION_1: 許可するリージョンの名前(例: us-west1)。リストにないリージョンに Compute Engine インスタンスを作成した場合、Event Threat Detection は検出結果を発行します。
  • REGION_2: 省略可。許可するリージョンの名前(例: us-central1)。リストにないリージョンに Compute Engine インスタンスを作成した場合、Event Threat Detection は検出結果を発行します。
ブレークグラス アカウントの使用 CONFIGURABLE_BREAKGLASS_ACCOUNT_USED Cloud Audit Logs:
管理アクティビティ ログ(必須)
データアクセス ログ(省略可)
緊急アクセス(ブレークグラス)アカウントの使用を検出します
テンプレート: ブレークグラス アカウントの使用

{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "accounts": [
    "BREAKGLASS_ACCOUNT_1", "BREAKGLASS_ACCOUNT_2"
  ]
}

次のように置き換えます。

  • SEVERITY: このモジュールが生成する検出結果の重大度。有効な値は、LOWMEDIUMHIGHCRITICAL です。
  • DESCRIPTION: カスタム モジュールが検出する脅威の説明。この説明は、このモジュールで生成された各検出結果の explanation プロパティへの入力に使用されます。
  • RECOMMENDATION: 検出された問題を解決するためにセキュリティ チームが実施できる推奨手順の説明。この説明は、このモジュールで生成された各検出結果の nextSteps プロパティへの入力に使用されます。
  • BREAKGLASS_ACCOUNT_1: 監視するブレークグラス アカウント(例: test@example.com)。Cloud Audit Logs のエントリに記録されるアクションにこのアカウントが使用されている場合、検出結果が生成されます。
  • BREAKGLASS_ACCOUNT_2: 省略可。監視するブレークグラス アカウント(例: test@example.com)。Cloud Audit Logs のエントリに記録されたアクションにこのアカウントが使用されている場合、検出結果が生成されます。
想定外のロールの付与 CONFIGURABLE_UNEXPECTED_ROLE_GRANT Cloud Audit Logs:
管理アクティビティ ログ(必須)
データアクセス ログ(省略可)
指定されたロールがユーザーに付与されたことを検出します
テンプレート: 想定外のロールの付与

{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "roles": ["ROLE_1", "ROLE_2"]
}

次のように置き換えます。

  • SEVERITY: このモジュールが生成する検出結果の重大度。有効な値は、LOWMEDIUMHIGHCRITICAL です。
  • DESCRIPTION: カスタム モジュールが検出する脅威の説明。この説明は、このモジュールで生成された各検出結果の explanation プロパティへの入力に使用されます。
  • RECOMMENDATION: 検出された問題を解決するためにセキュリティ チームが実施できる推奨手順の説明。この説明は、このモジュールで生成された各検出結果の nextSteps プロパティへの入力に使用されます。
  • ROLE_1: 監視する IAM ロール(例: roles/owner)。このロールが付与されると、検出結果が生成されます。
  • ROLE_2: 省略可。監視する IAM ロール(例: roles/editor)。このロールが付与されると、検出結果が生成されます。
禁止されている権限があるカスタムロール CONFIGURABLE_CUSTOM_ROLE_WITH_PROHIBITED_PERMISSION Cloud Audit Logs:
管理アクティビティ ログ(必須)
データアクセス ログ(省略可)
指定された IAM 権限のいずれかを含むカスタムロールがプリンシパルに付与されたことを検出します。
テンプレート: 禁止されている権限があるカスタムロール

{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "permissions": [
    "PERMISSION_1",
    "PERMISSION_2"
  ]
}

次のように置き換えます。

  • SEVERITY: このモジュールが生成する検出結果の重大度。有効な値は、LOWMEDIUMHIGHCRITICAL です。
  • DESCRIPTION: カスタム モジュールが検出する脅威の説明。この説明は、このモジュールで生成された各検出結果の explanation プロパティへの入力に使用されます。
  • RECOMMENDATION: 検出された問題を解決するためにセキュリティ チームが実施できる推奨手順の説明。この説明は、このモジュールで生成された各検出結果の nextSteps プロパティへの入力に使用されます。
  • PERMISSION_1: 監視する IAM 権限(例: storage.buckets.list)。Event Threat Detection は、この権限を含むカスタム IAM ロールがプリンシパルに付与された場合に、検出結果を発行します。
  • PERMISSION_2: 省略可。監視する IAM 権限(例: storage.buckets.get)。Event Threat Detection は、この権限を含むカスタム IAM ロールがプリンシパルに付与された場合に、検出結果を発行します。
予期しない Cloud API 呼び出し CONFIGURABLE_UNEXPECTED_CLOUD_API_CALL Cloud Audit Logs:
管理アクティビティ ログ(必須)
データアクセス ログ(省略可)
指定したプリンシパルが、指定されたリソースに対して指定されたメソッドを呼び出すことを検出します。検出結果は、すべての正規表現が単一のログエントリで一致する場合にのみ生成されます。
テンプレート: 予期しない Cloud API 呼び出し

{
  "metadata": {
    "severity": "SEVERITY",
    "description": "DESCRIPTION",
    "recommendation": "RECOMMENDATION"
  },
  "caller_pattern": "CALLER_PATTERN",
  "method_pattern": "METHOD_PATTERN",
  "resource_pattern": "RESOURCE_PATTERN"
}

次のように置き換えます。

  • SEVERITY: このモジュールが生成する検出結果の重大度。有効な値は、LOWMEDIUMHIGHCRITICAL です。
  • DESCRIPTION: カスタム モジュールが検出する脅威の説明。この説明は、このモジュールで生成された各検出結果の explanation プロパティへの入力に使用されます。
  • RECOMMENDATION: 検出された問題を解決するためにセキュリティ チームが実施できる推奨手順の説明。この説明は、このモジュールで生成された各検出結果の nextSteps プロパティへの入力に使用されます。
  • CALLER_PATTERN: プリンシパルをチェックする RE2 正規表現。たとえば、.* は任意のプリンシパルに一致します。
  • METHOD_PATTERN: メソッドを確認する RE2 正規表現(例: ^cloudsql\\.instances\\.export$)。
  • RESOURCE_PATTERN: リソースを確認する RE2 正規表現(例: example-project)。

料金と割り当て

Security Command Center Premium のお客様はこの機能を無料で利用できます。

Event Threat Detection 用カスタム モジュールには、割り当て上限が適用されます。

カスタム モジュール作成のデフォルトの割り当て上限は 200 です。

カスタム モジュールのメソッドへの API 呼び出しも割り当て上限の対象になります。次の表に、カスタム モジュール API 呼び出しのデフォルトの割り当て上限を示します。

API 呼び出しの種類別 上限
Get、List 組織ごとに 1 分あたり 1,000 回の API 呼び出し
Create、Update、Delete 組織ごとに 1 分あたり 60 回の API 呼び出し

モジュール サイズの上限

Event Threat Detection の各カスタム モジュールのサイズ上限は 6 MB です。

レート上限

次のレート制限が適用されます。

  • カスタム モジュールごとに 1 時間あたり 30 件の検出結果。
  • 親リソース(組織またはプロジェクト)ごとに 1 時間あたり 200 件のカスタム モジュールの検出結果。各検出結果は、ソースのカスタム モジュールが作成されたレベルに応じて、組織またはプロジェクトに対してカウントされます。

この上限を引き上げることはできません。

次のステップ