@@ -47,7 +47,7 @@ class MicrosoftSentinelRuleParser(MicrosoftSentinelQueryParser, JsonRuleMixin):
47
47
mappings : MicrosoftSentinelMappings = microsoft_sentinel_rule_mappings
48
48
49
49
@staticmethod
50
- def __parse_timeframe (raw_timeframe : Optional [str ]) -> Optional [timedelta ]:
50
+ def _parse_timeframe (raw_timeframe : Optional [str ]) -> Optional [timedelta ]:
51
51
with suppress (ISO8601Error ):
52
52
return isodate .parse_duration (raw_timeframe )
53
53
@@ -73,7 +73,7 @@ def parse_raw_query(self, text: str, language: str) -> RawQueryContainer:
73
73
id_ = parsed_description .get ("rule_id" ),
74
74
title = rule .get ("displayName" ),
75
75
description = parsed_description .get ("description" ) or rule .get ("description" ),
76
- timeframe = self .__parse_timeframe (rule .get ("queryFrequency" , "" )),
76
+ timeframe = self ._parse_timeframe (rule .get ("queryFrequency" , "" )),
77
77
severity = rule .get ("severity" , "medium" ),
78
78
mitre_attack = mitre_attack ,
79
79
author = parsed_description .get ("author" ) or [rule .get ("author" )],
@@ -85,15 +85,10 @@ def parse_raw_query(self, text: str, language: str) -> RawQueryContainer:
85
85
86
86
87
87
@parser_manager .register
88
- class MicrosoftSentinelYAMLRuleParser (MicrosoftSentinelQueryParser , YamlRuleMixin ):
88
+ class MicrosoftSentinelYAMLRuleParser (YamlRuleMixin , MicrosoftSentinelRuleParser ):
89
89
details : PlatformDetails = microsoft_sentinel_yaml_rule_details
90
90
mappings : MicrosoftSentinelMappings = microsoft_sentinel_rule_mappings
91
91
92
- @staticmethod
93
- def __parse_timeframe (raw_timeframe : Optional [str ]) -> Optional [timedelta ]:
94
- with suppress (ISO8601Error ):
95
- return isodate .parse_duration (raw_timeframe )
96
-
97
92
def extract_tags (self , data : Union [dict , list , str ]) -> list [str ]:
98
93
tags = []
99
94
if isinstance (data , dict ):
@@ -138,8 +133,8 @@ def parse_raw_query(self, text: str, language: str) -> RawQueryContainer:
138
133
if isinstance (tag , str ):
139
134
tags .append (tag )
140
135
141
- timeframe = self .__parse_timeframe (rule .get ("queryFrequency" , "" ))
142
- query_period = self .__parse_timeframe (rule .get ("queryPeriod" , "" ))
136
+ timeframe = self ._parse_timeframe (rule .get ("queryFrequency" , "" ))
137
+ query_period = self ._parse_timeframe (rule .get ("queryPeriod" , "" ))
143
138
144
139
return RawQueryContainer (
145
140
query = rule ["query" ],
@@ -155,10 +150,10 @@ def parse_raw_query(self, text: str, language: str) -> RawQueryContainer:
155
150
author = rule .get ("metadata" , {}).get ("author" , {}).get ("name" , "" ).split ("," ),
156
151
tags = sorted (set (tags )),
157
152
raw_metainfo_container = RawMetaInfoContainer (
158
- trigger_operator = rule .get ("triggerOperator" , "" ),
159
- trigger_threshold = rule .get ("triggerThreshold" , "" ),
160
- query_frequency = rule .get ("queryFrequency" , "" ) if not timeframe else None ,
161
- query_period = rule .get ("queryPeriod" , "" ) if not query_period else None ,
153
+ trigger_operator = rule .get ("triggerOperator" ),
154
+ trigger_threshold = rule .get ("triggerThreshold" ),
155
+ query_frequency = rule .get ("queryFrequency" ) ,
156
+ query_period = rule .get ("queryPeriod" ) ,
162
157
),
163
158
),
164
159
)
0 commit comments