Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 6 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Attackers are intelligent and creative, equipped with new technologies and purpo

# Usage

Go to https://dsomm.timo-pagel.de or clone [this repository](https://github.com/wurstbrot/DevSecOps-MaturityModel/) and run `startDocker.bash`.
Go to https://dsomm.timo-pagel.de.

* _matrix_ shows the dimensions, subdimensions and activities are described.
* _Implementation Levels_ can be used to measure the current implementation level by clicking on the specific activities which have been performed.
Expand All @@ -24,6 +24,8 @@ In this [video](https://www.youtube.com/watch?v=tX9RHZ_O5NU) Timo Pagel describe
In case you have evidence or review questions to gather evidence, you can add the attribute "evidence" to an activity which will be attached to an activity to provide it to your CISO or your customer's CISO.
You can switch on to show open TODO's for evidence by changing IS_SHOW_EVIDENCE_TODO to true 'bib.php' `define(IS_SHOW_EVIDENCE_TODO, true);`

This page uses the Browser's localStorage to store the state of the circular headmap.

# Community

Code Freeze: Currently, with the Google Summer student Aryan Prasad we develop a new Angular frontend version, therefore, we do not accept any code changes right now.
Expand Down Expand Up @@ -57,12 +59,14 @@ In case you would like to perform a DevSecOps assessment, the following tools ar
## Container

1. Install [Docker](https://www.docker.com)
2. Run `docker run --rm -p 8080:8080 wurstbrot/dsomm:latest`
2. Run `docker pull wurstbrot/dsomm:latest && docker run --rm -p 8080:8080 wurstbrot/dsomm:latest`
3. Browse to <http://localhost:8080> (on macOS and Windows browse to <http://192.168.99.100:8080> if you are using docker-machine instead
of the native docker installation)

For customized DSOMM, take a look at https://github.com/wurstbrot/DevSecOps-MaturityModel-custom. In case you would like to have perform an assessment for multiple teams, iterate from port 8080 to 8XXX, depending of the size of your team.

You can download your current state from the circular headmap and mount it again via `docker run -p 8080:8080 -v /tmp/generated.yaml:/app/assets/YAML/generated/generated.yaml wurstbrot/dsomm:latest`.

This approach also allows teams to perform self assessment with changes tracked in a repository.


Expand All @@ -84,14 +88,6 @@ service docker start
docker run -d -p 80:8080 wurstbrot/dsomm:latest
```

## Tests

To run basic tests just

```bash
docker-compose -f docker-compose.dev.yaml up test-php
```

# Credits

* The dimension _Test and Verification_ is based on Christian Schneiders [Security DevOps Maturity Model (SDOMM)](https://www.christian-schneider.net/SecurityDevOpsMaturityModel.html). _Application tests_ and _Infrastructure tests_ are added by Timo Pagel. Also, the sub-dimension _Static depth_ has been evaluated by security experts at [OWASP Stammtisch Hamburg](https://www.owasp.org/index.php/OWASP_German_Chapter_Stammtisch_Initiative/Hamburg).
Expand Down
13 changes: 13 additions & 0 deletions src/app/component/circular-heatmap/circular-heatmap.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ export class CircularHeatmapComponent implements OnInit {
}
}
//console.log(this.ALL_CARD_DATA);
this.loadState();
this.loadCircularHeatMap(
this.ALL_CARD_DATA,
'#chart',
Expand Down Expand Up @@ -194,6 +195,7 @@ export class CircularHeatmapComponent implements OnInit {
).attr('fill', function (p) {
return color(_self.ALL_CARD_DATA[index]['Done%']);
});
this.saveState();
}

loadCircularHeatMap(
Expand Down Expand Up @@ -593,5 +595,16 @@ export class CircularHeatmapComponent implements OnInit {
).attr('fill', 'white');
}
}
this.saveState();
}

saveState() {
localStorage.setItem('dataset', JSON.stringify(this.ALL_CARD_DATA));
}
loadState() {
var content = localStorage.getItem('dataset');
if (content != null) {
this.ALL_CARD_DATA = JSON.parse(content);
}
}
}