{"id":5246,"date":"2026-10-30T04:50:00","date_gmt":"2026-10-30T04:50:00","guid":{"rendered":"https:\/\/www.devopssupport.in\/blog\/?p=5246"},"modified":"2026-10-30T04:50:00","modified_gmt":"2026-10-30T04:50:00","slug":"devsecops-day0-day1-day2-runbook","status":"publish","type":"post","link":"https:\/\/www.devopssupport.in\/blog\/devsecops-day0-day1-day2-runbook\/","title":{"rendered":"Running DevSecOps as a Service: The 0-1-2 Runbook"},"content":{"rendered":"<p>Requests to &#8220;add security&#8221; to delivery pipelines land on support and managed-services teams with no budget line, no extra headcount and a deadline measured in sprints. It can be done, but only as an ordered procedure \u2014 improvisation in this territory produces blocked releases and angry clients in equal measure. The runbook below compresses the DevSecOps adoption lifecycle into three phases: Day 0 for decisions taken on paper, Day 1 for a pilot that observes without obstructing, and Day 2 for the operating rhythm that keeps the whole arrangement honest. Every step is deliberately small, every document fits on a page or a screen, and nothing requires a purchase order before the pilot proves its worth. The failure mode this sequence avoids is the familiar one: a tool switched to blocking mode on day one, a flood of findings, and an override culture that takes quarters to undo.<\/p>\n<h2>Prerequisites: Confirm Before You Start<\/h2>\n<p>Run these four checks before any phase begins; each one invalidates later steps if it fails:<\/p>\n<ol>\n<li><strong>Working CI\/CD.<\/strong> If builds are manual or flaky, fix that first \u2014 security controls bolted onto an unreliable pipeline inherit its unreliability and get blamed for it.<\/li>\n<li><strong>Inventory of repositories and workflows.<\/strong> You cannot place controls on a perimeter you have not drawn. List every repo, every workflow trigger, and every credential each one can reach.<\/li>\n<li><strong>A named owner per pipeline.<\/strong> Not a team \u2014 a person. Controls without owners decay silently, and nobody discovers the decay until an incident.<\/li>\n<li><strong>Agreement on the one metric that will judge the rollout.<\/strong> For most support engagements this is the gate override rate; pick it now, in writing, to avoid relitigating later. One metric, honestly tracked, outperforms a scorecard nobody reads.<\/li>\n<\/ol>\n<p>Clients who ask how this differs from the runbooks their platform teams already follow can be pointed at the <a href=\"https:\/\/www.devopssupport.in\/blog\/devops-vs-sysops-vs-devsecops-architecture-how-modern-technology-teams-operate\/\">comparison of DevOps, SysOps and DevSecOps operating models<\/a> \u2014 the short version is that the security layer adds decisions, not servers.<\/p>\n<h2>DevSecOps Day 0: Decisions on Paper<\/h2>\n<p>Day 0 buys nothing and installs nothing. It produces three documents, each small enough to read in one sitting:<\/p>\n<ol>\n<li><strong>The gate policy.<\/strong> One page. It states what a gate may block \u2014 findings that are new, severe, fixable and reliable \u2014 and states with equal force what it may not: pre-existing debt, low-confidence rules, anything without a fix path. Every exception gets an owner and an expiry, ninety days at the outside.<\/li>\n<li><strong>The findings store.<\/strong> Choose where scan results land in SARIF format so that every tool writes to one review surface. Skipping this creates the classic failure where each scanner becomes its own unread inbox.<\/li>\n<li><strong>The identity model.<\/strong> Map which pipeline job can reach which system, through what credential. Replace stored keys with short-lived federated access where the cloud supports it; document every remaining long-lived key with a rotation date. This document becomes the blast-radius map for every later incident, which is why it precedes tooling.<\/li>\n<\/ol>\n<p>Day 0 ends with sign-off from the client&#8217;s engineering lead. Without that signature, Day 1 has no authority and will be relitigated the first time a scan embarrasses someone senior. The common Day 0 failures are all abbreviations of these documents: a gate policy that says &#8220;block criticals&#8221; without defining confidence, a findings store that never got an owner, an identity model that lists credentials but not their blast radii. Each abbreviation resurfaces within a quarter as an argument, and arguments cost more than the hours that would have prevented them.<\/p>\n<h2>DevSecOps Day 1: The Report-Only Pilot<\/h2>\n<p>Day 1 turns the scanners on with the blocking switches off. The order of installation matters less than the discipline of observation:<\/p>\n<ol>\n<li><strong>Enable secret scanning with push protection<\/strong> \u2014 the one exception allowed to block from the start, because its false-positive profile is negligible and its cost of failure is unambiguous.<\/li>\n<li><strong>Start dependency and container scanning in report mode.<\/strong> Let the findings accumulate for a full sprint without acting on them beyond triage.<\/li>\n<li><strong>Produce a build inventory on every pipeline run and file it beside the artifact<\/strong>, plus provenance where the toolchain supports it. Do this from the first day of the pilot regardless of anything else \u2014 records cannot be reconstructed retroactively for builds that already happened.<\/li>\n<li><strong>Measure the false-positive profile of every static rule.<\/strong> A rule that misfires consistently is demoted before it ever blocks, not after. Run static analysis on changed lines only; full-repo sweeps bury reviewers in noise and discredit the whole exercise.<\/li>\n<li><strong>Publish the pilot numbers weekly.<\/strong> Findings volume, confirmed-real share, and the rules that look noisy. Visibility is the pilot&#8217;s actual product.<\/li>\n<\/ol>\n<p>During this phase the support team&#8217;s job is measurement, not enforcement. Dynamic and API testing can join the pilot in its second week once the static side has settled \u2014 they answer a different question, about the running surface rather than the code, and bolting them on early muddies both. The <a href=\"https:\/\/www.devopssupport.in\/blog\/fortifying-cloud-native-ecosystems-modern-strategies-for-devsecops-and-software-supply-chain-integrity\/\">strategies for protecting cloud-native ecosystems and their supply chains<\/a> give the wider context for why build-level evidence matters as much as code-level scanning.<\/p>\n<h2>DevSecOps Day 2 and Beyond: The Operating Rhythm<\/h2>\n<p>Day 2 is not a date but a steady state, and it runs on a monthly heartbeat:<\/p>\n<ol>\n<li><strong>Review the metrics monthly.<\/strong> Override rate against its five-percent ceiling, fix times for new findings at median and p90, escape rate, provenance coverage, and the age of open exceptions. Publish all of them, including the ugly ones.<\/li>\n<li><strong>Retire or demote noisy rules with data.<\/strong> Each month, find the worst-performing rule and either fix its scope or drop it. A shrinking blocking set that stays accurate beats a growing one nobody trusts.<\/li>\n<li><strong>Turn on blocking for rules that have earned it.<\/strong> A rule graduates to blocking only after its false-positive rate has been near zero for a full review cycle. Graduation is a decision with a name attached, not a checkbox.<\/li>\n<li><strong>Rehearse the compromise runbook.<\/strong> Once a quarter, simulate the bad day: a malicious action in the supply chain, a leaked key, a poisoned artifact. Walk through rotation order \u2014 credentials first, history rewriting second \u2014 and time it. The rehearsal is cheap; the first real event is not the time to read the procedure for the first time.<\/li>\n<li><strong>Re-run the Day 0 identity review<\/strong> whenever infrastructure changes. Stale credentials outlive the projects that created them, reliably.<\/li>\n<\/ol>\n<p>The operational backbone these phases attach to \u2014 builds, deploys, environment promotion \u2014 should already be stable; where it is not, the <a href=\"https:\/\/www.devopssupport.in\/blog\/building-modern-cloud-native-operations-a-complete-guide-to-ci-cd-and-infrastructure-automation\/\">complete guide to cloud-native operations and CI\/CD automation<\/a> covers the foundation work first. Security phases stacked on an unstable delivery base collapse with it.<\/p>\n<p>A note on client reporting, since managed engagements live or die by it. Convert the monthly metrics into two sentences per phase: what improved, and what the client must decide before the next review. Keep the raw tables in an appendix for the engineers and keep the front page readable by a budget holder. Support contracts that report security as a trend line \u2014 with the override ceiling, the exception count and the rehearsal dates visible \u2014 renew at noticeably higher rates than contracts that report security as a ticket queue, because trend lines are the only form a non-specialist buyer can defend in their own meetings.<\/p>\n<h2>The Runbook in Short<\/h2>\n<ul>\n<li>Day 0: gate policy, findings store in SARIF, identity model \u2014 all signed off.<\/li>\n<li>Day 1: report-only pilot, build records and provenance from the first build, false-positive profiles per rule.<\/li>\n<li>Day 2: monthly metric reviews, rule retirement, earned blocking, quarterly compromise rehearsals.<\/li>\n<li>Throughout: named owners, published numbers, exceptions with expiry dates.<\/li>\n<\/ul>\n<p>Teams that want the model behind this sequence \u2014 control families, the standards map, the reasoning behind report-first rollouts \u2014 will find the <a href=\"https:\/\/www.xopsschool.com\/devsecops\/\">DevSecOps operating model written up here<\/a>, and it pairs well with the runbook above as the document clients read before signing Day 0. Run the phases in order, resist every request to skip the pilot, and the client conversation six months out becomes a metrics review instead of an apology. That difference is the entire deliverable, and it compounds: every clean review makes the next sale shorter.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A step-by-step runbook for support and managed-services teams standing up pipeline security: Day 0 decisions, Day 1 pilot, Day 2 operating rhythm.<\/p>\n","protected":false},"author":8,"featured_media":5247,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3949],"tags":[],"class_list":["post-5246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-managed-services"],"_links":{"self":[{"href":"https:\/\/www.devopssupport.in\/blog\/wp-json\/wp\/v2\/posts\/5246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopssupport.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopssupport.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopssupport.in\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopssupport.in\/blog\/wp-json\/wp\/v2\/comments?post=5246"}],"version-history":[{"count":1,"href":"https:\/\/www.devopssupport.in\/blog\/wp-json\/wp\/v2\/posts\/5246\/revisions"}],"predecessor-version":[{"id":5254,"href":"https:\/\/www.devopssupport.in\/blog\/wp-json\/wp\/v2\/posts\/5246\/revisions\/5254"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopssupport.in\/blog\/wp-json\/wp\/v2\/media\/5247"}],"wp:attachment":[{"href":"https:\/\/www.devopssupport.in\/blog\/wp-json\/wp\/v2\/media?parent=5246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopssupport.in\/blog\/wp-json\/wp\/v2\/categories?post=5246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopssupport.in\/blog\/wp-json\/wp\/v2\/tags?post=5246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}