Skip to content

Commit 5d84999

Browse files
authored
Merge pull request #219 from splunk/remove_ssa_specific_code
Remove SSA specific code
2 parents 44ef8d9 + 83e1c08 commit 5d84999

File tree

12 files changed

+66
-1157
lines changed

12 files changed

+66
-1157
lines changed

contentctl/actions/build.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from contentctl.input.director import Director, DirectorOutputDto
99
from contentctl.output.conf_output import ConfOutput
1010
from contentctl.output.conf_writer import ConfWriter
11-
from contentctl.output.ba_yml_output import BAYmlOutput
1211
from contentctl.output.api_json_output import ApiJsonOutput
1312
from contentctl.output.data_source_writer import DataSourceWriter
1413
from contentctl.objects.lookup import Lookup
@@ -86,17 +85,4 @@ def execute(self, input_dto: BuildInputDto) -> DirectorOutputDto:
8685

8786
print(f"Build of '{input_dto.config.app.title}' API successful to {input_dto.config.getAPIPath()}")
8887

89-
if input_dto.config.build_ssa:
90-
91-
srs_path = input_dto.config.getSSAPath() / 'srs'
92-
complex_path = input_dto.config.getSSAPath() / 'complex'
93-
shutil.rmtree(srs_path, ignore_errors=True)
94-
shutil.rmtree(complex_path, ignore_errors=True)
95-
srs_path.mkdir(parents=True)
96-
complex_path.mkdir(parents=True)
97-
ba_yml_output = BAYmlOutput()
98-
ba_yml_output.writeObjects(input_dto.director_output_dto.ssa_detections, str(input_dto.config.getSSAPath()))
99-
100-
print(f"Build of 'SSA' successful to {input_dto.config.getSSAPath()}")
101-
10288
return input_dto.director_output_dto

contentctl/actions/convert.py

Lines changed: 0 additions & 25 deletions
This file was deleted.

contentctl/actions/validate.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ def execute(self, input_dto: validate) -> DirectorOutputDto:
3030
[],
3131
[],
3232
[],
33-
[],
3433
)
3534

3635
director = Director(director_output_dto)

contentctl/input/backend_splunk_ba.py

Lines changed: 0 additions & 144 deletions
This file was deleted.

contentctl/input/director.py

Lines changed: 9 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,11 @@
2828
from contentctl.enrichments.cve_enrichment import CveEnrichment
2929

3030
from contentctl.objects.config import validate
31-
from contentctl.input.ssa_detection_builder import SSADetectionBuilder
3231
from contentctl.objects.enums import SecurityContentType
3332

3433
from contentctl.objects.enums import DetectionStatus
3534
from contentctl.helper.utils import Utils
3635

37-
from contentctl.input.ssa_detection_builder import SSADetectionBuilder
3836
from contentctl.objects.enums import SecurityContentType
3937

4038
from contentctl.objects.enums import DetectionStatus
@@ -56,7 +54,6 @@ class DirectorOutputDto:
5654
macros: list[Macro]
5755
lookups: list[Lookup]
5856
deployments: list[Deployment]
59-
ssa_detections: list[SSADetection]
6057
data_sources: list[DataSource]
6158
name_to_content_map: dict[str, SecurityContentObject] = field(default_factory=dict)
6259
uuid_to_content_map: dict[UUID, SecurityContentObject] = field(default_factory=dict)
@@ -98,8 +95,6 @@ def addContentToDictMappings(self, content: SecurityContentObject):
9895
self.stories.append(content)
9996
elif isinstance(content, Detection):
10097
self.detections.append(content)
101-
elif isinstance(content, SSADetection):
102-
self.ssa_detections.append(content)
10398
elif isinstance(content, DataSource):
10499
self.data_sources.append(content)
105100
else:
@@ -112,11 +107,9 @@ def addContentToDictMappings(self, content: SecurityContentObject):
112107
class Director():
113108
input_dto: validate
114109
output_dto: DirectorOutputDto
115-
ssa_detection_builder: SSADetectionBuilder
116110

117111
def __init__(self, output_dto: DirectorOutputDto) -> None:
118112
self.output_dto = output_dto
119-
self.ssa_detection_builder = SSADetectionBuilder()
120113

121114
def execute(self, input_dto: validate) -> None:
122115
self.input_dto = input_dto
@@ -129,7 +122,6 @@ def execute(self, input_dto: validate) -> None:
129122
self.createSecurityContent(SecurityContentType.data_sources)
130123
self.createSecurityContent(SecurityContentType.playbooks)
131124
self.createSecurityContent(SecurityContentType.detections)
132-
self.createSecurityContent(SecurityContentType.ssa_detections)
133125

134126

135127
from contentctl.objects.abstract_security_content_objects.detection_abstract import MISSING_SOURCES
@@ -142,12 +134,7 @@ def execute(self, input_dto: validate) -> None:
142134
print("No missing data_sources!")
143135

144136
def createSecurityContent(self, contentType: SecurityContentType) -> None:
145-
if contentType == SecurityContentType.ssa_detections:
146-
files = Utils.get_all_yml_files_from_directory(
147-
os.path.join(self.input_dto.path, "ssa_detections")
148-
)
149-
security_content_files = [f for f in files if f.name.startswith("ssa___")]
150-
elif contentType in [
137+
if contentType in [
151138
SecurityContentType.deployments,
152139
SecurityContentType.lookups,
153140
SecurityContentType.macros,
@@ -179,43 +166,37 @@ def createSecurityContent(self, contentType: SecurityContentType) -> None:
179166
modelDict = YmlReader.load_file(file)
180167

181168
if contentType == SecurityContentType.lookups:
182-
lookup = Lookup.model_validate(modelDict,context={"output_dto":self.output_dto, "config":self.input_dto})
169+
lookup = Lookup.model_validate(modelDict, context={"output_dto":self.output_dto, "config":self.input_dto})
183170
self.output_dto.addContentToDictMappings(lookup)
184171

185172
elif contentType == SecurityContentType.macros:
186-
macro = Macro.model_validate(modelDict,context={"output_dto":self.output_dto})
173+
macro = Macro.model_validate(modelDict, context={"output_dto":self.output_dto})
187174
self.output_dto.addContentToDictMappings(macro)
188175

189176
elif contentType == SecurityContentType.deployments:
190-
deployment = Deployment.model_validate(modelDict,context={"output_dto":self.output_dto})
177+
deployment = Deployment.model_validate(modelDict, context={"output_dto":self.output_dto})
191178
self.output_dto.addContentToDictMappings(deployment)
192179

193180
elif contentType == SecurityContentType.playbooks:
194-
playbook = Playbook.model_validate(modelDict,context={"output_dto":self.output_dto})
181+
playbook = Playbook.model_validate(modelDict, context={"output_dto":self.output_dto})
195182
self.output_dto.addContentToDictMappings(playbook)
196183

197184
elif contentType == SecurityContentType.baselines:
198-
baseline = Baseline.model_validate(modelDict,context={"output_dto":self.output_dto})
185+
baseline = Baseline.model_validate(modelDict, context={"output_dto":self.output_dto})
199186
self.output_dto.addContentToDictMappings(baseline)
200187

201188
elif contentType == SecurityContentType.investigations:
202-
investigation = Investigation.model_validate(modelDict,context={"output_dto":self.output_dto})
189+
investigation = Investigation.model_validate(modelDict, context={"output_dto":self.output_dto})
203190
self.output_dto.addContentToDictMappings(investigation)
204191

205192
elif contentType == SecurityContentType.stories:
206-
story = Story.model_validate(modelDict,context={"output_dto":self.output_dto})
193+
story = Story.model_validate(modelDict, context={"output_dto":self.output_dto})
207194
self.output_dto.addContentToDictMappings(story)
208195

209196
elif contentType == SecurityContentType.detections:
210-
detection = Detection.model_validate(modelDict,context={"output_dto":self.output_dto, "app":self.input_dto.app})
197+
detection = Detection.model_validate(modelDict, context={"output_dto":self.output_dto, "app":self.input_dto.app})
211198
self.output_dto.addContentToDictMappings(detection)
212199

213-
elif contentType == SecurityContentType.ssa_detections:
214-
self.constructSSADetection(self.ssa_detection_builder, self.output_dto,str(file))
215-
ssa_detection = self.ssa_detection_builder.getObject()
216-
if ssa_detection.status in [DetectionStatus.production.value, DetectionStatus.validation.value]:
217-
self.output_dto.addContentToDictMappings(ssa_detection)
218-
219200
elif contentType == SecurityContentType.data_sources:
220201
data_source = DataSource.model_validate(
221202
modelDict, context={"output_dto": self.output_dto}
@@ -262,19 +243,3 @@ def createSecurityContent(self, contentType: SecurityContentType) -> None:
262243
f"The following {len(validation_errors)} error(s) were found during validation:\n\n{errors_string}\n\nVALIDATION FAILED"
263244
)
264245

265-
def constructSSADetection(
266-
self,
267-
builder: SSADetectionBuilder,
268-
directorOutput: DirectorOutputDto,
269-
file_path: str,
270-
) -> None:
271-
builder.reset()
272-
builder.setObject(file_path)
273-
builder.addMitreAttackEnrichmentNew(directorOutput.attack_enrichment)
274-
builder.addKillChainPhase()
275-
builder.addCIS()
276-
builder.addNist()
277-
builder.addAnnotations()
278-
builder.addMappings()
279-
builder.addUnitTest()
280-
builder.addRBA()

0 commit comments

Comments
 (0)