From a startup to a multinational corporation the software development industry is currently dominated by agile frameworks and product teams and as part of it DevOps strategies. It has been observed that during the implementation, security aspects are usually neglected or are at least not sufficient taken account of. It is often the case that standard safety requirements of the production environment are not utilized or applied to the build pipeline in the continuous integration environment with containerization or concrete docker. Therefore, the docker registry is often not secured which might result in the theft of the entire company’s source code.
The OWASP DevSecOps Maturity Model provides opportunities to harden DevOps strategies and shows how these can be prioritized.
With the help of DevOps strategies security can also be enhanced. For example, each component such as application libraries and operating system libraries in docker images can be tested for known vulnerabilities.
Attackers are intelligent and creative, equipped with new technologies and purpose. Under the guidance of the forward-looking DevSecOps Maturity Model, appropriate principles and measures are at hand implemented which counteract the attacks.
Go to https://dsomm.owasp.org.
- matrix shows the dimensions, subdimensions and activities are described.
- Implementation Levels can be used to show the current implementation level by clicking on the specific activities which have been performed (it is recommended to use a gitops-like flow)
- Mappings Shows mappings to other standards and provides the ability to download an excel sheet
- Usage describes how to use DSOMM
In this video Timo Pagel describes different strategic approaches for your secure DevOps strategy. The use OWASP DSOMM in combination with OWASP SAMM is explained.
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.
Join #dsomm in OWASP Slack. Create issues or even better Pull Requests in github.
- Video: OWASP (DevSecOps) Projects, 2021-04-28, OWASP Stammtisch Frankfurt
- Video: DSOMM Enhancement Workshop at Open Security Summit, 2021-04-16
- Video: Strategic Usage of the OWASP Software Assurance Maturity Model and the OWASP DevSecOps Maturity Model, OWASP Jakarta
- Slides: DSOMM Overview
- Video: GitHub practical DSOMM snippet on twitch
- Blog: GitHub on DSOMM 2020
- Video: Benutzung vom OWASP DevSecOps Maturity Model (German)
- Online: OWASP DevSecOps Maturity Model - Culture (German) 2020-08-25
- Video: Usage of the OWASP DevSecOps Maturity Model, OWASP Ottawa Chapter, 2020-08-17
- Continuous Application Security Testing for Enterprise, DevOps Meetup Hamburg, 2019-09-26
- DevSecOps Maturity Model, Open Security Summit, near London, 2018
- Security in DevOps-Strategies, 28.09.2017, Hamburg, Germany
- DevSecOps Maturity Model, 2017
In case you would like to perform a DevSecOps assessment, the following tools are available:
- Usage of the applicaton in a
container
. - Development of an export to OWASP Maturity Models (recommended for assessments with a lot of teams)
- Creation of your excel sheet (not recommended, you want to use DevOps, don't even try!)
- Install Docker
- Run
docker pull wurstbrot/dsomm:latest && docker run --rm -p 8080:8080 wurstbrot/dsomm:latest
- 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
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)
docker run -p 8080:8080 -v /tmp/generated.yaml:/srv/assets/YAML/generated/generated.yaml wurstbrot/dsomm:latest
.
This approach also allows teams to perform self assessment with changes tracked in a repository.
- In the EC2 sidenav select Instances and click Launch Instance
- In Step 1: Choose an Amazon Machine Image (AMI) choose an Amazon Linux AMI or Amazon Linux 2 AMI
- In Step 3: Configure Instance Details unfold Advanced Details and copy the script below into User Data
- In Step 6: Configure Security Group add a Rule that opens port 80 for HTTP
- Launch your instance
- Browse to your instance's public DNS
#!/bin/bash
service docker start
docker run -d -p 80:8080 wurstbrot/dsomm:latest
The definition of the activities are in the data-repository.
To customize these teams, you can create your own meta.yaml file with your unique team definitions.
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.
Here are a couple of examples to illustrate this, in breakers the DSOMM word:
- Multiple applications (teams) can belong to a single overarching team (application).
- Multiple teams (teams) can belong to a larger department (group).
Feel free to create your own meta.yaml file to tailor the framework to your specific needs and mount it in your environment (e.g. kubernetes or docker). Here is an example to start docker with customized meta.yaml:
# Customized meta.yaml
cp src/assets/YAML/meta.yaml .
docker run -v $(pwd)/meta.yaml:/srv/assets/YAML/meta.yaml -p 8080:8080 wurstbrot/dsomm
# Customized meta.yaml and generated.yaml
cp src/assets/YAML/meta.yaml .
cp $(pwd)/src/assets/YAML/generated/generated.yaml .
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
In the corresponding dimension YAMLs, use:
[...]
teamsImplemented:
Default: false
C: true
evidence:
B: Showed Jenkinsfile
- The dimension Test and Verification is based on Christian Schneiders Security DevOps Maturity Model (SDOMM). 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.
- The sub-dimension Process has been added after a discussion with Francois Raynaud that reactive activities are missing.
- Enhancement of my basic translation is performed by Claud Camerino.
- Adding ISO 27001:2017 mapping, Andre Baumeier.
- Providing a documentation of how to use
docker
in the Juice Shop for simple copy&paste, Björn Kimminich. - OWASP Project Integration Project Writeup for providing documentation on different DevSecOps practices which are copied&pasted/ (and adopted) (https://github.com/northdpole, https://github.com/ThunderSon)
- The requirements from level 0 are based on/copied from AppSecure NRW
- Adding a manual on how to use DSOMM
- Integration of Incident Response
- DevSecOps Toolchain Categorization
- App Sec Maturity Models Mapping
- CAMS Categorization
- Adding assessment questions
Multilanguage support is not given currently and not planned.
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. Donations might be used for the design of logos/images/design or travels.
This program is free software: you can redistribute it and/or modify it under the terms of the GPL 3 license.
The intellectual property (content in the data folder) is licensed under Attribution-ShareAlike. An example attribution by changing the content:
This work is based on the OWASP DevSecOps Maturity Model.
The OWASP DevSecOps Maturity Model and any contributions are Copyright © by Timo Pagel 2017-2022.