Skip to content

Commit 074d99a

Browse files
authored
Merge pull request #417 from vbakke/v4-dev
Creating v4-dev branch
2 parents f002fbd + 1b3f29d commit 074d99a

File tree

161 files changed

+21080
-5125
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

161 files changed

+21080
-5125
lines changed

.eslintrc.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"root": true,
33
"ignorePatterns": [
4-
"projects/**/*"
4+
"projects/**/*",
5+
"*.css"
56
],
67
"overrides": [
78
{

.prettierrc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
"arrowParens": "avoid",
88
"trailingComma": "es5",
99
"bracketSameLine": true,
10-
"printWidth": 80,
10+
"printWidth": 100,
1111
"endOfLine": "auto"
1212
}

INSTALL.md

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
# Install DSOMM
2+
The DSOMM application is frontend only. Data is only stored in server side YAML files, and in the localStorage im the user's browser.
3+
4+
The application can be deployed in many ways. using a number of Docker, Amazon AWS and a standalone Angular service.
5+
6+
## Get the Activities
7+
8+
The _DSOMM activities_ are maintained in a separate GitHub repository. For the latest version, get it from:
9+
- https://github.com/devsecopsmaturitymodel/DevSecOps-MaturityModel-data
10+
11+
12+
## Docker
13+
1. Install [Docker](https://www.docker.com)
14+
1. Download and run DSOMM: \
15+
`docker pull wurstbrot/dsomm:latest` \
16+
`docker run --rm -p 8080:8080 wurstbrot/dsomm:latest`
17+
1. Open DSOMM on http://localhost:8080
18+
- If you are using docker-machine instead of the native docker installation on Windows or macOs: open <http://192.168.99.100:8080> instead
19+
If you want to override the default `generated.yaml` you can mount this file when starting the docker command.
20+
21+
`docker run --rm --volume $PWD/generated.yaml:/srv/assets/YAML/generated/generated.yaml -p 8080:8080 wurstbrot/dsomm`
22+
23+
**NB!** Note that the docker command requires an absolute path to the local file. (Hence, the use of the `$PWD` variable. On Windows, substitute `$PWD` with `%CD%`.)
24+
25+
26+
## Amazon EC2 Instance
27+
28+
1. In the _EC2_ sidenav select _Instances_ and click _Launch Instance_
29+
2. In _Step 1: Choose an Amazon Machine Image (AMI)_ choose an _Amazon
30+
Linux AMI_ or _Amazon Linux 2 AMI_
31+
3. In _Step 3: Configure Instance Details_ unfold _Advanced Details_ and
32+
copy the script below into _User Data_
33+
4. In _Step 6: Configure Security Group_ add a _Rule_ that opens port 80
34+
for HTTP
35+
5. Launch your instance
36+
6. Browse to your instance's public DNS
37+
38+
```bash
39+
#!/bin/bash
40+
service docker start
41+
docker run -d -p 80:8080 wurstbrot/dsomm:latest
42+
```
43+
44+
45+
## Any web server - Angular build
46+
Since DSOMM is a frontend only application, any web server can host DSOMM.
47+
- Clone the DSOMM repo
48+
49+
- **NB!** The DSOMM activities are maintained separately. Download the `generated.yaml` and put it in the required folder
50+
```
51+
git clone https://github.com/devsecopsmaturitymodel/DevSecOps-MaturityModel.git
52+
cd DevSecOps-MaturityModel
53+
npm install
54+
curl https://raw.githubusercontent.com/devsecopsmaturitymodel/DevSecOps-MaturityModel-data/main/src/assets/YAML/generated/generated.yaml -o src/assets/YAML/generated/generated.yaml
55+
ng build
56+
```
57+
The files that were created in the subfolder `dist`
58+
59+
If your DSOMM application is having a subfolder in the URL (e.g. https://server.local/our-dsomm), you need to build the Angular application to prepare for this. In that case build the application by using `ng build --base-href /our-dsomm/`.
60+
61+
62+
## Teams and Groups
63+
To customize these teams, you can create your own [meta.yaml](src/assets/meta.yaml) file with your unique team definitions.
64+
65+
Assessments within the framework can be based on either a team or a specific application, which can be referred to as the context. Depending on how you define the context or teams, you may want to group them together.
66+
67+
Here are a couple of examples to illustrate this, in breakers the DSOMM word:
68+
- Multiple applications (teams) can belong to a single overarching team (application).
69+
- Multiple teams (teams) can belong to a larger department (group).
70+
71+
Feel free to create your own [meta.yaml](src/assets/meta.yaml) file to tailor the framework to your specific needs and mount it in your environment (e.g. kubernetes or docker).
72+
Here is an example to start docker with customized meta.yaml:
73+
```
74+
# Customized meta.yaml
75+
cp src/assets/YAML/meta.yaml .
76+
docker run -v $(pwd)/meta.yaml:/srv/assets/YAML/meta.yaml -p 8080:8080 wurstbrot/dsomm
77+
78+
# Customized meta.yaml and generated.yaml
79+
cp src/assets/YAML/meta.yaml .
80+
cp $(pwd)/src/assets/YAML/generated/generated.yaml .
81+
docker run -v $(pwd)/meta.yaml:/srv/assets/YAML/meta.yaml -v $(pwd)/generated.yaml:/srv/assets/YAML/generated/generated.yaml -p 8080:8080 wurstbrot/dsomm
82+
```
83+
84+
In the corresponding [dimension YAMLs](https://github.com/devsecopsmaturitymodel/DevSecOps-MaturityModel-data/tree/main/src/assets/YAML/default), use:
85+
```
86+
[...]
87+
teamsImplemented:
88+
Default: false
89+
B: true
90+
C: true
91+
teamsEvidence:
92+
B: All team members completed OWASP Secure Coding Dojo training on 2025-01-11.
93+
C: |
94+
The pentest report from 2025 has been split into Jira tasks under
95+
[TODO-123](https://jira.example.com/issues/TODO-123).
96+
97+
_2025-04-01:_ All fixes of **critical** findings are deployed to production.
98+
```
99+
The `|` is yaml syntax to indicate that the evidence spans multiple lines. Markdown
100+
syntax can be used. The evidence is currently visible on the activity from the Matrix page.
101+
102+
# Back link
103+
104+
- [OWASP DevSecOps maturity model page](https://dsomm.owasp.org/)
105+
- [OWASP DevSecOps project page](https://owasp.org/www-project-devsecops-maturity-model/)
106+
- [OWASP](https://owasp.org)
107+
108+
# Your help is needed to perform
109+
110+
* Adding a manual on how to use DSOMM
111+
* Integration of Incident Response
112+
* DevSecOps Toolchain Categorization
113+
* App Sec Maturity Models Mapping
114+
* CAMS Categorization
115+
* Adding assessment questions
116+
117+
# Multi-language support
118+
Multi-language support is not currently planned.
119+
120+
# Sponsors
121+
122+
[![Timo Pagel IT-Consulting](https://raw.githubusercontent.com/DefectDojo/Documentation/master/doc/img/timo-pagel-logo.png)](https://pagel.pro)
123+
124+
[![Apprio Inc](https://github.com/wurstbrot/DevSecOps-MaturityModel/raw/master-old/assets/images/Apiiro_black_logo.png)](https://apiiro.com/)
125+
126+
[![Heroku (hosting)](https://github.com/wurstbrot/DevSecOps-MaturityModel/raw/main/src/assets/images/sponsors/heroku.png)](https://www.heroku.com/open-source-credit-program)
127+
128+
# Donations
129+
130+
If you are using the model or you are inspired by it, want to help but don't want to create pull requests? You can donate at the [OWASP Project Wiki Page](https://owasp.org/donate/?reponame=www-project-devsecops-maturity-model&title=OWASP+Devsecops+Maturity+Model). Donations might be used for the design of logos/images/design or travels.
131+
132+
# License
133+
134+
This program is free software: you can redistribute it and/or modify it under the terms of the [GPL 3](https://www.gnu.org/licenses/) license.
135+
136+
The intellectual property (content in the _data_ folder) is licensed under Attribution-ShareAlike.
137+
An example attribution by changing the content:
138+
> This work is based on the [OWASP DevSecOps Maturity Model](https://dsomm.owasp.org/).
139+
140+
The OWASP DevSecOps Maturity Model and any contributions are Copyright © by Timo Pagel 2017-2025.
141+
142+
143+
For customized DSOMM, take a look at https://github.com/wurstbrot/DevSecOps-MaturityModel-custom.
144+
145+
You can download your current state from the circular heatmap and mount it again via
146+
147+
```bash
148+
wget https://raw.githubusercontent.com/devsecopsmaturitymodel/DevSecOps-MaturityModel-data/main/src/assets/YAML/generated/generated.yaml # or go to /circular-heatmap and download edited yaml (bottom right)
149+
docker run -p 8080:8080 -v /tmp/generated.yaml:/srv/assets/YAML/generated/generated.yaml wurstbrot/dsomm:latest
150+
```
151+

Issue.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Changing team names has no effect
2+
3+
## Expected outcome
4+
* Updating the teams names and groups in `meta.yaml` should be visible in the browser after a refresh
5+
6+
## Actual outcome
7+
8+
## Steps to reproduce
9+
1) Clone the repo \
10+
`git clone https://github.com/devsecopsmaturitymodel/DevSecOps-MaturityModel.git`
11+
12+
2) Install dependencies \
13+
`cd DevSecOps-MaturityModel` \
14+
`npm install`
15+
16+
3) Download the default teams setup \
17+
`curl https://raw.githubusercontent.com/devsecopsmaturitymodel/DevSecOps-MaturityModel-data/main/src/assets/YAML/generated/generated.yaml -o src/assets/YAML/generated/generated.yaml`
18+
19+
4) Start the web server \
20+
`ng server` (or maybe `npx ng server`)
21+
22+
5) Open *incognito mode* os a web browser and visit \
23+
http://localhost:4200/circular-heatmap
24+
25+
6) Verify that the teams are 'Default', 'B' and 'C'
26+
27+
7) Fill in data for some of the teams
28+
- Click on a sector in the circle (e.g. *Build* Level 1)
29+
- Expand *Defined build process*
30+
- Tick all three teams
31+
- Click on another sector in the circle (e.g. *Deployment* Level 1)
32+
- Expand *Defined deployment process*
33+
- Tick 'Default' and 'B' only
34+
35+
8) Download `generated.yaml`
36+
37+
### Change names of teams
38+
9) Open `src\assets\YAML\meta.yaml`
39+
10) Edit team names in 'meta'
40+
- Rename `Default` to `A` in `teams` and `teamGroups`
41+
- Add `D` on `teams` and `teamGroups.GroupA`
42+
- Add `GroupD: ['C', 'D']` under `teamGroups`
43+
11) Update team names in 'generated'
44+
- Rename all `Default:` to `A:` in the downloaded `generated.yaml`
45+
- Add `D: true` on line 130 for *Defined build process*
46+
47+
12) Replace `src/assets/YAML/generated/generated.yaml` with the newly modified version
48+
49+
### Verify data in your browser
50+
13) Refresh your browser
51+
* The team filters are showing the new names
52+
* But expanding the activity cards only show `B` and `C`
53+
54+
55+
56+
57+
58+
59+

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ syntax can be used. The evidence is currently visible on the activity from the M
161161
162162
# Back link
163163
164-
- [OWASP DevSecOps maturity model page](https://dsomm.timo-pagel.de/)
164+
- [OWASP DevSecOps maturity model page](https://dsomm.owasp.org/)
165165
- [OWASP DevSecOps project page](https://owasp.org/www-project-devsecops-maturity-model/)
166166
- [OWASP](https://owasp.org)
167167
@@ -183,7 +183,7 @@ Multilanguage support is not given currently and not planned.
183183
184184
[![Apprio Inc](https://github.com/wurstbrot/DevSecOps-MaturityModel/raw/master-old/assets/images/Apiiro_black_logo.png)](https://apiiro.com/)
185185
186-
[![Heroku (hosting)](https://github.com/wurstbrot/DevSecOps-MaturityModel/raw/master/src/assets/images/sponsors/heroku.png)](https://www.heroku.com/open-source-credit-program)
186+
[![Heroku (hosting)](https://github.com/wurstbrot/DevSecOps-MaturityModel/raw/main/src/assets/images/sponsors/heroku.png)](https://www.heroku.com/open-source-credit-program)
187187
188188
# Donations
189189
@@ -195,6 +195,6 @@ This program is free software: you can redistribute it and/or modify it under th
195195
196196
The intellectual property (content in the _data_ folder) is licensed under Attribution-ShareAlike.
197197
An example attribution by changing the content:
198-
> This work is based on the [OWASP DevSecOps Maturity Model](https://dsomm.timo-pagel.de).
198+
> This work is based on the [OWASP DevSecOps Maturity Model](https://dsomm.owasp.org/).
199199
200200
The OWASP DevSecOps Maturity Model and any contributions are Copyright © by Timo Pagel 2017-2022.

TODO.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# File issue:
2+
- UI not responsive to screen size
3+
- Changing team names has no effect
4+
- Default installation (no generated.yaml) does not work
5+
- Filter illogical / not working as expected
6+
7+
8+
# ToDo
9+
- App: Alert when generated.yaml is not found
10+
- App: Filter radio buttons: Default, no selections: meaning all selected
11+
- App: Make radio button, and use Ctrl-Click to multiple (hold click on mobile)
12+
- App: Fix bug, that greys out all sectors on startup
13+
- App: Onboarding: Define teams, Setup generated.yaml (is 'generated.yaml' a good name?)
14+
15+
- Heatmap: TeamGroup filter: No selection means all selected
16+
- Heatmap: TeamGroup filter: Fix removing last filter
17+
- Heatmap: Add Reset data under settings
18+
- Heatmap: Highlight selected sector
19+
<use id="cursor" href="#segment-Build-Level-2" fill="red" stroke-width="5" stroke="red"></use>
20+
- Heatmap: Alter current bright yellow hover
21+
22+
- Heatmap modal: Default: Close some tabs
23+
- Heatmap modal: Store opened/closed tabs in local storage
24+
25+
- Mapping: Add "Sort by:"
26+
- Mapping: Fix: Sort by ISO 2017 is DESC (and 12.2)
27+
28+
- Matrix: Make radio button, and use Ctrl-Click to multiple (hold click on mobile)
29+
30+
# Doing
31+
- Heatmap: Fix color calculations, to base on TeamVisible
32+
- Heatmap: Allow non-standard team names and groups
33+
34+
# Done
35+
- Heatmap: Make heatmap the start page
36+
- Heatmap: Center labels on sectors
37+
- Heatmap: Fix calculations of heatmap dimension
38+
- Heatmap: Toggle filters' visibility
39+
- Heatmap: (Re)move Reset button
40+
- Heatmap: Fix responsive layout

angular.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
{
4545
"type": "anyComponentStyle",
4646
"maximumWarning": "2kb",
47-
"maximumError": "4kb"
47+
"maximumError": "6kb"
4848
}
4949
],
5050
"fileReplacements": [

0 commit comments

Comments
 (0)