Definitive Guide To DevSecOps
Definitive Guide To DevSecOps
Introduction 4
Key Statistics 5
DevSecOps Challenges 12
DevSecOps Initiatives 15
Software represents the largest under addressed attack surface that organizations face.
The current threat environment, coupled with the drive to deliver applications faster, compels
organizations to integrate security throughout the software development lifecycle in ways
that don’t degrade developer productivity. This relatively nascent practice is formally known
as DevSecOps.
Key Statistics
Within the context of software development pipelines, DevSecOps aims to “shift security left”,
which essentially means as early as possible in the development process. Quite frankly, it
involves integrating security practices and tools into the development pipeline from the very
beginning. By doing so, security becomes an integral part of the software development process
rather than a late-stage add-on.
This approach makes it significantly easier for organizations to identify and resolve security
vulnerabilities early on, and meet regulatory obligations. It’s also important to note that
DevSecOps is built upon a culture of collaboration and shared responsibility. It breaks down
silos and encourages cross-functional teams to work together towards a common goal of
building more secure applications at high velocity.
• Development Teams: Dev teams are responsible for writing code, designing software
architecture, and implementing new features. In DevSecOps, dev teams need to embrace
security as an integral part of their work. They should understand and follow secure coding
practices, conduct code reviews, and integrate security testing into their processes. By
incorporating security from the beginning, dev teams can minimize vulnerabilities and
ensure that the software is built with security in mind.
• Security Teams: Application security teams, more commonly referred to as AppSec, are
responsible for identifying and mitigating software and infrastructure security risks and
ensuring compliance with industry standards and regulations. In DevSecOps, security
teams collaborate closely with developers to provide guidance on secure coding practices,
perform security assessments, and conduct penetration testing. They also help in
defining security policies, monitoring environments and systems for potential threats, and
responding to security incidents.
• Operations Teams: Operations teams at large are responsible for deploying, managing, and
maintaining the software in production environments. With traditional DevOps, essentially
IT operations support developers with pipelines and tooling, along with the underlying
infrastructure resources. In DevSecOps, Ops works closely with development and security
teams to ensure that the software is deployed securely and that proper security controls
are in place. They collaborate on infrastructure design, configuration management, and
continuous monitoring of systems for any security vulnerabilities or anomalies. Operations
teams also play a critical role in incident response and recovery in case of security
breaches or system failures.
• Management and Leadership: Management and leadership teams have a vital role in
driving the adoption of DevSecOps practices within the organization. They set the vision,
allocate resources, and establish a culture of security and collaboration. Management
teams need to prioritize security initiatives, provide training and education on security best
practices, and ensure that security is integrated into the organization’s overall strategy.
They also play a crucial role in fostering communication and collaboration between different
teams and departments.
As you can see, the list of stakeholders is quite long. Though it’s ideal for collaboration, getting
all of these teams together is not easy. Each stakeholder group has their own set of agendas
and direction to comply with, and sometimes these goals conflict with those of the teams they
need to work with. This is just one of a few notable challenges that organizations experience
when building and maintaining a meaningful DevSecOps process. We’ll cover these issues in
more detail in the next section.
If your organization builds, sells, or consumes software (which today is practically every
conceivable organization on the planet ), then every single employee has an impact on the
overall security posture– not just those with ‘security’ in their titles. At its core, DevSecOps
is a culture of shared responsibility, and operating with a common security-oriented mindset
determines how well DevSecOps processes fit into place and drive better decision making
when choosing DevOps platforms, tooling, and individual security solutions.
Mindsets don’t change overnight, but alignment and a sense of security accountability can be
achieved through the following:
• Defining and agreeing upon a set of measurable security objectives, such as mean time to
remediation and % reduction in CVE alert noise.
• Involvement from software developers and DevOps teams throughout the evaluation and
procurement processes for new security tools
• Iteratively optimizing tooling choices and security practices for developer productivity
and velocity
Shifting security left successfully starts with the integration and orchestration of different
types of security scanners throughout development pipelines. There are several categories of
application security tests that DevSecOps teams need to adopt and employ in order to catch
and remediate vulnerabilities throughout the software development lifecycle. The techniques
employed by each type of security scanner are complimentary. Combined, they are very
effective in surfacing known security issues before an application hits production.
Static application security testing (SAST) involves analyzing application source code to detect security
vulnerabilities that could potentially be exploited. SAST is applied early in the SLDC, prior to code being
compiled. SAST scanners should be run on code on a regular basis, such as during periodic builds, at
each code check-in, or during a code release. Catching and fixing vulnerabilities in the code base at an
early stage has a dramatic impact on the quality and security posture of the final application.
SCA tools are used to identify open source software within a code base, for the purpose of evaluating
security, license compliance and overall code quality. As the vast majority of modern applications are built
with open source software components, it is very important to be aware not only of the inherent security
risks associated with a particular artifact, but also of licensing considerations regarding the use of that
artifact or library.
Container Scanning
A rapidly-growing number of modern applications are built as collections of small composable elements
called containers. A container packages up a short piece of code– the container image– along with all of
its dependencies, binaries, and libraries. Container scanning tools are purpose built to analyze containers
and their contents for known security issues.
Dynamic application security testing involves analyzing running applications. This methodology applies
mainly to web applications and services and is used to find run-time vulnerabilities and environment-
related issues. DAST scanners are run in later pipeline stages prior to deployment.
With that said, let’s take a look at the critical capabilities DevSecOps teams are responsible for
achieving.
In the context of CI and CD pipelines, the best approach to establishing open source
governance is through policy-as-code based on the Open Policy Agent (OPA) standard.
A good start to policy-based open source governance is to define rules for allowing or denying
the use of OSS components based on criteria such as supplier, version, PURL (package URL),
and license.
DevSecOps teams may create policies to block the use of a specific version of a component
because it has known vulnerabilities or does not meet their organization’s security standards. In
this case, they can add that version of the component to the deny list, and any attempts to use
it within the organization will be blocked.
Additionally, customers may want to block components from specific suppliers if they have had
a history of security issues or if they do not meet their organization’s compliance requirements.
By specifying the supplier in the deny list, the customer can prevent any components from
that supplier from being used within their organization. Or customers may want to block a
component if it’s not coming from a specific supplier.
The deny list is an important tool for customers to ensure the security and compliance of their
organization by preventing the use of components that do not meet their standards.
Similarly, DevSecOps teams can define policies to allow the use of specific OSS artifacts that
are approved by virtue of the fact they come from trusted suppliers, are contained in specific
package types, and have safe licenses.
Making a decision whether to trust software is possible once provenance– the record of a
software’s origins and chain of custody– can be verified. SLSA gives software-producing
organizations the ability to capture information about any aspect of the SW chain, to verify
properties of artifacts and their build, and to reduce risk of security issues.
In practice, it is essential for software producing organizations to adopt and adhere to the
SLSA framework requirements and implement a means of verifying and generating software
attestations which are authenticated statements (metadata) about software artifacts
throughout their software supply chains.
Supply-chain Levels for Software Artifacts (SLSA) is a set of incrementally adoptable guidelines for
supply chain security, established by industry consensus. The specification set by SLSA is useful for both
software producers and consumers: producers can follow SLSA’s guidelines to make their software supply
chain more secure, and consumers can use SLSA to make decisions about whether to trust a software
package.The SLSA framework offers:
• A way to secure your incoming supply chain by evaluating the trustworthiness of the artifacts
you consume
• A way to measure your efforts toward compliance with Executive Order 14028 standards
• Supplier Name
The name of an entity that creates, defines, and identifies components
• Component Name
Designation assigned to a unit of software defined by the original supplier
• Dependency Relationship
Characterizing the relationship that an upstream component X is included in software Y
• Timestamp
Record of the date and time of the SBOM data assembly
*source: https://www.ntia.doc.gov/files/ntia/publications/sbom_minimum_elements_report.pdf
Different industry standards have emerged for creating SBOMs, with CycloneDX and Software
Package Data Exchange (SPDX) being the most prominent. CycloneDX is a lightweight software
bill of materials (SBOM) standard designed by OWASP for use in application security contexts
and supply chain component analysis. Software Package Data Exchange (SPDX) is an open
standard by The Linux Foundation for communicating software bill of materials information,
including provenance, license, security, and other related information. The significance of
SBOMs has been further underlined by Executive Order 14028, pushing it to the forefront of
cybersecurity discussions.
Issued by The White House in May, 2021, Executive Order 14028 aims to bolster the nation’s cybersecurity
infrastructure. A key focus of this order is enhancing software supply chain security, and SBOMs
have been highlighted as a critical tool in this context. The order has accelerated the adoption and
standardization of SBOMs, pushing organizations to implement robust SBOM management practices.
• Transparency: Provides full visibility into the components in use and their metadata
• Security: Enables swift response to new vulnerabilities by precisely identifying impacted components
SBOMs have a life cycle of their own, throughout which they need to be generated, updated, verified,
and signed. Typically, an SBOM is first generated within the build phase, where much of the critical
data for a reliable detailed SBOM exists. Updates can happen frequently; for example, scanning
software dependencies recursively after a build may require changes to the SBOM. Ultimately, lifecycle
management needs to be automated and easily orchestrated across software development pipelines
without slowing down developers as they build their applications.
• Generation and attestation of SLSA Level-2 provenance with Harness CI hosted builds
Follow us on Contact us on
/harnessio www.harness.io
/harnessinc