ルール API で統合ルールを管理する

以下でサポートされています。

Rules API は、カスタムルールとキュレートされたルールの両方を管理するためのプログラム エンドポイントを提供します。このドキュメントでは、Rules API を使用してカスタムルールとキュレートされたルールをプログラムで管理する方法について説明します。

Rules API を使用して、次のタスクを行います。

  • ルールの検索と一覧表示: 構造化検索の実行、結果の並べ替え、展開されたルールリソースの取得を行います。

  • キュレートされたルールの詳細を表示する: Google が作成したルールの読み取り専用メタデータ、適用されたタグ、未加工のテキスト ロジックを取得します。

  • ルール構成の一括変更: 複数のルールにわたって、ライブ状態、アラート状態、アーカイブ ステータス、タグの割り当てを同期的に更新します。

ルールを一覧表示してルールを検索する

rules.list メソッドは、拡張ルールリソースと構造化検索をサポートしています。これらの詳細なリソースをクエリするには、次のいずれかのビューを使用します。

  • CONFIG_ONLY

  • TRENDS

どちらのビューにも、次の情報を含む詳細情報が表示されます。

  • ルールのデプロイ情報(ライブルールの有効化、アラートの有効化、アーカイブ状態、実行状態)

  • 関連付けられたルールタグ

  • CONFIG_ONLY ビューで厳選されたルールリソースにアクセスする

  • 5,000 件の結果を含む大きなページサイズで CONFIG_ONLY ビュー

  • 堅牢な構造化検索機能。

rules.list リクエストで order_by を使用して、ルール リソース フィールドの検索結果を並べ替えます。次のルール フィールドがサポートされています。

  • alerting_enabled

  • archived

  • author

  • create_time

  • display_name

  • execution_state

  • live_mode_enabled

  • revision_create_time

  • rule_id

  • rule_owner

  • severity

  • type

  • update_time

リクエストの例:

HTTP

GET https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules?filter=archived%3Dfalse&pageSize=100&pageToken=&view=TRENDS

レスポンスの例:

JSON

{
  "rules": [
    {
      "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_fd3fe28c-2d7b-4f7e-9fca-4fdd6029d228",

      "revisionId": "v_1719339990_701951000",

      "displayName": "SomaMaglevProberRule",

      "author": "test@google.com",

      "metadata": {
        "description": "enabled live rule used for maglev rules latency prober"

      },

      "createTime": "2024-06-25T18:26:30.701951Z",

      "revisionCreateTime": "2024-06-25T18:26:30.701951Z",

      "type": "SINGLE_EVENT",

      "etag": "CNaX7LMGEJjY284C",

      "nearRealTimeLiveRuleEligible": true,

      "ruleOwner": "CUSTOMER",

      "alertingEnabled": true,

      "liveModeEnabled": true,

      "runFrequency": "LIVE",

      "currentDayDetectionCount": 10000,

      "executionState": "DEFAULT"

    },
    {
      "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_fbf56bf1-ea5f-4b5b-bbe9-e91e13f3b3b3",

      "revisionId": "v_1696452642_197471000",

      "displayName": "LoadTestingRule",

      "author": "loadtesting@google.com",

      "createTime": "2023-10-04T20:50:42.197471Z",

      "revisionCreateTime": "2023-10-04T20:50:42.197471Z",

      "type": "SINGLE_EVENT",

      "etag": "CKKg96gGEJjWlF4=",

      "nearRealTimeLiveRuleEligible": true,

      "ruleOwner": "CUSTOMER",

      "alertingEnabled": true,

      "liveModeEnabled": true,

      "runFrequency": "LIVE",

      "executionState": "DEFAULT"
    }
  ]
}

getRule と listRules を使用してキュレートされたルールの詳細を表示する

rules.getRulerule.listRules は、キュレートされたルールの詳細の取得をサポートします。rule.listRules レスポンスは、rule_owner: "GOOGLE" フィルタを使用して、キュレートされたルールのみにフィルタできます。rule_owner フィルタの使用方法の詳細については、ルール検索の構文セクションをご覧ください。

キュレートされたルールを読み取る listRules リクエストの例:

HTTP

GET https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules?filter=rule_owner%3A%22GOOGLE%22pageSize=1&view=TRENDS

レスポンスの例:

JSON

{
  "rules": [
    {
      "name": "projects/<ID>/locations/us/instances/<ID>/rules/ur_e34bf150-6cfb-494c-ad9d-ec8f7216a03c",

      "revisionId": "v_1755272664_971453000",

      "displayName": "Example Curated Rule",

      "severity": {
        "displayName": "Info"
      },

      "metadata": {
        "technique": "T1136.003",
        "rule_name": "Example Curated Rule",
        "description": "Example Curated Rule Description",
        "tactic": "TA0003"
      },

      "createTime": "2024-10-02T18:10:43.647897Z",

      "revisionCreateTime": "2025-08-15T15:44:24.971453Z",

      "type": "SINGLE_EVENT",

      "etag": "CNir/cQGEMjknM8D",

      "nearRealTimeLiveRuleEligible": true,

      "ruleOwner": "GOOGLE",

      "tags": [
        "google.mitre.tactic.ta0003",
        "google.mitre.technique.t1136.003"
      ],

      "executionState": "DEFAULT"
    }
  ]
}

rule.getRule メソッドは、リソース名を使用してキュレートされたルールを取得することをサポートしています。

キュレートされたルールを取得する getRule リクエストの例:

HTTP

GET https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules/ur_e34bf150-6cfb-494c-ad9d-ec8f7216a03c?view=BASIC

レスポンスの例:

JSON

{
  "rules": [
    {
      "name": "projects/<ID>/locations/us/instances/<ID>/rules/ur_e34bf150-6cfb-494c-ad9d-ec8f7216a03c",

      "revisionId": "v_1755272664_971453000",

      "displayName": "Example Curated Rule",

      "severity": {
        "displayName": "Info"
      },

      "metadata": {
        "technique": "T1136.003",
        "rule_name": "Example Curated Rule",
        "description": "Example curated rule description",
        "tactic": "TA0003"
      },

      "createTime": "2024-10-02T18:10:43.647897Z",

      "revisionCreateTime": "2025-08-15T15:44:24.971453Z",

      "text": "Example curated rule text",

      "type": "SINGLE_EVENT",

      "etag": "CNir/cQGEMjknM8D",

      "nearRealTimeLiveRuleEligible": true,

      "ruleOwner": "GOOGLE",

      "tags": [
        "google.mitre.tactic.ta0003",
        "google.mitre.technique.t1136.003"
      ],

      "executionState": "DEFAULT"
    }
  ]
}

modifyRules を使用してルール構成を一括変更する

rules.modifyRules メソッドは、カスタムルールとキュレートされたルールに対する次のバッチ更新をサポートしています。

  • ライブルールのステータスを更新する

  • アラート ステータスを更新する

  • 適用済みのタグを更新する

  • アーカイブ ステータスを更新する(カスタムルールのみ)

バッチ更新は同期的に独立して実行されます。このプロセスはアトミックではなく、個々の障害が発生しても継続されます。部分的な失敗については、failed_requests フィールドで詳しく説明します。このフィールドは、キーが失敗したリクエストのインデックスを表し、値が失敗の理由を示すマップです。更新が成功すると、rule_updates フィールドに記録されます。各リクエストの結果は、元のバッチの対応するインデックスに配置されます。

modifyRules リクエストの例:

HTTP

POST https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules:modifyRules 

JSON

{
  "parent": "projects/<ID>/locations/us/instances/<ID>",
  "requests": [
    {
      "update_mask": "liveModeEnabled",
      "rule": {
        "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_aaaaaaaaaaaaaaaaaaaaaaa",
        "liveModeEnabled": true
      }
    },
    {
      "update_mask": "alertingEnabled",
      "rule": {
        "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ur_zzzzzzzzzzzzzzzzzzzzz",
        "alertingEnabled": false
      }
    },
    {
      "update_mask": "tags",
      "rule": {
        "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_bbbbbbbbbbbbbbbbbbbbbbb",
        "tags": [
          "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/google.mitre.tactic.TA0043",
          "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/google.mitre.technique.T1595"
        ]
      }
    },
    {
      "update_mask": "archived",
      "rule": {
        "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_cccccccccccccccccccccc",
        "archived": true
      }
    }
  ]
}

レスポンスの例:

JSON

{
  "failed_requests": {
    "0": {
      "code": 5,
      "message": "rule is already enabled"
    },
    "3": {
      "code": 5,
      "message": "rule is already archived"
    }
  },
  "rule_updates": [
    {},
    { "alerting_state_updated": true },
    { "tagsUpdated": true },
    {}
  ]
}

キュレートされたルールの更新に関するガイドライン

キュレートされたルールのライブ ステータスまたはアラート ステータスを変更する場合は、次の点を考慮してください。

  • 独立した制御: ルールのステータスを親ルールセット ポリシーとは別に管理できます。ルールのステータスが親ポリシーと異なる場合、親ポリシーが次回更新されるまでカスタム設定は保持されます。

  • 利用資格の要件: これらのステータスを更新できるのは、インスタンスが親ルールパックの利用資格を有効にしている場合のみです。

タグを更新するためのガイドライン

次の方法で、タグをルールに関連付けることができます。

  • ルールテキストの tactictechniquemitre_ttp メタフィールドに MITRE T コード(戦術または手法)を含めます。

  • ルールのテキストの tags メタフィールドで、完全なタグ リソース名を指定します。

  • ModifyRule API リクエストを使用して、完全なタグ リソース名を指定します。

ModifyRules API は、MITRE tactic タグと technique タグをサポートしています。API 更新で指定されたタグは、ルールテキストから直接推測されたタグを除き、既存のタグを上書きします。

Google 管理の MITRE tactic タグは、google.mitre.tactic 名前空間接頭辞を使用します。

TA0001 戦術タグの完全なリソース名の例:


projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/google.mitre.tactic.TA0001

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。