Rules API による統合ルールの管理
Rules API は、カスタムルールとキュレートされたルールの両方を管理するためのプログラム エンドポイントを提供します。このドキュメントでは、Rules API を使用してカスタムルールとキュレートされたルールをプログラムで管理する方法について説明します。
Rules API を使用して、次のタスクを行います。
ルールを検索して一覧表示する: 構造化検索を実行し、結果を並べ替え、拡張されたルールリソースを取得します。
キュレートされたルールの詳細を表示する: Google が作成したルールの読み取り専用メタデータ、適用されたタグ、未加工テキスト ロジックを取得します。
ルール構成を一括で変更する: 複数のルールにわたって、ライブ状態、アラート状態、アーカイブ ステータス、タグ割り当てを同期的に更新します。
ルールリストを使用してルールを検索する
rules.list メソッドは、拡張されたルールリソースと構造化検索をサポートしています。これらの詳細なリソースをクエリするには、次のいずれかのビューを使用します。
CONFIG_ONLYTRENDS
どちらのビューでも、次の情報を含む拡張情報が提供されます。
ルールのデプロイ情報(ライブルールの有効化、アラートの有効化、アーカイブ状態、実行状態)
関連付けられたルールタグ
CONFIG_ONLYビューのキュレートされたルールリソースへのアクセスCONFIG_ONLYビューのページサイズが 5,000 件に拡大堅牢な構造化検索機能。
rules.list リクエストの order_by を使用して、ルールリソース フィールドで検索結果を並べ替えます。次のルールフィールドがサポートされています。
alerting_enabledarchivedauthorcreate_timedisplay_nameexecution_statelive_mode_enabledrevision_create_timerule_idrule_ownerseveritytypeupdate_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.getRule と rule.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 },
{}
]
}
キュレートされたルールを更新するためのガイドライン
キュレートされたルールのライブ ステータスまたはアラート ステータスを変更する場合は、次の点を考慮してください。
独立した制御: ルールのステータスは、親ルールセット ポリシーとは独立して管理できます。ルールのステータスが親ポリシーと異なる場合、親ポリシーが次回の更新を受け取るまで、カスタム設定は保持されます。
権限の要件: これらのステータスを更新できるのは、インスタンスに親ルールパックの権限がアクティブに付与されている場合のみです。
タグを更新するためのガイドライン
次の方法でルールにタグを関連付けることができます。
ルールテキストの
tactic、technique、mitre_ttpメタフィールドに MITRE T コード(戦術または手法)を含めます。ルールテキストの
tagsメタフィールドに完全なタグリソース名を指定します。ModifyRuleAPI リクエストを使用して完全なタグリソース名を指定します。
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 のプロフェッショナルから回答を得ることができます。