Skip to content

Commit b136310

Browse files
Mikaayensongithub-actions[bot]
authored andcommitted
[FR] Add support for dataviews in the rule schema (#3510)
(cherry picked from commit 8724077)
1 parent 69fef2e commit b136310

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

detection_rules/main.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ def name_to_filename(name):
114114
base_path = contents.get('name') or contents.get('rule', {}).get('name')
115115
base_path = name_to_filename(base_path) if base_path else base_path
116116
rule_path = os.path.join(RULES_DIR, base_path) if base_path else None
117-
rule_prompt(rule_path, required_only=True, save=True, verbose=True, additional_required=['index'], **contents)
117+
additional = ['index'] if not contents.get('data_view_id') else ['data_view_id']
118+
rule_prompt(rule_path, required_only=True, save=True, verbose=True, additional_required=additional, **contents)
118119

119120

120121
@root.command('build-limited-rules')

detection_rules/rule.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,7 @@ def get_beats_schema(self, index: list, beats_version: str, ecs_version: str) ->
568568
def get_endgame_schema(self, index: list, endgame_version: str) -> Optional[endgame.EndgameSchema]:
569569
"""Get an assembled flat endgame schema."""
570570

571-
if "endgame-*" not in index:
571+
if index and "endgame-*" not in index:
572572
return None
573573

574574
endgame_schema = endgame.read_endgame_schema(endgame_version=endgame_version)
@@ -581,6 +581,7 @@ class QueryRuleData(BaseRuleData):
581581
type: Literal["query"]
582582

583583
index: Optional[List[str]]
584+
data_view_id: Optional[str]
584585
query: str
585586
language: definitions.FilterLanguages
586587
alert_suppression: Optional[AlertSuppressionMapping] = field(metadata=dict(metadata=dict(min_compat="8.8")))

detection_rules/rule_validators.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ def validate_stack_combos(self, data: QueryRuleData, meta: RuleMeta) -> Union[EQ
263263

264264
beat_types, beat_schema, schema = self.get_beats_schema(data.index or [],
265265
beats_version, ecs_version)
266-
endgame_schema = self.get_endgame_schema(data.index, endgame_version)
266+
endgame_schema = self.get_endgame_schema(data.index or [], endgame_version)
267267
eql_schema = ecs.KqlSchema2Eql(schema)
268268

269269
# validate query against the beats and eql schema
@@ -312,8 +312,9 @@ def validate_integration(self, data: QueryRuleData, meta: RuleMeta,
312312
stack_version = integration_schema_data["stack_version"]
313313

314314
# add non-ecs-schema fields for edge cases not added to the integration
315-
for index_name in data.index:
316-
integration_schema.update(**ecs.flatten(ecs.get_index_schema(index_name)))
315+
if data.index:
316+
for index_name in data.index:
317+
integration_schema.update(**ecs.flatten(ecs.get_index_schema(index_name)))
317318

318319
# add endpoint schema fields for multi-line fields
319320
integration_schema.update(**ecs.flatten(ecs.get_endpoint_schemas()))

0 commit comments

Comments
 (0)