DoD Enterprise DevSecOps Reference Design V1.0
DoD Enterprise DevSecOps Reference Design V1.0
Version 1.0
12 August 2019
i
UNCLASSIFIED
UNCLASSIFIED
Document Approvals
Prepared By:
MAXIME.1535056524 4
Date: 2019.09.05 12:01:37 -04'00'
________________________________________________________
Nicolas Chaillan
Special Advisor for Cloud Security and DevSecOps
Department of Defense, Office the Undersecretary of Acquisition and Sustainment (A&S)
(currently: Chief Software Officer, Department of Defense, United States Air Force, SAF/AQ)
Approved By:
ii
UNCLASSIFIED
UNCLASSIFIED
Trademark Information
Names, products, and services referenced within this document may be the trade names,
trademarks, or service marks of their respective owners. References to commercial vendors and
their products or services are provided strictly as a convenience to our readers, and do not
constitute or imply endorsement by the Department of any non-Federal entity, event, product,
service, or enterprise.
iii
UNCLASSIFIED
UNCLASSIFIED
Executive Summary
Legacy software acquisition and development practices in the DoD do not provide the agility to
deploy new software “at the speed of operations”. In addition, security is often an afterthought,
not built in from the beginning of the lifecycle of the application and underlying infrastructure.
DevSecOps is the industry best practice for rapid, secure software development.
DevSecOps is an organizational software engineering culture and practice that aims at unifying
software development (Dev), security (Sec) and operations (Ops). The main characteristic of
DevSecOps is to automate, monitor, and apply security at all phases of the software lifecycle:
plan, develop, build, test, release, deliver, deploy, operate, and monitor. In DevSecOps, testing
and security are shifted to the left through automated unit, functional, integration, and security
testing - this is a key DevSecOps differentiator since security and functional capabilities are
tested and built simultaneously.
The benefits of adopting DevSecOps include:
• Reduced mean-time to production: the average time it takes from when new software
features are required until they are running in production;
• Increased deployment frequency: how often a new release can be deployed into the
production environment;
• Fully automated risk characterization, monitoring, and mitigation across the application
lifecycle;
• Software updates and patching at "the speed of operations".
This DoD Enterprise DevSecOps Reference Design describes the DevSecOps lifecycle,
supporting pillars, and DevSecOps ecosystem; lists the tools and activities for DevSecOps
software factory and ecosystem; introduces the DoD enterprise DevSecOps container service that
provides hardened DevSecOps tools and deployment templates to the program application
DevSecOps teams to select; and showcases a sampling of software factory reference designs and
application security operations. This DoD Enterprise DevSecOps Reference Design provides
implementation and operational guidance to Information Technology (IT) capability providers,
IT capability consumers, application teams, and Authorizing Officials.
iv
UNCLASSIFIED
UNCLASSIFIED
Table of Contents
1 Introduction ......................................................................................................................... 10
1.1 Background ................................................................................................................... 10
1.2 Purpose .......................................................................................................................... 11
1.3 Scope .............................................................................................................................. 11
1.4 Document Overview ..................................................................................................... 12
2 Assumptions and Principles................................................................................................ 13
2.1 Assumptions .................................................................................................................. 13
2.2 Principles ....................................................................................................................... 13
3 DevSecOps Concepts ........................................................................................................... 15
3.1 Key Terms ..................................................................................................................... 15
3.1.1 Conceptual Model ................................................................................................... 18
3.2 DevSecOps Lifecycle .................................................................................................... 18
3.3 DevSecOps Pillars ........................................................................................................ 19
3.3.1 Organization............................................................................................................ 20
3.3.2 Process .................................................................................................................... 21
3.3.3 Technology ............................................................................................................. 23
3.3.4 Governance ............................................................................................................. 23
3.3.4.1 Management Structure ..................................................................................... 23
3.3.4.2 Authorizing Official ........................................................................................ 25
3.4 DevSecOps Ecosystem.................................................................................................. 26
3.4.1 Planning .................................................................................................................. 27
3.4.2 Software Factory ..................................................................................................... 28
3.4.3 Operations ............................................................................................................... 29
3.4.4 External Systems ..................................................................................................... 29
4 DevSecOps Tools and Activities ......................................................................................... 31
4.1 Planning Tools and Activities ...................................................................................... 31
4.2 Software Factory Tools and Activities ....................................................................... 34
v
UNCLASSIFIED
UNCLASSIFIED
vi
UNCLASSIFIED
UNCLASSIFIED
vii
UNCLASSIFIED
UNCLASSIFIED
List of Figures
Figure 1: Containers ................................................................................................................... 17
Figure 2: Conceptual Model ...................................................................................................... 18
Figure 3: DevSecOps Software Lifecycle .................................................................................. 19
Figure 4: DevSecOps Pillars ...................................................................................................... 20
Figure 5: Application DevSecOps Processes ............................................................................ 22
Figure 6: Five Principles of Next Generation Governance ..................................................... 25
Figure 7: Assessment and Authorization Inheritance ............................................................. 26
Figure 8: DevSecOps Ecosystem................................................................................................ 27
Figure 9: DevSecOps Software Factory .................................................................................... 28
Figure 10: DoD Enterprise DevSecOps Container Service Architecture .............................. 57
Figure 11: Major Steps in the Container Hardening Process................................................. 58
Figure 12: Containerized Software Factory Reference Design .............................................. 62
Figure 13: DevSecOps Platform Options .................................................................................. 63
Figure 14: Software Factory Phases in the Application Lifecycle .......................................... 64
Figure 15: Software Factory using Cloud DevSecOps Services ............................................. 66
Figure 16: Operational Efficiency ............................................................................................. 67
Figure 17: Logging and Log Analysis Process ......................................................................... 70
Figure 18: Sidecar Pattern ......................................................................................................... 71
Figure 19: Sidecar Components ................................................................................................ 72
Figure 20: Sidecar Container Security Stack Interactions ..................................................... 74
Figure 21: Hypervisor with Virtual Machines ......................................................................... 84
viii
UNCLASSIFIED
UNCLASSIFIED
List of Tables
Table 1: Key Terms .................................................................................................................... 15
Table 2: Roles of Authorizing Officials in DevSecOps ............................................................ 26
Table 3: Plan Phase Tools .......................................................................................................... 31
Table 4: Plan Phase Activities .................................................................................................... 33
Table 5: CI/CD Orchestrator ..................................................................................................... 35
Table 6: Develop Phase Tools .................................................................................................... 36
Table 7: Develop Phase Activities .............................................................................................. 37
Table 8: Build Phase Tools ......................................................................................................... 38
Table 9: Build Phase Activities .................................................................................................. 39
Table 10: Test Phase Tools ......................................................................................................... 40
Table 11: Test Phase Activities .................................................................................................. 43
Table 12: Release and Deliver Phase Tools .............................................................................. 45
Table 13: Release and Deliver Phase Activities ........................................................................ 46
Table 14: Deploy Phase Tools .................................................................................................... 47
Table 15: Deploy Phase Activities ............................................................................................. 48
Table 16: Operate Phase Tools .................................................................................................. 50
Table 17: Operate Phase Activities ........................................................................................... 50
Table 18: Monitor Phase Tools .................................................................................................. 51
Table 19: Monitor Phase Activities ........................................................................................... 52
Table 20: Security Activities Summary .................................................................................... 53
Table 21: Configuration Management Activities Summary ................................................... 54
Table 22: Database Management Activities Summary ........................................................... 56
Table 23: Sidecar Container Security Stack Components ...................................................... 72
ix
UNCLASSIFIED
UNCLASSIFIED
1 Introduction
1.1 Background
DevSecOps is an organizational software engineering culture and practice that aims at unifying
software development (Dev), security (Sec) and operations (Ops). The main characteristic of
DevSecOps is to improve customer outcomes and mission value by automating, monitoring, and
applying security at all phases of the software lifecycle: plan, develop, build, test, release,
deliver, deploy, operate, and monitor. Practicing DevSecOps provides demonstrable quality and
security improvements over the traditional software lifecycle, which can be measured with these
metrics:
• Mean-time to production: the average time it takes from when new software features are
required until they are running in production.
• Average lead-time: how long it takes for a new requirement to be delivered and deployed.
• Deployment speed: how fast a new version of the application can be deployed into the
production environment.
• Deployment frequency: how often a new release can be deployed into the production
environment.
• Production failure rate: how often software fails during production.
• Mean-time to recovery: how long it takes applications in the production stage to recover
from failure.
In addition, DevSecOps practice enables:
• Fully automated risk characterization, monitoring, and mitigation across the application
lifecycle.
• Software updates and patching at a pace that allows the addressing of security
vulnerabilities and code weaknesses.
DevSecOps practice enables application security, secure deployment, and secure operations in
close alignment with mission objectives. In DevSecOps, testing and security are shifted to the
left through automated unit, functional, integration, and security testing - this is a key
DevSecOps differentiator since security and functional capabilities are tested and built
simultaneously. In addition, some security features are automatically injected into the application
without developer intervention via a sidecar container.
10
UNCLASSIFIED
UNCLASSIFIED
1.2 Purpose
The main purpose of this document is to provide a logical description of the key design
components and processes to provide a repeatable reference design that can be used to instantiate
a DoD DevSecOps software factory.
The target audiences for this document include:
• DoD Enterprise DevSecOps capability providers who build DoD Enterprise DevSecOps
hardened containers and provide a DevSecOps hardened container access service
• DoD organization DevSecOps teams who manage (instantiate and maintain) DevSecOps
software factories and associated pipelines for its programs
• DoD program application teams who use DevSecOps software factories to develop,
secure, and operate mission applications
• Authorizing Officials (AOs)
The DoD Enterprise DevSecOps reference design leverages a set of hardened DevSecOps tools
and deployment templates that enable DevSecOps teams to select the appropriate template for
the program application capability to be developed. For example, these templates will be
specialized around a specific programming language or around different types of capabilities
such as web application, transactional, big data, or artificial intelligence (AI) capabilities. A
program selects a DevSecOps template and toolset; the program then uses these to instantiate a
DevSecOps software factory and the associated pipelines that enable Continuous Integration and
Continuous Delivery (CI/CD) of the mission application.
This reference design aligns with these reference documents:
• DoD Cloud Computing Strategy [1]
• DoD Cloud Computing Security Requirements Guide [2]
• DoD Secure Cloud Computing Architecture (SCCA) [3]
• Presidential Executive Order on Strengthening the Cybersecurity of Federal Networks
and Critical Infrastructure (Executive Order (EO) 1380) [4]
• National Institute of Standards and Technology (NIST) Cybersecurity Framework [5]
• DoD Container Hardening Security Requirements Guide [6].
1.3 Scope
This document describes the reference design to enable DevSecOps to scale across the
department. DevSecOps is an established mature capability in industry, and it is already used
within some pockets of the Government; this reference design formalizes its usage across the
11
UNCLASSIFIED
UNCLASSIFIED
DoD. This design is product agnostic and provides execution guidance for use by software
teams. It is applicable to developing new capabilities and to sustaining existing capabilities in
both business and weapons systems software, including business transactions, C2, embedded
systems, big data, and Artificial Intelligence (AI).
This document does not address policy or acquisition.
12
UNCLASSIFIED
UNCLASSIFIED
2.2 Principles
There are several key principles to implementing a successful DevSecOps approach:
• Remove bottlenecks (including human ones) and manual actions.
• Automate as much of the development and deployment activities as possible.
• Adopt common tools from planning and requirements through deployment and
operations.
13
UNCLASSIFIED
UNCLASSIFIED
• Leverage agile software principles and favor small, incremental, frequent updates over
larger, more sporadic releases.
• Apply the cross-functional skill sets of Development, Cybersecurity, and Operations
throughout the software lifecycle, embracing a continuous monitoring approach in
parallel instead of waiting to apply each skill set sequentially.
• Security risks of the underlying infrastructure must be measured and quantified, so that
the total risks and impacts to software applications are understood.
• Deploy immutable infrastructure, such as containers. The concept of immutable
infrastructure is an IT strategy in which deployed components are replaced in their
entirety, rather than being updated in place. Deploying immutable infrastructure requires
standardization and emulation of common infrastructure components to achieve
consistent and predictable results.
14
UNCLASSIFIED
UNCLASSIFIED
3 DevSecOps Concepts
DevSecOps describes an organization’s culture and practices enabling organizations to bridge
the gap between developers, security team, and operations team; improve processes through
collaborative and agile workflows; drive for faster and more secure software delivery via
technology; and achieve consistent governance and control. There is no uniform DevSecOps
practice. Each DoD organization needs to tailor its culture and its DevSecOps practices to its
own unique processes, products, security requirements, and operational procedures. Embracing
DevSecOps requires organizations to shift their culture, evolve existing processes, adopt new
technologies, and strengthen governance.
This section will briefly discuss the DevSecOps lifecycle, supporting pillars, and the DevSecOps
ecosystem.
Term Definition
CI/CD Pipeline The set of tools and the associated process workflows to
achieve continuous integration and continuous delivery with
build, test, security, and release delivery activities, which
are steered by a CI/CD orchestrator and automated as much
as practice allows.
15
UNCLASSIFIED
UNCLASSIFIED
Term Definition
CI/CD Pipeline Instance A single process workflow and the tools to execute the
workflow for a specific software language and application
type for a project. As much of the pipeline process is
automated as is practicable.
16
UNCLASSIFIED
UNCLASSIFIED
Term Definition
Containers A standard unit of software that packages up code and all its
dependencies, down to, but not including the Operating
System (OS). It is a lightweight, standalone, executable
package of software that includes everything needed to run
an application except the OS: code, runtime, system tools,
system libraries and settings.
Several containers can run in the same OS without
conflicting with one another.
Figure 1: Containers
Containers run on the OS, so no hypervisor (virtualization)
is necessary (though the OS itself may be running on a
hypervisor).
Containers are much smaller than a VM, typically by a
factor of 1,000 (MB vs GB), partly because they don’t need
to include the OS. Using containers allows denser packing
of applications than VMs.
Unlike VMs, containers are portable between clouds or
between clouds and on-premise servers. This helps alleviate
Cloud Service Provider (CSP) lock-in, though an
application may still be locked-in to a CSP, if it uses CSP-
specific services.
Containers also start much faster than a VM (seconds vs.
minutes), partly because the OS doesn’t need to boot.
17
UNCLASSIFIED
UNCLASSIFIED
18
UNCLASSIFIED
UNCLASSIFIED
each phase.
19
UNCLASSIFIED
UNCLASSIFIED
3.3.1 Organization
The organization should embrace the following philosophies and ideas and incorporate them into
their daily activities and software lifecycle management processes.
• Change the organizational culture to take a holistic view and share the responsibility of
software development, security and operations. Train staff with DevSecOps concepts and
new technologies. Gradually gain buy-in from all stakeholders.
• Break down organizational silos. Increase the team communication and collaboration in
all phases of the software lifecycle.
• Actionable security and quality assurance (QA) information, such as security alerts or
QA reports, must be automatically available to the teams at each software lifecycle phase
to make collaborative actions possible.
20
UNCLASSIFIED
UNCLASSIFIED
• Build a culture of safety by sharing after-action reports on both positive and negative
events across the entire organization. Teams should use both success and failure as
learning opportunities to improve the system design, harden the implementation, and
enhance the incident response capability as part of the DevSecOps practice.
• Make many small, incremental changes instead of fewer large changes. The scope of
smaller changes is more limited and thus easier to manage.
• Embrace feedback and user driven change to respond to new, emerging, and unforeseen
requirements.
• Plan and budget for continuous code refactoring to ensure constant buy down of
accumulated technical debt.
3.3.2 Process
Depending on the mission environment, system complexity, system architecture, software design
choices, risk tolerance level, and system maturity level, each program’s software lifecycle has its
own unique management processes.
For example, suppose a mature web application software system has adopted a microservices
design. Its development, pre-production, and production environment are on the same cloud. The
test procedures are fully automated. This system could have a process flow to automate the
develop, build, test, secure, and delivery tasks to push updates into production quickly without
human intervention. On the other hand, a complex mission critical embedded system, such as a
weapons system, may have a different process that requires some tests that cannot be fully
automated. The software lifecycle process for that system will be significantly different from the
process for the web application system.
To adopt a DevSecOps process successfully, implement it in multiple, iterative phases. Start
small with some tasks that are easy to automate, then gradually build up the DevSecOps
capability and adjust the processes to match. Figure 5 illustrates this concept; it shows that a
software system can start with a Continuous Build pipeline, which only automates the build
process after the developer commits code. Over time, it can then progress to Continuous
Integration, Continuous Delivery, Continuous Deployment, Continuous Operation, and finally
Continuous Monitoring, to achieve the full closed loop of DevSecOps. A program could start
with a suitable process and then grow progressively from there. The process improvement is
frequent, and it responds to feedback to improve both the application and the process itself.
21
UNCLASSIFIED
UNCLASSIFIED
22
UNCLASSIFIED
UNCLASSIFIED
To help organizations evolve their DevSecOps capabilities and processes, the DoD has
developed a DevSecOps Maturity Model. This model details many steps that organizations can
take to move incrementally towards a higher DevSecOps maturity level. That maturity model is
presented in the DoD DevSecOps Playbook [7].
3.3.3 Technology
Many DevSecOps tools automate many tasks in the software lifecycle without human
involvement. Other DevSecOps tools, such as collaboration and communication tools, facilitate
and stimulate human interaction to improve productivity. Some DevSecOps tools aim to help an
activity at a specific lifecycle phase. For example, an Integrated Development Environment
(IDE) DevSecOps plug-in for develop phase, or a static application security test tool for the build
phase. Most tools assist a particular set of activities. The tags added to artifacts in the artifact
repository help guarantee that the same set of artifacts move together along a pipeline. Section 4
will introduce a variety of DevSecOps tools.
The instantiation of the DevSecOps environments can be orchestrated from configuration files
instead of setting up one component at a time manually. The infrastructure configuration files,
the DevSecOps tool configuration scripts, and the application run-time configuration scripts are
referred to as Infrastructure as Code (IaC). Taking the same approach as IaC, security teams
program security policies directly into configuration code, as well as implement security
compliance checking and auditing as code, which are referred as Security as Code (SaC). Both
IaC and SaC are treated as software and go through the rigorous software development processes
including design, development, version control, peer review, static analysis, and test.
Technologies and tools play a key role in DevSecOps practice to shorten the software lifecycle
and increase efficiency. They not only enable software production automation as part of a
software factory, but also allow operations and security process orchestration.
3.3.4 Governance
Governance actively assesses and manages the risks associated with the mission program
throughout the lifecycle. Governance activities do not stop after ATO but continue throughout
the software lifecycle, including operations and monitoring. DevSecOps can facilitate and
automate many governance activities.
3.3.4.1 Management Structure
The management objective of DevSecOps must be both “top-down” and “bottom-up” to balance
larger strategic goals. Studies (e.g., [8]) have shown that senior leader buy-in is crucial for
success. But buy-in at the staff level is also important to engender a sense of ownership, to
encourage the appropriate implementation of processes related to governance, and to enable team
members to support continuous process improvement. Continuous process improvement –
seeking opportunities to simplify and automate whenever and wherever possible – is essential for
governance to keep pace with a rapidly changing world.
23
UNCLASSIFIED
UNCLASSIFIED
Early DevSecOps efforts in the DoD, such as [9] have leveraged and adopted commercial best
practices. That document identifies Five Fundamental Principles of Next Generation Governance
(NGG):
1. Run IT with Mission Discipline: Tie requirements back to your organization’s mission. Every
action should be aligned to the mission. If they are not, then an evaluation should be
performed with Continuous Process Improvement to address how to tie actions to missions.
2. Invest in Automation: Automate everything possible, including actions, business processes,
decisions, approvals, documentation, and more. Automation, including designs, interfaces,
functional and security tests, and their related documentation, create the Artifacts of Record
that provide the body of evidence required by the Risk Management Framework (RMF) and
for historical audits when needed.
3. Embrace Adaptability: Accept that change can be required at any time, and all options are
available to achieve it. Fail fast, fail small, and fail forward. An example of failing forward is
when a developer finds that a release does not work. Then instead of restoring the server to
its pre-deployment state with the previous software, the developer’s change should be
discrete enough that they can fix it and address the issue through a newer release.
4. Promote Transparency: Offer open access across the organization to view the activities
occurring within the automated process and to view the auto-generated Artifacts of Record.
Transparency generates an environment for sharing ideas and developing solutions
comprised of Subject Matter Experts (SMEs) or leads from across the enterprise in the form
of cross-functional teams to avoid the “silo effect.” When composed of all representative
stakeholders, the team possesses the skills needed to build a mission system and the
collective ingenuity necessary to overcome all encountered challenges.
5. Inherent Accountability: Push down or delegate responsibility to the lowest level:
• Strategic: This is related to the Change Control Board (CCB) or Technical Review Board
(TRB); it involves “Big Change” unstructured decisions. These infrequent and high-risk
decisions have the potential to shape the strategy and mission of an organization.
• Operational: (Various Scrum) Cross-cutting, semi-structured decisions. In these frequent
and high-risk decisions, a series of small, interconnected decisions are made by different
groups as part of a collaborative, end-to-end decision process.
• Tactical: (Global Enterprise Partners (GEP)/Product Owner/Developers Activities)
Delegated, structured decisions. These frequent and low-risk decisions are effectively
handled by an individual or working team, with limited input from others.
These 5 principles are summarized in Figure 6, which is from [9].
24
UNCLASSIFIED
UNCLASSIFIED
25
UNCLASSIFIED
UNCLASSIFIED
area or the local AO for the program has cognizance for Continuous Authorization of the
environment. Figure 7 illustrates the A&A inheritance.
The specialty AO for the functional area or the local AO for the program has cognizance for
Continuous Authorization of the mission applications.
26
UNCLASSIFIED
UNCLASSIFIED
3.4.1 Planning
The plan phase involves activities that help the project manage time, cost, quality, risk and
issues. These activities include business-need assessment, project plan creation, feasibility
analysis, risk analysis, business requirements gathering, business process creation, system
design, DevSecOps design and ecosystem instantiation, etc. The plan phase repeats when
DevSecOps the lifecycle recycles. It is a best practice to develop a minimum viable product
(MVP) for critical business needs as the first thing to develop. Then get into the feedback loop
process as quickly as possible; this is recommended in the Lean Startup methodology [11]. The
DevSecOps design creates the DevSecOps processes and control gates, which will guide the
automation throughout the lifecycle. DevSecOps ecosystem tools will facilitate process
automation and consistent process execution.
The DevSecOps planning subsystem supports the activities in the plan phase using a set of
communication, collaboration, project management, and change management tools. In this
phase, the process workflows are not fully automated. The planning tools assist human
interaction and increase team productivity.
27
UNCLASSIFIED
UNCLASSIFIED
28
UNCLASSIFIED
UNCLASSIFIED
repository. In addition, it performs tests in the development and test environments, such as unit
tests, static code analysis, functional tests, interface tests, dynamic code analysis, etc. The
subsystems that pass CI assembly line control gate policies will move into the pre-production
environment for systems integration. The CD assembly line takes over control from this point.
More tests and security scans are performed in this environment, such as performance tests,
acceptance test, security compliance scan, etc. The CD assembly line releases and delivers the
final product package to the released artifact repository if the control gate policies are met.
Developing applications using a DevSecOps software factory provides many benefits:
• Improved software product consistency and quality
• Shortened time to market and increased productivity
• Simplified governance
3.4.3 Operations
In the production environment, the released software is pulled from the released artifact
repository and deployed. Operations, operation monitoring, and security monitoring are
performed. Production operation tools aim to streamline and automate the deployment,
operations, and monitoring activities. Tools should be selected based on system functional
requirements and their suitability for the production environment infrastructure.
29
UNCLASSIFIED
UNCLASSIFIED
The DevSecOps ecosystem interacts with the enterprise AO for the initial software factory ATO
and initial application ATO, as well as the local AO for continuous ATO for the application.
30
UNCLASSIFIED
UNCLASSIFIED
31
UNCLASSIFIED
UNCLASSIFIED
32
UNCLASSIFIED
UNCLASSIFIED
The activities supported by the plan phase are listed in Table 4. Some activities are suitable at
enterprise or program level, such as DevSecOps ecosystem design, project team onboarding
planning, and change management planning. Others fit at the project level and are considered
continuous in the DevSecOps lifecycle.
Table 4: Plan Phase Activities
Activities Description Inputs Outputs Tool
Dependencies
DevSecOps Design the - Change DevSecOps process Team
ecosystem design DevSecOps process management flow chart; collaboration
workflows that are process; DevSecOps ecosystem system
specific to this project - System design; tool selection;
- Release plan & Deployment platform
schedule. selection
Project team Plan the project team Organization policy Onboarding plan Team
onboarding onboarding process, collaboration
planning interface, access system
control policy
Change Plan the change - Organizational Change control Team
management control process policy; procedures; collaboration
planning - Software Review procedures; system;
development best Control review board; Issue tracking
practice. change management system
plan
Configuration Plan the configuration - Software CM processes and plan; Team
management control process; development, CM tool selection; collaboration
(CM) planning Identify configuration security and Responsible system;
items operations best configuration items; Issue tracking
practice; system
- IT infrastructure Tagging strategy
asset;
- Software system
components.
Software Gather the - Stakeholder inputs -Feature requirements Team
requirement requirements from all or feedback; -Performance collaboration
analysis stakeholders - Operation requirements system;
monitoring -Privacy requirements Issue tracking
feedback; -Security requirements system
- Test feedback.
System design Design the system Requirements Documents: Team
based the documents -System architecture collaboration
requirements -Functional design system;
-Data flow diagrams Issue tracking
-Test plan system
-Infrastructure Software system
configuration plan design tools
-Tool selections
-Development tool
-Test tool
-Deployment platform
33
UNCLASSIFIED
UNCLASSIFIED
34
UNCLASSIFIED
UNCLASSIFIED
Orchestrator automates the pipeline workflow by validating the stage control rules. If all the
entrance rules of a stage are met, the Orchestrator will transition the pipeline into that stage and
perform the defined activities by coordinating the tools via plugins. If all the exit rules of the
current stage are met, the pipeline exits out the current stage and starts to validate the entrance
rules of the next stage.
Table 5 shows the features, benefits, and inputs and outputs of the CI/CD Orchestrator.
Table 5: CI/CD Orchestrator
Tool Features Benefits Inputs Outputs Baseline
CI/CD Create pipeline Customizable Human input about: Pipeline workflow MVP
Orchestrator workflow pipeline • A set of stages configuration
solution • A set of event
triggers
• Each stage
entrance and exit
control gate
• Activities in each
stage
Orchestrate Automate the Event triggers (such as Pipeline workflow
pipeline CI/CD tasks; code commit, test execution results
workflow Auditable trail results, human input, (such as control
execution by of activities etc.); gate validation,
coordinating Artifacts from the stage transition,
other plugin artifact repository activity execution,
tools or scripts. etc.);
Event and activity
audit logs
4.2.2 Develop
The Develop phase uses tools to support the development activities that convert requirements
into source code. the source code includes application code, test scripts, Infrastructure as Code,
Security as Code, DevSecOps workflow scripts, etc. The development team may rely on a single
modern integrated development environment (IDE) for multiple programming language support.
The IDE code assistance feature aids developers with code completion, semantic coloring, and
library management to improve coding speed and quality. The integrated compiler, interpreter,
lint tools, and static code analysis plugins can catch code mistakes and suggest fixes before
developers check code into the source code repository. Source code peer review or pair
programming are other ways to ensure code quality control. All the code generated during
development must be committed to the source code repository and thus version controlled.
Committed code that breaks the build should be checked in on a branch and not merged into the
trunk until it is fixed.
The following tables list the components that facilitate code development, along with their inputs
and outputs.
35
UNCLASSIFIED
UNCLASSIFIED
36
UNCLASSIFIED
UNCLASSIFIED
37
UNCLASSIFIED
UNCLASSIFIED
4.2.3 Build
The build tools perform the tasks of building and packaging applications, services, and
microservices into artifacts. For languages like C++, building starts with compiling and linking.
The former is the act of turning source code into object code and the latter is the act of
combining object code with libraries to create an executable file. For Java Virtual Machine
(JVM) based languages, building starts with compiling to class files, then building a compressed
file such as a jar, war or ear file, which includes some metadata, and may include other files such
as icon images. For interpreted languages, such as Python or JavaScript, there is no need to
compile, but lint tools help to check for some potential errors such as syntax errors. Building
should also include generating documentation, such as Javadoc, copying files like libraries or
icons to appropriate locations, and creating a distributable file such as a tar or zip file. The build
script should also include targets for running automated unit tests.
Modern build tools can also be integrated into both an IDE and a source code repository to
enable building both during development and after committing. For those applications that use
containers, the build stage also includes a containerization tool.
The following tables list build-related tools along with their inputs and outputs.
Table 8: Build Phase Tools
Tool Features Benefits Inputs Outputs Baseline
Build tool Dependency Reduces human Source code Binary MVP
Management mistakes under version artifacts
Compile Saves time control stored in
Link (if appropriate) Artifacts the Artifact
Built-in lint stylistic repository
checking
Integration with IDE
Lint tool Analyzes source code to Improve code Source code or Analyze Objective
flag programming readability; scripts results
errors, bugs, stylistic Pre-code review;
errors, and suspicious Finding (syntax)
constructs. errors before
Applicable to both execution for
compiled or interpreted interpreted
languages languages
Container Build a container image Container image Container base OCI MVP
builder based on a build build automation image; compliant
instruction file Container build container
file image
38
UNCLASSIFIED
UNCLASSIFIED
Improved build
stability by
reducing reliance
on external
repositories.
Better quality
software by
avoiding outdated
artifacts with
known issues.
Static SAST analyzes Catch code Source code; Static code MVP
Application application static codes, weaknesses at an known scan report
Security Test such as source code, early stage. vulnerabilities and
(SAST) tool byte code, binary code, Continuous and weaknesses recommend
while they are in a non- assessment during ed
running state to detect development. mitigation.
the conditions that
indicate code
weaknesses.
Dependency Identify vulnerabilities Secure the overall Dependency list Vulnerabili Objective
checking /Bill in the dependent application; or BOM list ty report
of Materials components based on Manage the supply
(BOM) publicly disclosed open chain risk
checking tool source vulnerabilities
39
UNCLASSIFIED
UNCLASSIFIED
4.2.4 Test
Test tools support continuous testing across the software development lifecycle. Test activities
may include, but are not limited to, unit test, functional test, integration test, system test,
regression test, acceptance test, performance test, and variety of security tests. . Mission
programs can select their own test activities and merge several tests together based on the nature
of their software and environment. All tests start with test development, which develops detailed
test procedures, test scenarios, test scripts, and test data. Automated test can be executed by
running a set of test scripts or running a set of test scenarios on the specific test tool without
human intervention. If full automation is not possible, the highest percentage of automation is
desired. It is highly recommended to leverage emulation and simulation to test proper integration
between components such as microservices and various sensors/systems, so integration testing
can be automated as much as possible. Automation will help achieve high test coverage and
make continuous ATO practicable, as well as significantly increase the quality of delivered
software.
The components involved with the test phase are listed in the following table.
Table 10: Test Phase Tools
Tool Features Benefits Inputs Outputs Baseline
Test Assists test scenario, test Increase the Test plan test scenarios, MVP
development script, and test data automation and test scripts,
tool development. rate of testing test data
The specific tool varies,
depending on the test
activity (such as unit test,
40
UNCLASSIFIED
UNCLASSIFIED
41
UNCLASSIFIED
UNCLASSIFIED
The activities supported by the test phase are listed in Table 11. These activities happen at
different test stages.
• Development stage: unit test, SAST discussed in the build phase
• System test stage: DAST or IAST, integration test, system test
• Pre-production stage: manual security test, performance test, regression test, acceptance
test, container policy enforcement, and compliance scan
Test audit, test deployment, and configuration audit happen at all stages.
42
UNCLASSIFIED
UNCLASSIFIED
43
UNCLASSIFIED
UNCLASSIFIED
44
UNCLASSIFIED
UNCLASSIFIED
The mission program could have more than one artifact repository, though more likely there is a
centralized one and tags separate artifact types. One artifact repository (or set of tags) is used in
the build stage to store build results. The test deployment activity can fetch the artifacts from the
build stage artifact repository to deploy the application into various environments (development,
test, or pre-production). Another artifact repository (or set of tags) may be used by the
production environment, which is the one that the store artifacts stage uses to push the final
deliverables to production. The production deployment will get all the artifacts from the
production artifact repository to deploy the application.
Some mission program application systems have geographically distributed operational regions
across the country or even overseas. In order to increase deployment velocity, a remote
operational region may have its own local artifact repository that replicates the artifact repository
45
UNCLASSIFIED
UNCLASSIFIED
completely or partially. During release, a new artifact is pushed into the artifact repository and
then replicated to other regional artifact repositories.
The activities supported by the release and deliver phase are listed below.
Table 13: Release and Deliver Phase Activities
Activities Description Inputs Outputs Tool
Dependency
Release go / no- This is part of configuration audit; Design go / no-go CI/CD
go decision Decision on whether to release artifacts to documentation; decision; Orchestrator
the artifact repository for the production Test reports; Artifacts
environment. Security test are tagged
and scan with
reports; release tag
Artifacts if go
decision is
made
Deliver released Push released artifacts to the artifact The release New Artifacts
artifacts repository package release in repository
the artifact
repository
Artifacts Replicate newly release artifacts to all Artifacts Artifacts in Artifacts
replication regional artifact repositories all regional repositories
artifact (release,
repositories regional)
4.3.1 Deploy
The tools used in deploy phase are environment and deployment mode dependent.
4.3.1.1 Virtual Machine deployment
While it is highly recommended to leverage containers for new system design and
development, if the application is deployed as a VM, the virtualization manager in the
hosting environment is the key component with which IaC will interface to deploy and
configure the application system. The virtualization manager manages the virtual compute,
storage and network resources. In some hosting environments, such as a general-purpose
cloud, the virtualization manager also provides some security capabilities, such as micro-
segmentation, which creates security zones to isolate VMs from one another and secure them
individually. Several capabilities of the virtualization manager are keys to the success of
mission application runtime operation and security, such as health checking, virtual resource
46
UNCLASSIFIED
UNCLASSIFIED
47
UNCLASSIFIED
UNCLASSIFIED
The activities supported by the deploy phase are listed in Table 15.
Table 15: Deploy Phase Activities
Activities Description Inputs Outputs Tool
Dependency
Artifact download Download newly release artifacts from the Artifact Requested Artifact
artifact repository download artifacts repository
request
Infrastructure Infrastructure systems auto provisioning Infrastructure Provisioned Configuration
provisioning (such as software defined networking, configuration and automation
automation firewalls, DNS, auditing and logging scripts / configured tools; IaC
system, user/group permissions, etc.) recipes / infrastructure
manifests /
playbooks
48
UNCLASSIFIED
UNCLASSIFIED
4.3.2 Operate
The Operate phase uses tools for system scaling, load balancing, and backup.
Load balancing monitors resource consumption and demand, and then distributes the workloads
across the system resources. Scaling helps dynamic resource allocation based on demand. Both
virtualization manager and CNCF-certified Kubernetes support load balancing and scaling
capabilities. CNCF-certified Kubernetes handles the load balancing and scaling at the container
level. The virtualization manager works at the VM level.
Application deployment must have proper load balancing and scaling policies configured with
the virtualization manager or the CNCF-certified Kubernetes based on VM deployment or
container deployment respectively. During runtime, the management layer will continuously
monitor the resources. If the configured threshold is met (for example if memory or Central
Processing Unit (CPU) usage meets a pre-set threshold), then the system triggers the load
balancing or scaling action automatically. Auto-scaling must be able to scale both up and down.
49
UNCLASSIFIED
UNCLASSIFIED
The activities supported by the operate phase are listed in the table below.
Table 17: Operate Phase Activities
Activities Description Inputs Outputs Tool
Dependency
Backup Data backup; Access to backup Backup data or Backup
System backup system image management;
Database
automation tool
Scale Scale manages Real-time demand and Optimized VM management
VMs/containers as a VM/container resource capability on the
group. The number of performance measures allocation hosting
VMs/containers in the Scale policy (demand environment;
group can be or Key Performance
dynamically changed Indicator Container
based on the demand (KPI)threshold; management on the
and policy. minimum, desired, and hosting environment
maximum number of
VMs/containers)
Load balancing Load balancing Load balance policy Balanced VM management
equalizes the resource Real time traffic load resource capability on the
utilization and VM/container utilization hosting
performance measures environment;
Container
management on the
hosting environment
4.3.3 Monitor
In the monitor phase, tools are utilized to collect and assess key information about the use of the
application to discover trends and identify problem areas. Monitoring spans the underlying
hardware resources, network transport, applications / microservices, containers, interfaces,
normal and anomalous endpoint behavior, and security event log analysis.
It also includes behavior and signature-based detection in the runtime environment. All these
security capabilities are mapped against the NIST controls and follow NIST Special Publication
800-190 Application Container Security Guide [12] for continuous compliance.
50
UNCLASSIFIED
UNCLASSIFIED
51
UNCLASSIFIED
UNCLASSIFIED
The activities supported by the monitor phase are listed in Table 19.
Table 19: Monitor Phase Activities
Activities Description Inputs Outputs Tool
Dependencies
Logging Log system events All user, Logs Logging
network,
application, and
data activities
Log analysis & Filter or aggregate logs; Logs Alerts and Log aggregator
auditing Analyze and correlate logs remediation report Log analysis &
auditing
System Monitor system hardware, Running system Performance KPI Operation
performance software, database, and measures; monitoring
monitoring network performance; Recommended Issue tracking
Baselining system actions; system; Alerting
performance; Warnings or alerts and notification;
52
UNCLASSIFIED
UNCLASSIFIED
53
UNCLASSIFIED
UNCLASSIFIED
54
UNCLASSIFIED
UNCLASSIFIED
55
UNCLASSIFIED
UNCLASSIFIED
During operations, the deployment and operational activities can be automated via database
automation tools. The continuous monitoring is achieved using database monitoring tool and
security audit tool.
Table 22 summarizes the database activities of all phases.
Table 22: Database Management Activities Summary
Activities Phase Activities Table Tool Dependencies Tool Table
Reference Reference
Database design Plan Table 4 Data modeling tool Table 3
Database development Develop Table 7 IDE or tools come with the Table 6
database software
Code review (database Develop Table 7 Code quality review tool Table 6
schemas, codes)
Code Commit (database Develop Table 7 Source code repository Table 6
schemas, codes
Store artifacts (database Build Table 9 Artifact repository Table 8
artifacts)
Database functional test Test Table 11 Database test tool Table 10
Database non-functional Test Table 11 Database test tool Table 10
test
Database security test Test Table 11 Database security test tool Table 10
Database installation and Test and Table 11 Artifact repository; Table 8
database artifact Deploy Table 15 Database automation tool; Table 14
deployment Data masking or encryption
tool if needed
Backup Operate Table 17 Database automation tool Table 14
Database monitoring and Monitor Table 19 Database monitoring tool; Table 18
security auditing Database security audit tool
56
UNCLASSIFIED
UNCLASSIFIED
Container images should adhere to the OCI Image Format Specification to ensure portability.
Each hardened container includes the “global configuration”, which includes all security
hardening configuration. The packaged container is tagged with integrity metadata, such as a
digital signature or a digital hash. Tags may be implemented as metadata bound to the object, or
as attributes in a file associated with the object. Some configuration values can be changed for
local use, such as the DNS location. These “local configuration” values are outside the scope of
the integrity tag, and do not “break” the chain of trust for the hardened container.
Artifacts related to the hardened container should include the Information Assurance (IA)
controls that the hardened container has successfully addressed, so that users of the container
know which controls they can inherit, versus which controls they must address. This capability
may not exist in the MVP, but it is an objective that enables reciprocity.
The Hardened Container Factory produces following types of containers:
• Hardened containers of DevSecOps CI/CD pipeline tools
• Sidecar Container Security Stack (see details in Section 6.4.4) containers to be used in
runtime environments for container security
• Common containers (such as OS, database, web servers, etc.) to be used as a program
development baseline
Continuous
Cybersecurity Documentation
Engineering
58
UNCLASSIFIED
UNCLASSIFIED
60
UNCLASSIFIED
UNCLASSIFIED
61
UNCLASSIFIED
UNCLASSIFIED
62
UNCLASSIFIED
UNCLASSIFIED
hosting environment provides compute, storage, and network resources in either physical or
virtual form.
about what CI/CD processes should look like and what tools must be used. Each software team
needs to embrace the DevSecOps culture and define its processes that suit its software system
architectural choices. The tool chain selection is specific to the software programming language
choices, application type, tasks in each software lifecycle phase, and the system deployment
platform.
Software factory building itself follows the DevSecOps philosophy and goes through its own
design, instantiate, verify, operate and monitor phases. It evolves through the application
lifecycle iteration. Figure 14 illustrates the software factory phases, activities, and the
relationship with the application lifecycle. Security must be applied across the software factory
phases. Sidecar Container Security Stack (SCSS) discussed in 6.4.4 can be used for software
factory runtime cybersecurity monitoring.
65
UNCLASSIFIED
UNCLASSIFIED
66
UNCLASSIFIED
UNCLASSIFIED
67
UNCLASSIFIED
UNCLASSIFIED
One popular open source product that implements FaaS for Kubernetes is Knative. Another open
source product is Kubeless. The DevSecOps Software Factories must offer Knative support.
They may also support Kubeless or another FaaS for Kubernetes.
68
UNCLASSIFIED
UNCLASSIFIED
Continuous operation interacts with the logging system, issue tracking system, and the
underlying infrastructure platform.
69
UNCLASSIFIED
UNCLASSIFIED
70
UNCLASSIFIED
UNCLASSIFIED
71
UNCLASSIFIED
UNCLASSIFIED
72
UNCLASSIFIED
UNCLASSIFIED
Figure 20 depicts another view of the sidecar, along with some of the other DevSecOps
components. Again, the arrows show the direction of the data flow, and not all interactions
between the depicted components are indicated. The program dashboard displays information
about the application. The dashboard is built partly using visualizations from the log
visualization service. The items in purple and blue are either services or components that are
provide by the DoD. But those in blue will be stood up by the program. For example, the Service
Mesh is provided as a hardened container. Similarly, the Sidecar Container Security Stack is
provided as a hardened container that the program installs in each pod (container group); this is
injected by Kubernetes automatically without application developer involvement.
73
UNCLASSIFIED
UNCLASSIFIED
74
UNCLASSIFIED
UNCLASSIFIED
7 Conclusion
We have introduced key DevSecOps concepts, described the DevSecOps Ecosystem, including
the Software Factory and the Sidecar Container Security Stack, and indicated how the ecosystem
should be set up and used. More detail on the components described here, such as DCAR, can be
found in other DoD CIO documents.
Moving to DevSecOps improves agility and speeds new capabilities into the field. But it also
requires new policies, processes and culture change. More information on DevSecOps culture,
metrics, and the maturity model can be found in the DoD DevSecOps Playbook [7].
75
UNCLASSIFIED
UNCLASSIFIED
76
UNCLASSIFIED
UNCLASSIFIED
Acronym Definition
DNS Domain Name Service
DoD Department of Defense
DoDI DoD Instruction
DTRA Defense Threat Reduction Agency
EO Executive Order
FaaS Function as a Service
FMA Forensic Media Analysis
GB Gigabyte
GEP Global Enterprise Partners
GOTS Government Off The Shelf
HTTP Hypertext Transfer Protocol
IA Information Assurance
IaaS Infrastructure as a Service
IaC Infrastructure as Code
IAST Interactive Application Security Test
ICAM Identity, Credential, and Access Management
IDE Integrated Development Environment
IDS Intrusion Detection System
IE Information Enterprise
IHR Incident Handling Response
INFOCON Information Operations Condition
IO Input/Output
IPS Intrusion Prevention System
IR Incident Reporting
ISCM Information Security Continuous Monitoring
IT Information Technology
JVM Java Virtual Machine
KPI Key Performance Indicator
MB Megabyte
MilDep Military Department
MNP Malware Notification Protection
mTLS mutual Transport Layer Security authentication
MVP Minimum Viable Product
NGG Next Generation Governance
NIST National Institute of Standards and Technology
NoSQL Non SQL
NSM Network Security Monitoring
77
UNCLASSIFIED
UNCLASSIFIED
Acronym Definition
OCI Open Container Initiative
OS Operating System
PA Provisional Authorization
PaaS Platform as a Service
PEO Program executive Officer
POA&M Plan of Action and Milestones
QA Quality Assurance
RBAC Role-Based Access Control
RMF Risk Management Framework
ROI Return on Investment
SaaS Software as a Service
SaC Security as Code
SAF Secretary of the Air Force
SAST Static Application Security Test
SCAP Security Content Automation Protocol
SCCA Secure Cloud Computing Architecture
SCSS Sidecar Container Security Stack
SLA Service Level Agreement
SRG Security Requirements Guide
SQL Structured Query Language
SSH Secure Shell
STIG Security Technical Implementation Guide
TRB Technical Review Board
VM Virtual Machine
78
UNCLASSIFIED
UNCLASSIFIED
Term Definition
Bare Metal A bare metal or bare metal server refers to a traditional physical
computer server that is dedicated to a single tenant and which does
Bare Metal Server
not run a hypervisor. This term is used to distinguish physical
compute resources from modern forms of virtualization and cloud
hosting.
79
UNCLASSIFIED
UNCLASSIFIED
Build tools Used to retrieve software source code, build software, and generate
artifacts.
Software Build Tools
CI/CD Pipeline CI/CD pipeline is the set of tools and the associated process
workflows to achieve continuous integration and continuous
delivery with build, test, security, and release delivery activities,
which are steered by a CI/CD orchestrator and automated as much
as practice allows.
CI/CD Pipeline CI/CD pipeline instance is a single process workflow and the tools
Instance to execute the workflow for a specific software language and
application type for a project. As much of the pipeline process is
automated as is practicable.
80
UNCLASSIFIED
UNCLASSIFIED
Container A standard unit of software that packages up code and all its
dependencies, down to, but not including the OS. It is a
lightweight, standalone, executable package of software that
includes everything needed to run an application except the OS:
code, runtime, system tools, system libraries and settings.
81
UNCLASSIFIED
UNCLASSIFIED
Continuous Integration Continuous integration goes one step further than continuous
build. It extends continuous build with more automated tests and
security scans. Any test or security activities that require human
intervention can be managed by separate process flows.
The automated tests include, but are not limited to, integration
tests, a system test, and regression tests. The security scans
include, but are not limited to, dynamic code analysis, test
coverage, dependency/BOM checking, and compliance checking.
The outputs from continuous integration include the continuous
build outputs, plus automation test results and security scan results.
The trigger to the automated tests and security scan is a successful
build.
82
UNCLASSIFIED
UNCLASSIFIED
DevSecOps Ecosystem A collection of tools and process workflows created and executed
on the tools to support all the activities throughout the full
DevSecOps lifecycle.
The process workflows may be fully automated, semi-automated,
or manual.
DevSecOps phase The software development, security, and operation activities in the
software lifecycle are divided into phases. Each phase completes a
part of related activities using tools.
83
UNCLASSIFIED
UNCLASSIFIED
84
UNCLASSIFIED
UNCLASSIFIED
85
UNCLASSIFIED
UNCLASSIFIED
OCI “An open governance structure for the express purpose of creating
open industry standards around container formats and runtime” -
https://www.opencontainers.org/
OCI Compliant The image of the OCI compliant container must conform with the
Container OCI Image Specification.
86
UNCLASSIFIED
UNCLASSIFIED
Virtual Machine (VM) Emulates a physical computer in software. Several VMs can run
on the same physical device.
87
UNCLASSIFIED
UNCLASSIFIED
Appendix C References
The following references are utilized in the development of the DevSecOps reference design
document:
[2] DISA, "Department Of Defense Cloud Computing Security Requirements Guide, V1R2,"
18 March, 2016.
[3] DISA, "DoD Secure Cloud Computing Architecture (SCCA) Functional Requirements,"
January 31, 2017.
[4] White House, "Presidential Executive Order on Strengthening the Cybersecurity of Federal
Networks and Critical Infrastructure (EO 1380)," May 11, 2017.
[5] National Institute of Standards and Technology, Framework for Improving Critical
Infrastructure Cybersecurity, 2018.
[7] Office of the DoD CIO, "DoD DevSecOps Playbook," 2019. [Online]. Available:
https://www.milsuite.mil/book/groups/dod-enterprise-devsecops.
[8] Puppet Labs, "Puppet State of DevOps Report 2018," Puppet Labs, 2018.
[10] DoD, "DoDI 8510.01: Risk Management Framework for DoD Information Technology,"
24 May 2016.
[12] NIST, "NIST Special Publication 800-190, Application Container Security Guide,"
September 2017.
88
UNCLASSIFIED
UNCLASSIFIED
[14] NIST, "Security and Privacy Controls for Federal Information Systems and Organizations,"
NIST SP 800-53 Revision 4, 2013.
[15] NIST, "Risk Management Framework for Information Systems and Organizations," NIST
SP 800-37 Revision 2, 2018.
[18] P. Hammant, "Legacy applicaion Strangulation: Case Studies," 14 July 2013. [Online].
Available: https://paulhammant.com/2013/07/14/legacy-application-strangulation-case-
studies/. [Accessed 12 July 2019].
89
UNCLASSIFIED