Skip to content

Commit e48ec9f

Browse files
committed
Merge branch 'v4-base'
1 parent f002fbd commit e48ec9f

File tree

129 files changed

+26415
-3761
lines changed

Some content is hidden

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

129 files changed

+26415
-3761
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: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
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+
27+
## Amazon EC2 Instance
28+
29+
1. In the _EC2_ sidenav select _Instances_ and click _Launch Instance_
30+
2. In _Step 1: Choose an Amazon Machine Image (AMI)_ choose an _Amazon
31+
Linux AMI_ or _Amazon Linux 2 AMI_
32+
3. In _Step 3: Configure Instance Details_ unfold _Advanced Details_ and
33+
copy the script below into _User Data_
34+
4. In _Step 6: Configure Security Group_ add a _Rule_ that opens port 80
35+
for HTTP
36+
5. Launch your instance
37+
6. Browse to your instance's public DNS
38+
39+
```bash
40+
#!/bin/bash
41+
service docker start
42+
docker run -d -p 80:8080 wurstbrot/dsomm:latest
43+
```
44+
45+
46+
47+
## Any web server - Angular build
48+
Since DSOMM is a frontend only application, any web server can host DSOMM.
49+
- Clone the DSOMM repo
50+
51+
- **NB!** The DSOMM activities are maintained separately. Download the `generated.yaml` and put it in the required folder
52+
```
53+
git clone https://github.com/devsecopsmaturitymodel/DevSecOps-MaturityModel.git
54+
cd DevSecOps-MaturityModel
55+
npm install
56+
curl https://raw.githubusercontent.com/devsecopsmaturitymodel/DevSecOps-MaturityModel-data/main/src/assets/YAML/generated/generated.yaml -o src/assets/YAML/generated/generated.yaml
57+
ng build
58+
```
59+
The files that were created in the subfolder `dist`
60+
61+
62+
63+
64+
65+
66+
67+
68+
## Teams and Groups
69+
To customize these teams, you can create your own [meta.yaml](src/assets/meta.yaml) file with your unique team definitions.
70+
71+
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.
72+
73+
Here are a couple of examples to illustrate this, in breakers the DSOMM word:
74+
- Multiple applications (teams) can belong to a single overarching team (application).
75+
- Multiple teams (teams) can belong to a larger department (group).
76+
77+
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).
78+
Here is an example to start docker with customized meta.yaml:
79+
```
80+
# Customized meta.yaml
81+
cp src/assets/YAML/meta.yaml .
82+
docker run -v $(pwd)/meta.yaml:/srv/assets/YAML/meta.yaml -p 8080:8080 wurstbrot/dsomm
83+
84+
# Customized meta.yaml and generated.yaml
85+
cp src/assets/YAML/meta.yaml .
86+
cp $(pwd)/src/assets/YAML/generated/generated.yaml .
87+
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
88+
```
89+
90+
In the corresponding [dimension YAMLs](https://github.com/devsecopsmaturitymodel/DevSecOps-MaturityModel-data/tree/main/src/assets/YAML/default), use:
91+
```
92+
[...]
93+
teamsImplemented:
94+
Default: false
95+
B: true
96+
C: true
97+
teamsEvidence:
98+
B: All team members completed OWASP Secure Coding Dojo training on 2025-01-11.
99+
C: |
100+
The pentest report from 2025 has been split into Jira tasks under
101+
[TODO-123](https://jira.example.com/issues/TODO-123).
102+
103+
_2025-04-01:_ All fixes of **critical** findings are deployed to production.
104+
```
105+
The `|` is yaml syntax to indicate that the evidence spans multiple lines. Markdown
106+
syntax can be used. The evidence is currently visible on the activity from the Matrix page.
107+
108+
# Back link
109+
110+
- [OWASP DevSecOps maturity model page](https://dsomm.timo-pagel.de/)
111+
- [OWASP DevSecOps project page](https://owasp.org/www-project-devsecops-maturity-model/)
112+
- [OWASP](https://owasp.org)
113+
114+
# Your help is needed to perform
115+
116+
* Adding a manual on how to use DSOMM
117+
* Integration of Incident Response
118+
* DevSecOps Toolchain Categorization
119+
* App Sec Maturity Models Mapping
120+
* CAMS Categorization
121+
* Adding assessment questions
122+
123+
# Multi-language support
124+
Multi-language support is not currently planned.
125+
126+
# Sponsors
127+
128+
[![Timo Pagel IT-Consulting](https://raw.githubusercontent.com/DefectDojo/Documentation/master/doc/img/timo-pagel-logo.png)](https://pagel.pro)
129+
130+
[![Apprio Inc](https://github.com/wurstbrot/DevSecOps-MaturityModel/raw/master-old/assets/images/Apiiro_black_logo.png)](https://apiiro.com/)
131+
132+
[![Heroku (hosting)](https://github.com/wurstbrot/DevSecOps-MaturityModel/raw/master/src/assets/images/sponsors/heroku.png)](https://www.heroku.com/open-source-credit-program)
133+
134+
# Donations
135+
136+
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.
137+
138+
# License
139+
140+
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.
141+
142+
The intellectual property (content in the _data_ folder) is licensed under Attribution-ShareAlike.
143+
An example attribution by changing the content:
144+
> This work is based on the [OWASP DevSecOps Maturity Model](https://dsomm.timo-pagel.de).
145+
146+
The OWASP DevSecOps Maturity Model and any contributions are Copyright © by Timo Pagel 2017-2025.
147+
148+
149+
For customized DSOMM, take a look at https://github.com/wurstbrot/DevSecOps-MaturityModel-custom.
150+
151+
You can download your current state from the circular heatmap and mount it again via
152+
153+
```bash
154+
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)
155+
docker run -p 8080:8080 -v /tmp/generated.yaml:/srv/assets/YAML/generated/generated.yaml wurstbrot/dsomm:latest
156+
```
157+

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+

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

0 commit comments

Comments
 (0)