Skip to content
This repository was archived by the owner on Oct 14, 2020. It is now read-only.

Commit de48e64

Browse files
committed
#30 Run a spellchecker on ADR 1
Signed-off-by: Sven Strittmatter <sven.strittmatter@iteratec.com>
1 parent 6ff9c3d commit de48e64

File tree

1 file changed

+20
-23
lines changed

1 file changed

+20
-23
lines changed

docs/adr/adr_0001.adoc

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
[[ADR-0000]]
2-
= ADR-0000: How can we introduce a more general extension concept for data proccessing modules?
2+
= ADR-0000: How can we introduce a more general extension concept for data processing modules?
33

44
[cols="h,d",grid=rows,frame=none,stripes=none,caption="Status",%autowidth]
55
|====
6-
// Use one of the ADR status parameter based on status
7-
// Please add a cross reference link to the new ADR on 'superseded' ADR.
8-
// e.g.: {adr_suposed_by} <<ADR-0000>>
96

107
| Status
118
| ACCEPTED
@@ -24,7 +21,7 @@
2421

2522
=== Status Quo
2623

27-
One major challenge implementing the _secureCodeBox_ is to provide a flexible and modular architecture, which enables the open source community to easily understand the concepts and especially to extend the _secureCodeBox_ with individual features. Therefore we decided to seperate the process stages of a single security scan (instance of scanType CRD) in 3 major phases:
24+
One major challenge implementing the _secureCodeBox_ is to provide a flexible and modular architecture, which enables the open source community to easily understand the concepts and especially to extend the _secureCodeBox_ with individual features. Therefore we decided to separate the process stages of a single security scan (instance of scanType CRD) in 3 major phases:
2825

2926
....
3027
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
@@ -37,9 +34,9 @@ By now the "Persisting Phase 3" was implemented by so called _persistenceProvide
3734

3835
=== Problem and Question
3936

40-
We identified different additional UseCases with a more _data proccessing oriented_ pattern than the implemented _persisting phase3_ indicates. For example, we implemented a so called "MetaDataProvider" feature, which is responsible for enhancing each security finding with additional metadata. But the MetaDataProvider must be executed after the _parsing phase 2_ and before the _persisting phase 3_ because it depends on the parsed finding results (which will be enhanced) and the update findings should be also persisted.
37+
We identified different additional UseCases with a more _data processing oriented_ pattern than the implemented _persisting phase3_ indicates. For example, we implemented a so called "MetaDataProvider" feature, which is responsible for enhancing each security finding with additional metadata. But the MetaDataProvider must be executed after the _parsing phase 2_ and before the _persisting phase 3_ because it depends on the parsed finding results (which will be enhanced) and the update findings should be also persisted.
4138

42-
To find a proper solution, we splitted the topic into the follwong two questions:
39+
To find a proper solution, we split the topic into the following two questions:
4340

4441
. Should we unify the concepts MetaDataProvider and PersistenceProvider?
4542
. How should the execution model look like for each concept?
@@ -51,8 +48,8 @@ To find a proper solution, we splitted the topic into the follwong two questions
5148
Both "modules" are "processing" the security findings, which are generated in the parsing phase.
5249
But there is one larger difference between them:
5350

54-
* `PersistenceProvider` is proccesing the findings with a *ReadOnly* pattern
55-
* `MetaDataProvider` is proccesing the findings with a *ReadAndWrite* pattern
51+
* `PersistenceProvider` is processing the findings with a *ReadOnly* pattern
52+
* `MetaDataProvider` is processing the findings with a *ReadAndWrite* pattern
5653

5754
There is a similar thing in kubernetes called [AdmissionController](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/), with the exception that the are executed before a resource gets created.
5855

@@ -125,7 +122,7 @@ Keep PersistenceProvider as they are and introduce new "MetaDataProvider" CRD wh
125122
====== Pros
126123

127124
* Quicker to implement
128-
* Might be worth it to have a seperate concept for it
125+
* Might be worth it to have a separate concept for it
129126

130127
====== Cons
131128

@@ -142,9 +139,9 @@ Basically a docker container which process takes two command line args:
142139

143140
Examples:
144141

145-
* Node.js `node my-metadata.js "https://storage.googleapi.com/..." "https://storage.googleapi.com/..."`
146-
* java `java my-metadata.jar "https://storage.googleapi.com/..." "https://storage.googleapi.com/..."`
147-
* golang `./my-metadata "https://storage.googleapi.com/..." "https://storage.googleapi.com/..."`
142+
* NodeJS: `node my-metadata.js "https://storage.googleapi.com/..." "https://storage.googleapi.com/..."`
143+
* Java: `java my-metadata.jar "https://storage.googleapi.com/..." "https://storage.googleapi.com/..."`
144+
* Golang: `./my-metadata "https://storage.googleapi.com/..." "https://storage.googleapi.com/..."`
148145

149146
====== Pros
150147

@@ -172,16 +169,16 @@ Analog to kubernetes webhooks. Https server receiving findings and returning res
172169
===== Cons
173170

174171
* Introduces new running Services that need to be maintained and have uptime
175-
* Code Overhead / Boilerplate (Can be mitigated by sdk)
172+
* Code Overhead / Boilerplate (Can be mitigated by SDK)
176173
* Debugging of individual MetaDataProvider is harder as everything is handled by a single service
177174
* Introduces "New" Concept
178175
* Certificate Management for webhook services (`cert-manager` required by default?)
179176
* Scaling for systems with lots of load could be a problem
180-
* One service per namespace (multiple tenants) needed => results in many running active services which is ressource consuming
177+
* One service per namespace (multiple tenants) needed => results in many running active services which is resource consuming
181178

182179
== Decision
183180

184-
Regarding the Question 1 it seems that both solution approaches are resulting in the same execution model. We descided to implement solution approach 1 and unify both concepts into a more general concept with the name _"hook concept"_. Therefore we exchange the existing name `persistenceProvider` for phase 3 in the excecution model with a more general term `DataProcessing`:
181+
Regarding the Question 1 it seems that both solution approaches are resulting in the same execution model. We decided to implement solution approach 1 and unify both concepts into a more general concept with the name _"hook concept"_. Therefore we exchange the existing name `persistenceProvider` for phase 3 in the execution model with a more general term `DataProcessing`:
185182

186183
....
187184
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
@@ -190,8 +187,8 @@ Regarding the Question 1 it seems that both solution approaches are resulting in
190187
└──────────────────┘ └──────────────────┘ └──────────────────┘
191188
....
192189

193-
Regarding the Question 2 we decided to implement the solution approach 1 with a job-based approach (no active service componend needed).
194-
The Phase 3 `DataProcessing` will be therefore splitt into to seperate phases named `ReadAndWriteHooks (3.1)` and `ReadOnlyHooks (3.2)`
190+
Regarding the Question 2 we decided to implement the solution approach 1 with a job-based approach (no active service component needed).
191+
The Phase 3 `DataProcessing` will be therefore split into to separate phases named `ReadAndWriteHooks (3.1)` and `ReadOnlyHooks (3.2)`
195192

196193
....
197194
┌ DataProcessing: ReadOnlyHooks ─ ─ ─
@@ -210,8 +207,8 @@ With the new `Hook Concept` we open the `DataProcessing` Phase 3 to a more intui
210207

211208
Ideas for additional data processing hooks:
212209

213-
* Notifier-Hooks (ReadOnlyHook) e.g. for chat systems (slack, teams...) or metric / alerting systems
214-
* MetaData Enrichment Hooks (ReadAndWriteHook)
215-
* FilterData Hooks (e.g. false/positive Handling) (ReadAndWriteHook)
216-
* SystemIntegration Hooks (ReadOnlyHook) e.g. for ticketing systems like JIRA
217-
* CascadingScans Hooks (ReadOnlyHook) e.g. for starting new security scans based on findings
210+
* Notifier-Hooks (ReadOnlyHook) e.g., for chat (slack, teams etc.), metric, alerting systems
211+
* MetaData enrichment hooks (ReadAndWriteHook)
212+
* FilterData Hooks (e.g., false/positive handling) (ReadAndWriteHook)
213+
* SystemIntegration Hooks (ReadOnlyHook) e.g., for ticketing systems like Jira
214+
* CascadingScans Hooks (ReadOnlyHook) e.g., for starting new security scans based on findings

0 commit comments

Comments
 (0)