Define ownership and governance model for DevSecOps privileged groups
Implementation Effort: Medium – Inventorying privileged GitHub and Azure DevOps groups, assigning owners, and standing up access reviews and access packages spans identity engineering and the DevSecOps platform team.
Define developer platform roles and access model
Implementation Effort: Medium – Designing a unified role model across GitHub, Azure DevOps, and Microsoft Entra ID takes several steps and coordination among platform, security, and identity teams.
Discover and remediate ungoverned developer platform accounts
Implementation Effort: Medium – Auditing every GitHub and Azure DevOps roster, then migrating, converting, or removing accounts, is a multi-step effort coordinated with platform and identity owners.
Integrate DevOps platforms with Microsoft Entra ID
Implementation Effort: Medium – Connecting GitHub EMU and Azure DevOps to Entra ID, setting up SCIM provisioning, and planning the account cutover involves several steps across identity and platform teams.
Define developer access policies using Privileged Identity Management
Implementation Effort: Medium – Scoping PIM eligibility to GitHub and Azure DevOps admin roles builds on existing Entra governance but requires identity and platform teams to configure and test activation policies.
Configure default branch protection controls
Implementation Effort: Low – Applying a branch-protection ruleset or branch policy is a one-time setting an admin configures at the organization or repository level.
Review and reduce platform-level administrative permissions
Implementation Effort: Medium – Auditing admin roles across GitHub and Azure DevOps and right-sizing each one takes methodical review and coordination with the teams that hold those roles.
Establish organization-wide secure defaults for repository security
Implementation Effort: Medium – Configuring organization and enterprise security settings plus repository onboarding automation across GitHub and Azure DevOps takes several steps and licensing coordination.
Establish credential governance and blocking controls for developer platforms
Implementation Effort: Medium – Standing up recurring token, key, and service-connection reviews plus enforcement policies across both platforms is a multi-step effort with security and platform owners.
Adopt centralized enterprise identity model for source platforms
Implementation Effort: High – Consolidating GitHub and Azure DevOps onto a single Entra identity source and retiring unmanaged accounts is an ongoing program spanning identity and platform teams.
Implement static application security testing (SAST)
Implementation Effort: Medium – Enabling CodeQL code scanning across repositories and wiring it into pull request and CI workflows takes setup and tuning across engineering teams.
Enable secret scanning and push protection
Implementation Effort: Low – Turning on secret scanning and push protection is mostly an administrator toggle at the organization or repository level.
Evaluate and integrate third-party SAST and DAST tools
Implementation Effort: High – Identifying coverage gaps, evaluating candidate tools, and integrating and maintaining them in pipelines is an ongoing program rather than a one-time setup.
Plan and implement emergency access for DevOps platforms
Implementation Effort: Medium – Creating break-glass accounts for GitHub, Azure DevOps, and Entra ID, excluding them from lockout dependencies, and scheduling recurring tests takes coordinated planning.
Enable Dependabot alerts and security updates
Implementation Effort: Low – Turning on the dependency graph, Dependabot alerts, and security updates is a quick settings change per repository or organization.
Configure dependency review in CI
Implementation Effort: Low – Adding the dependency-review check to pull request pipelines is a targeted, one-time pipeline change.
Implement SBOM generation in release pipelines
Implementation Effort: Medium – Choosing an SBOM format, adding generation to every release pipeline, and defining storage and verification policy takes several steps across build teams.
Implement artifact signing and build provenance
Implementation Effort: High – Standing up signing and provenance for every release, wiring in verification gates, and maintaining keys and tooling is a sustained program.
Configure Workload Identity Federation for keyless CI/CD
Implementation Effort: Medium – Configuring federated credentials, trust conditions, and scoped RBAC for each pipeline and platform is a multi-step effort with cloud and platform owners.
Design pipeline-as-code standards
Implementation Effort: Medium – Moving pipelines to version-controlled YAML, applying branch policies and CODEOWNERS, and optionally disabling Classic pipelines takes coordinated work across teams.
Pin third-party pipeline components to immutable references
Implementation Effort: Low – Pinning actions and tasks to commit SHAs or fixed versions is a focused change to pipeline files, aided by dependency automation.
Configure environment protection rules and approval gates
Implementation Effort: Medium – Defining required reviewers, branch restrictions, and checks on each protected environment across GitHub and Azure DevOps takes coordinated setup with resource owners.
Implement IaC scanning in CI pipelines
Implementation Effort: Medium – Enabling Defender for Cloud, connecting the DevOps connector, and adding Microsoft Security DevOps scanning with SARIF upload spans security and pipeline teams.
Deploy policy-as-code for critical Azure resources
Implementation Effort: Medium – Storing Azure Policy in source control, testing it, and wiring assignment and remediation into pipelines takes coordination between platform, security, and DevOps teams.
Implement container image scanning in registry and pipeline
Implementation Effort: Medium – Wiring image scanning into the CI pipeline, the registry, and runtime spans build, platform, and security teams across several configuration points.
Implement runtime container threat protection
Implementation Effort: Medium – Enabling Defender for Containers and deploying its sensors across AKS and any EKS, GKE, or Arc-connected clusters is a multi-step rollout with cloud and platform teams.
Connect DevOps environments to Defender for Cloud
Implementation Effort: Low – Authorizing the Defender for Cloud connectors and installing the app on each DevOps organization is a bounded onboarding task, though it needs subscription and organization owners to grant access.
Configure code-to-cloud traceability
Implementation Effort: Medium – Linking container and IaC findings back to source requires enabling Defender CSPM, wiring up connectors, and applying the documented build metadata and mapping tags across teams.
Enable DevOps attack path analysis
Implementation Effort: Medium – Turning on attack path analysis depends on enabling Defender CSPM and DevOps connectors and then tuning which chained findings to prioritize, involving both security and platform teams.
Establish centralized DevSecOps security dashboards
Implementation Effort: Medium – Aggregating code, pipeline, and cloud findings into one view means connecting multiple tools to Defender for Cloud and building Azure Workbooks tailored to different audiences, which spans security and engineering.
Integrate security findings into developer workflows
Implementation Effort: Medium – Surfacing findings in pull requests, IDEs, and work items requires configuring platform-specific integrations across GitHub and Azure DevOps and onboarding repositories to Defender for Cloud.
Establish repository security baseline standard
Implementation Effort: Low – Defining the baseline of branch protection, review, scanning, and access settings is a focused policy-writing exercise for the security team with limited coordination to publish it.
Implement organization-wide repository governance policies
Implementation Effort: Medium – Rolling out uniform governance means configuring GitHub organization rulesets and replicating equivalent branch policies in Azure DevOps through shared automation, coordinating across repository owners.
Configure custom CodeQL query packs for organization-specific risks
Implementation Effort: High – Authoring and maintaining custom CodeQL packs is an ongoing program that requires learning the QL language, encoding organization-specific rules, and updating queries as internal frameworks evolve.
Configure custom secret patterns for organization-specific tokens
Implementation Effort: Medium – Defining and testing custom secret patterns, publishing them at scope, and standing up compensating controls for Azure DevOps takes iterative work across security and repository administrators.
Triage and remediate existing secret scanning alerts
Implementation Effort: Medium – Working through the backlog means validating, revoking, and rotating each exposed credential and sometimes rewriting Git history, which requires coordination with the teams that own the affected secrets.
Establish ongoing credential rotation and hygiene process
Implementation Effort: Medium – Standing up rotation schedules, automating rotation through Key Vault, and migrating long-lived secrets to managed identities is a multi-step effort spanning pipeline, application, and platform owners.
Establish code review and approval requirements
Implementation Effort: Low – Enabling branch protection rules that require peer approval, block self-approval, and dismiss stale reviews is a focused configuration change on protected branches.
Configure Dependabot auto-triage rules at organization level
Implementation Effort: Low – Defining organization-level auto-triage rules by severity, ecosystem, patch availability, and EPSS score is a focused configuration task in GitHub security settings.
Design approved package registry and trusted publishing controls
Implementation Effort: Medium – Standing up governed Azure Artifacts feeds, enabling upstream sources as a scan-before-promote buffer, and moving publishing to trusted OIDC credentials is a multi-step effort across platform and security teams.
Design software supply chain security standards
Implementation Effort: Medium – Writing organization-wide standards for SBOMs, artifact signing, provenance, and dependency governance requires input from multiple product and platform teams to agree on a workable baseline.
Enforce artifact integrity validation in deployment gates
Implementation Effort: High – Enforcing signature and provenance checks at every deployment boundary is a sustained program spanning GitHub Actions, Azure signing tooling, and admission controllers, with ongoing tuning as capabilities reach general availability.
Migrate existing service principals to federated credentials
Implementation Effort: High – Inventorying and converting every legacy service principal secret to workload identity federation across many pipelines and applications is a sustained migration effort.
Configure managed identity for Azure resource deployments
Implementation Effort: Medium – Configuring system- or user-assigned managed identities on self-hosted Azure compute and scoping their role assignments takes coordinated work across deployment and platform owners.
Audit and eliminate plaintext secrets in pipeline definitions
Implementation Effort: Medium – Auditing every pipeline definition, moving exposed credentials into approved secret stores, and enabling push protection to prevent regression spans the teams that own each pipeline.
Harden build runners with ephemeral execution and least privilege
Implementation Effort: High – Moving to ephemeral, least-privilege runners requires re-architecting build infrastructure with on-demand provisioning and teardown and maintaining it as workloads change.
Evaluate pipeline security posture against OWASP CI/CD Top 10
Implementation Effort: Medium – Systematically reviewing workflows, identities, runners, and third-party integrations against all ten OWASP CI/CD risk categories is a structured assessment that draws on platform and security teams.
Evaluate third-party SCA tools for advanced coverage
Implementation Effort: High – Comparing candidate SCA tools' reachability, license, and ecosystem coverage against native scanning and then integrating a chosen tool is a sustained evaluation and rollout effort.
Implement drift detection for deployed infrastructure
Implementation Effort: High – Standing up continuous drift monitoring, scheduled template-comparison jobs, and an ongoing investigate-and-remediate workflow is a sustained operational commitment.
Define approved base image policy and governance
Implementation Effort: Medium – Curating approved base images, maintaining a private registry with a rebuild cadence, and configuring admission-control policies requires coordination between security and platform teams.
Implement container image signing and verification
Implementation Effort: High – Configuring signing with Notation and Key Vault, wiring verification into pipelines and admission control, and maintaining trust policies is an ongoing engineering commitment.
Establish hardened deployment trust relationships for CI/CD
Implementation Effort: High – Defining explicit pipeline-to-environment trust bindings and enforcing them with environment protections, reviewers, branch rules, and federated identity claims is sustained work across every pipeline.
Establish prioritized onboarding model for DevOps posture coverage
Implementation Effort: Medium – Building a phased onboarding plan and asset registry across many repositories and pipelines requires coordination between security and engineering owners.
Design DevSecOps security triage and response process
Implementation Effort: Medium – Defining triage ownership, severity and exploitability priorities, response timelines, and finding tracking across scanning tools requires coordination between security and engineering teams.
Define remediation SLAs and exception workflow for findings
Implementation Effort: Medium – Setting remediation timelines by severity and building a documented exception workflow requires agreement across security, engineering, and leadership.
Establish DevSecOps metrics and reporting cadence
Implementation Effort: Medium – Selecting metrics, wiring data from GitHub Advanced Security, Azure DevOps, and Defender for Cloud, and standing up a reporting cadence requires cross-team coordination.
Establish threat modeling for pipelines, IaC, and deployment architectures
Implementation Effort: High – Building a repeatable threat modeling practice and applying it across pipelines, IaC, and deployment designs is an ongoing commitment for security and engineering teams.
Establish developer security training and awareness program
Implementation Effort: Medium – Building training content across secure coding, supply chain, and pipeline threats and rolling it out to engineering teams requires curriculum ownership and coordination.
Deploy security champion program across development teams
Implementation Effort: Medium – Recruiting champions on each team, defining their responsibilities, and supporting them with training and resources requires sustained cross-team coordination.
Map DevSecOps controls to compliance frameworks
Implementation Effort: Medium – Mapping each DevSecOps control to the applicable framework requirements and validating coverage requires work across security, engineering, and compliance owners.
Establish DevSecOps compliance reporting and evidence collection
Implementation Effort: Medium – Identifying evidence sources across Defender for Cloud, GitHub, and Azure DevOps and building a continuous collection process requires coordination between security and compliance teams.
Conduct periodic DevSecOps maturity assessment
Implementation Effort: Low – Assessing the program against a maturity framework at a set cadence is a focused, periodic review with limited coordination.
Triage and remediate existing code scanning alerts
Implementation Effort: Medium – Working through the existing alert backlog with a risk-based plan and coordinating fixes with code owners is a multi-step effort across teams.
Implement DAST scanning in staging environments
Implementation Effort: High – Standing up DAST against staging environments, tuning scans to reduce noise, and maintaining them as applications change is an ongoing engineering commitment.
Define IaC security baseline standards and approved modules
Implementation Effort: Medium – Defining minimum security requirements and publishing approved Bicep, ARM, and Terraform modules requires coordination between security and infrastructure teams.
Configure IaC scanning PR annotations for developer feedback
Implementation Effort: Low – Turning on pull request annotations for an existing IaC scanning workflow is a focused configuration change with little coordination.
Configure Conditional Access policies for developer platform access
Implementation Effort: Medium – Extending existing Conditional Access baselines with GitHub and Azure DevOps-specific policies requires coordination between identity and DevOps platform owners.
Establish secure developer environment standards
Implementation Effort: Medium – Defining approved tools, secret handling, commit integrity, and workstation requirements and aligning them across pillars requires cross-team coordination.
Integrate DevSecOps findings with centralized SIEM and SOC
Implementation Effort: Medium – Connecting GitHub, Azure DevOps, and Defender for Cloud signals to Microsoft Sentinel and validating each ingestion path requires coordination between security operations and DevOps teams.
Define DevOps-specific security incident response playbooks
Implementation Effort: Medium – Building DevOps-specific response playbooks is a multi-step effort developed jointly with the enterprise SOC and incident response owners.
Implement governance policies for AI-assisted code generation
Implementation Effort: Medium – Setting Copilot policies, approval gates, and acceptable-use boundaries requires coordinated work across security, engineering, and platform teams.
Implement open-source license compliance scanning
Implementation Effort: Medium – Configuring license scanning in pull requests and publishing an approved-license policy spans engineering and legal review.
Implement API security testing in CI/CD pipelines
Implementation Effort: High – Standing up specification validation and automated security testing across every API-exposing service is a large, sustained effort spanning application and pipeline teams.
Define secure release governance and rollback procedures
Implementation Effort: Medium – Configuring deployment approvals, security gates, release manifests, and tested rollback procedures is a multi-step effort coordinated across release and platform teams.
Establish unified vulnerability management workflow for DevSecOps findings
Implementation Effort: Medium – Defining a normalized, end-to-end triage and remediation process across many scanning tools requires coordination among security and engineering teams.
Establish AI development tool governance and allowlisting
Implementation Effort: Medium – Inventorying AI coding tools, publishing an approved list, and standing up procurement security reviews spans security, legal, and procurement teams.
Implement data protection controls for AI-assisted development
Implementation Effort: Medium – Layering content exclusions, Purview DLP, developer guidelines, and network controls together is a multi-step effort across security and data protection teams.
Harden cloud development environments
Implementation Effort: Medium – Restricting images, extensions, tasks, secrets, and network egress across Codespaces and Windows 365 is a multi-step effort coordinated with platform teams.
Implement automated secret rotation for pipeline and application secrets
Implementation Effort: Medium – Automating rotation with Key Vault, runbooks, and workload identity federation is a multi-step effort across platform and security teams.
Implement supply chain security for AI/ML pipelines and model artifacts
Implementation Effort: High – Requires coordination across data science, platform, and security teams.
Secure CI/CD for untrusted contributions and fork pull requests
Implementation Effort: Medium – Locking down fork pull request permissions, secrets, and workflow injection paths is a multi-step configuration effort across pipeline owners.
Secure feature flag and progressive delivery controls
Implementation Effort: Medium – Adding RBAC, approvals, audit logging, and validation gates to feature-flag and progressive-delivery systems is a multi-step effort across delivery and security teams.
Govern reusable pipeline templates and platform trust boundaries
Implementation Effort: High – Requires coordination across platform engineering, security, and development teams.
Define and use cryptography standards for DevSecOps
Implementation Effort: Medium – Defining cryptography standards, key management rules, banned algorithms, and pipeline enforcement spans security and engineering teams.
Establish coordinated vulnerability disclosure program for DevOps
Implementation Effort: Medium – Publishing a disclosure policy and standing up an intake and SLA-based triage process is a multi-step effort across security and legal teams.
Embed security requirements in developer workflows and backlog
Implementation Effort: Medium – Embedding security acceptance criteria and review gates into planning and issue and pull request templates requires coordination across engineering and security teams.
Adopt agentic AI vulnerability discovery (MDASH)
Implementation Effort: Medium – Evaluate and onboard an emerging preview capability and integrate its findings into existing triage workflows.
Prevent credential exposure in non-code channels
Implementation Effort: Medium – Cross-team coordination with the data security and security operations teams to extend existing DLP and SaaS controls.
Right-size developer access to Azure with least-privilege RBAC
Implementation Effort: Medium – Multi-step project requiring review of existing assignments and design of scoped roles, coordinated with platform and identity teams.
Detect security control bypass and configuration drift
Implementation Effort: Medium – Building bypass and drift detection from posture, audit, and CodeQL signals and routing findings to owners is a multi-step effort across security and platform teams.
Discover and inventory source code repositories across all platforms
Implementation Effort: Medium – Enumerating repositories across GitHub, Azure DevOps, GitLab, and self-managed servers and reconciling them against identity and billing signals is a multi-step effort across security and platform teams.
001: Design permissions and access
Overview
002: Discover servers and infrastructure for building and deploying code
Overview
003: Harden servers and infrastructure for building and deploying code
Overview
004: Define Developer Workstation Policies
Overview
005: Implement Defender for Servers to continuously monitor
Overview
006: Harden target infra (Defender for Cloud)
Overview
007: Define developer access policies using Access Packages
Overview
008: Implement access and PIM (JIT/JEA) policies for developers
Overview
009: Define governance approach for groups with DevSecOps privileges
Overview
010: Discover existing GitHub Accounts and permissions
Overview
011: Integrate GitHub with Entra ID
Overview
012: Remediate non-Entra ID accounts and assignments
Overview
013: Discover, review and adjust permissions based on role
Overview
014: Create process to periodically review unused/stale credentials
Overview
015: Design code publishing approach
Overview
016: Configure publishing approach for deploying to Azure
Overview
017: Define developer access to Azure as needed
Overview
018: Design organization security and analysis settings
Overview
019: Decide whether to use the default setup or an advanced custom setup for CodeQL
Overview
020: Deploy GitHub Advanced Security - CodeQL
Overview
021: Deploy GitHub Secret Scanning
Overview
022: Specify configuration settings for Dependabot
Overview
023: Integrate with Defender for DevOps
Overview
024: Triage results and remediate
Overview
025: Deploy GitHub Advanced Security - Dependabot
Overview
026: Evaluate SAST and DAST tools (3P)
Overview
027: Discover existing ADO accounts and permissions
Overview
028: Remediate non-Entra ID accounts and assignments
Overview
029: Integrate Azure DevOps with Microsoft Entra ID
Overview
030: Discover, review and adjust permissions based on role
Overview
031: Set up service connections to deploy to Azure
Overview
032: Design code publishing approach
Overview
033: Configure publishing approach for deploying to Azure
Overview
034: Deploy GitHub Advanced Security for Azure DevOps
Overview
035: Integrate with Defender for DevOps
Overview
036: Triage results and remediate
Overview
037: Evaluate Dynamic Scanning (3P)
Overview