DevOps Blog

Stay in the know with in-depth articles about DevOps, micro-services and cloud native topics, delivered to you weekly.

From DevOps to DevSecOps: Securing the CI/CD Pipeline

Written by Marius Rimkus
on March 24, 2020

In 2001, the Agile Manifesto was written. The goal behind the manifesto was to discover new ways of improving software development and helping others in the field. The manifesto promotes collaboration, healthy codebase, flexibility, and interactions. 

During the past decade, agile picked up and siloed waterfall methodologies lost their popularity. Today, we are seeing new work methodologies that impact not only software development, but many other aspects. DevOps and DevSecOps are two methodologies that merge different fields, for the purpose of improving the entire development cycle.

In this article, you will learn what DevOps is, how and why this methodology has led to DevSecOps, and how to implement DevSecOps in your organization.

 

What Is DevOps? 

DevOps is a software development methodology that integrates development and operations teams. It focuses on team collaboration and is designed to enable organizations to produce high-quality software more quickly and efficiently than before. Faster and more reliable releases increase the competitiveness of organizations and help them meet increasing customer demands. 

 

How Did DevOps Lead To DevSecOps?

The DevOps methodology is widely adopted and has become a standard in the software development industry. However, this methodology doesn’t solve all of the issues that software development teams face. 

For example, security teams need to be able to keep pace with the development lifecycle. With a DevOps approach, security testing and integration are still left until the end of the development process. This leads to teams having to fix bugs at the last minute and encourages teams to ignore security issues in favor of meeting deadlines. 

To address security correctly with a DevOps approach, DevSecOps was created. This methodology shifts security to the beginning of the development lifecycle, incorporating testing throughout. This shift ensures that products are secure from the start and reduces the chances that DevOps teams will need to redo completed work. 

 

Why Should You Make the Move to DevSecOps?

Software vulnerabilities are at the root of many security incidents and breaches; making software security key for any organization. The cost of recovering from a security incident is too great to ignore. Costs include not only lost work and time but regulatory fines and the loss of customer loyalty.  

With DevOps, security is a siloed team. Bugs are isolated at the end of the delivery process. To handle issues, teams may need to re-evaluate and re-run the entire development process. They may even need to re-architect a product, leading to significant delays. 

With DevSecOps, however, security is integrated, working alongside developers and operations from the start. This ensures that vulnerabilities are caught as early as possible and that code is secured throughout. It also increases the security of the pipeline itself since security plays a role in building out tooling. 

Key Elements of DevSecOps

There are several key elements to DevSecOps that you need to include for a successful implementation: 

  • Shifted left security—security is present from start to finish through the development process. This means that security measures, like functionality, are also a measure that needs to be met before a project can proceed. 
  • Continuous feedback—DevOps already uses continuous feedback and this is extended to DevSecOps. As security issues are uncovered, information is returned to development and operations members. Additionally, tooling is often incorporated that provides immediate feedback on secure coding practices from within integrated development environments (IDE).
  • Automated security—like continuous feedback, automation is also extended to security. This is often done in the form of testing or in utilities used to protect applications post-deployment. Tools typically include features for code analysis, monitoring, training, and threat investigation.
  •  

How to Implement DevSecOps in Your Organization

Once you’re ready to begin implementing DevSecOps, there are a few aspects to prioritize. 

Integrate during the planning phase

Trying to integrate security in the middle of an iteration or project is less likely to be successful and more likely to slow you down. Instead, begin the integration during the planning phase. This enables security members to better understand the goals of the sprint and to supply input before any work is done. 

Automate security tests

Security testing is often one of the most time-consuming aspects of DevOps automation. By automating tests, you can ensure that tests are run in a timely manner and eliminate bottlenecks. You can also ensure that security feedback is provided in a uniform way, similar to feedback for functionality or compatibility testing.

There are several tools you can use to implement this automation:

  • Static application security testing (SAST)—analyzes source code and helps identify vulnerabilities line by line. Identifying vulnerabilities by line helps speed correction times since developers don’t need to track down issues. These tools can also help developers identify insecure patterns in code and help reinforce secure coding practices. 
  • Dynamic application security testing (DAST)—analyzes applications during runtime with no access to source code. These tools can help development and operations members identify configuration and interface issues. Automating these tools enables teams to test a wide variety of environmental conditions with minimal extra effort. 
  • Runtime application self-protection (RASP)—provides real-time protections for applications after deployment. These tools can help teams ensure that even if issues were missed, applications remain secure. RASP tools can also provide feedback to teams on issues that need to be corrected in future releases. 

Cross-training

A significant factor in the success of DevOps or DevSecOps teams is communication. If team members do not understand the goals and methods of others, work cannot progress smoothly. To foster this understanding, you need to set aside time for cross-training. During this time, members should explain their workflows, tooling, and skill sets so overlaps and gaps can be identified and improved upon.

As part of this training, it is important to remember that developers and operations teams are not security experts. They do not necessarily understand which practices are insecure or the risks of creating code in a certain way. At the same time, security may have no understanding of how security measures or practices affect the performance of applications and workflows. To correct this, you should ensure that all members have at least a basic understanding of how each others’ work is performed. 

Conclusion

DevOps was initially created to enable fast product release. However, many experts in the field soon realized that forgoing security for the sake of fast release can threaten networks, systems, and users. To ensure proper security measures are applied throughout the cycle, DevSecOps was created. This methodology adops security into the process, eliminating bottlenecks and ensuring the health of the systems and networks at all times.