DevOps culture makes things happen faster. Faster delivery, faster testing, faster release. On one hand, it adds control over what is going on in the infrastructure. You can recover faster. You can redeploy your compromised app components. You can roll back to the previous build. On the other hand, fast changes mean fast decisions. Some security vulnerabilities can pass through automatic testing. Some DevOps tools may be compromised also. We experienced a security issue when malware infected Jenkins server of one of our clients and deployed cryptocurrency mining software on all available hosts.
Why should organizations integrate security into DevOps?
Flexibility comes at a price of constant changes. To control what is constantly changing we need to incorporate security as a process. The only way to make fast-paced software development secure is to integrate security into the whole delivery lifecycle. Architecture, infrastructure, development, build and deployment, testing, releasing, feedback gathering, support, and patching processes should include security as one of the main considerations.
What steps need to be taken to do this?
- Security experts are rare on the market. But you can start with defining people known as the Security Champions in every Scrum team. Those people will take responsibility for security during the development process.
- Second, you should insert the Threat Modeling process into your backlog refinement. This will help to model threats to the next release features and create tests for them.
- Based on the Threat Modeling you should create automatic test security gates and put them into the delivery pipeline.
- Also, Security Champions should include security questions into the code review procedure.
- Add continuous monitoring and continuous remediation processes to continuous integration, testing, and deployment.
What are the key DevSecOps principles and how do they help organizations improve security by design?
- Security is a process, not a result.
- The main purpose of security is to reduce risks to the business.
- DevOps improves the ability to change, DevSecOps improves our ability to control changes.
- The whole delivery process starting from the idea and ending in the production requires security.
- Every integration creates vulnerability.
- You cannot be safe, but you can be safe enough.
- Technology is not a panacea.
- A good feedback loop works better than good upfront planning.
- You cannot respond to what you don’t see. Logging is critical.
What is compliance as code, and how can it help organizations/teams?
One of the most common blockers on the path of security is that compliance requirements can be easily ignored. Compliance as a Code is a process of automating compliance checks and making compliance immutable through the delivery process. This helps to formalize the security requirements and guarantee that they will be checked. Except for the formal checks and finding errors, it also helps to build culture where everyone knows that security matters and will pay attention to it.
Where next for DevSecOps?
Modern software development changed a lot since DevOps became a thing. A combination of the iterative process, culture, and automation tools made software delivery a lot faster. This removed many limitations and made quantity become a new quality. In the nearest future, I expect DevSecOps to include more and more additional practices in it. For example, in Ciklum we created a Center of Excellence called “Quality of Engineering” which includes DevOps, QA Automation, Penetration testing, Performance Testing, and Support combined. This allows us to cover all aspects of the software quality and shorten feedback loops between all stakeholders.