{"id":3241,"date":"2026-10-08T12:09:59","date_gmt":"2026-10-08T12:09:59","guid":{"rendered":"https:\/\/www.examtopics.biz\/blog\/microsoft-az-400-devsecops-azure-devops-github\/"},"modified":"2026-10-11T17:39:12","modified_gmt":"2026-10-11T17:39:12","slug":"microsoft-az-400-devsecops-azure-devops-github","status":"publish","type":"post","link":"https:\/\/www.examtopics.biz\/blog\/microsoft-az-400-devsecops-azure-devops-github\/","title":{"rendered":"Microsoft AZ-400: DevSecOps in Azure DevOps and GitHub"},"content":{"rendered":"<p>DevSecOps integrates security evidence into the software-delivery workflow so defects are found and prioritized while code is being designed, reviewed, built, and released. For <a href=\"https:\/\/www.examtopics.biz\/az-400\">AZ-400<\/a>, this is part of delivery architecture: the objective is not to run every scanner on every commit, but to place security controls where they provide useful feedback without turning pipelines into permanent bottlenecks.<\/p>\n<p>The security architecture perspective in <a href=\"https:\/\/www.examtopics.biz\/sc-100\">SC-100<\/a> reinforces a second principle: code security, dependency risk, secrets, identity, infrastructure, and runtime policy are connected. GitHub and Azure DevOps now provide first-party options for code scanning, dependency analysis, secret protection, and pull-request gating, but the value comes from how teams use the findings and exceptions, not from simply enabling the product.<\/p>\n<h2>Shift security left without shifting every decision to developers<\/h2>\n<p>Shift-left means security evidence appears early enough to change the design or code cheaply. Pair early feedback with security champions or central specialists who can help interpret difficult findings. Developers should not be expected to become cryptographers or threat-intelligence analysts simply because the pipeline surfaced an alert; the operating model needs clear escalation for expertise and ownership of complex remediation and exception review. Threat modeling, secure coding standards, dependency policy, secret prevention, and static analysis can all happen before production. The goal is faster correction, not transferring all security accountability to application teams without support.<\/p>\n<p>Define which findings block merge, which create work items, and which are reviewed after merge. Map gates to repository and service criticality instead of imposing one global threshold. A payment service, internal prototype, infrastructure repository, and documentation site should not inherit identical release friction when their threat and impact profiles differ. A pipeline that blocks on every low-confidence alert will be bypassed or ignored. Security teams should calibrate gates with developers, publish severity and exception criteria, and maintain a path for urgent releases that still leaves an auditable record.<\/p>\n<h2>Use code scanning to find implementation weaknesses<\/h2>\n<p>GitHub code scanning and GitHub Advanced Security for Azure DevOps can use CodeQL to identify code-level vulnerabilities such as injection or authentication flaws. Scanning should target languages and repositories where the analysis is supported and meaningful. Default setup can simplify onboarding, while advanced setup allows teams to tune build steps, queries, languages, and schedules.<\/p>\n<p>Treat results as engineering findings, not as absolute truth. Tune queries around application frameworks and known safe patterns, and use baseline analysis to separate newly introduced defects from legacy debt. New-code gating is often more workable than suddenly blocking a mature repository because thousands of pre-existing alerts became visible on one day. Review data flow, exploitability, reachability, and application context before accepting or dismissing an alert. Track dismissals with reasons and periodically review recurring false positives; a growing dismissal pattern may indicate that the query, coding pattern, or architecture needs improvement.<\/p>\n<h2>Prevent secrets before they enter repository history<\/h2>\n<p>Secret scanning finds credentials or token patterns committed to repositories, while push protection can block supported secrets before the commit is accepted. Prevention is preferable because a secret in Git history may remain recoverable even after the visible file is corrected.<\/p>\n<p>A detected secret should be revoked or rotated, not merely deleted from the branch. Review fork, cache, artifact, package, and build-log exposure because the value may have propagated beyond the original commit. If the secret belongs to production, coordinate rotation with service owners so remediation does not create an outage that encourages teams to ignore future alerts. Determine where the credential was used, review audit logs for unexpected activity, and replace long-lived credentials with managed identity, workload identity, short-lived federation, or a secret store where possible. The same operational discipline described in <a href=\"https:\/\/www.examtopics.biz\/blog\/how-to-store-and-manage-secrets-safely-in-terraform-infrastructure\/\">Terraform secret management<\/a> applies to pipeline and application secrets.<\/p>\n<h2>Dependency security needs inventory, reachability, and ownership<\/h2>\n<p>Dependency scanning identifies known vulnerabilities in direct and transitive packages. A useful process records the package, vulnerable version, affected application, business owner, exposure, available fix, and whether the vulnerable component is actually used in a reachable path. Raw advisory count is not a prioritization strategy.<\/p>\n<p>Keep package managers and lockfiles current so scanners can identify exact versions. Capture software bill-of-materials or package inventory where the platform supports it so responders know which deployed artifacts include a vulnerable component. Dependency security becomes operationally useful only when an advisory can be traced to an application version and owner. Establish rules for abandoned packages, unsupported runtimes, and dependencies with high-severity known exploitation. When an update cannot be deployed immediately, document the compensating control and expiration rather than leaving the alert in an indefinite accepted state.<\/p>\n<h2>Make pull-request security gates selective and reliable<\/h2>\n<p>Security checks can be required as branch or pull-request policies when the organization has enough confidence in the signal. Azure DevOps now supports Advanced Security status checks that can gate pull requests on high or critical findings, and GitHub rulesets can require code scanning or secret-related conditions for targeted branches.<\/p>\n<p>Do not let one unstable scanner become a single point of failure for all delivery. Define timeout behavior, retry policy, and service-outage procedure for mandatory checks. If the security platform is unavailable, the exception path should be explicit and reviewed rather than allowing ad hoc manual merges by whichever administrator happens to be online. Monitor check availability, execution time, and false-block rates. Design fail-open or fail-closed behavior according to risk, and ensure teams understand which controls are mandatory even when a product outage or license problem affects the normal status check.<\/p>\n<h2>Secure the pipeline identities and execution environment<\/h2>\n<p>A secure repository can still be compromised through an overprivileged build service, self-hosted runner, service connection, or artifact repository. Pipeline identities should have only the permissions needed for the current stage, and production deployment should use a separate identity from ordinary build and test operations.<\/p>\n<p>Protect self-hosted agents from untrusted code, clean workspaces, rotate credentials, restrict outbound access, and patch runner images. Avoid running untrusted pull-request code on persistent privileged runners unless isolation is designed for that use case. The pipeline execution boundary is part of the attack surface because build scripts can read files, call services, and interact with credentials made available to the job. Where possible, use ephemeral workers so one build cannot leave persistence for the next. Treat CI\/CD infrastructure as privileged production infrastructure because it can often sign, publish, or deploy trusted artifacts.<\/p>\n<h2>Protect artifact integrity between build and deployment<\/h2>\n<p>A successful build should produce an immutable artifact that later stages promote without rebuilding source. Rebuilding for each environment can introduce dependency drift or a different compiler, package, or base image than the one that passed security checks. Attach provenance, version, and test evidence to the artifact.<\/p>\n<p>Control who may publish or replace artifacts, and verify package or container sources. Sign or attest artifacts where the delivery system supports it, and verify that deployment stages select artifacts by immutable version or digest. A mutable \u201clatest\u201d tag weakens the link between the code that was reviewed and the software that was actually deployed. Security gates are weakened if an attacker can alter an image in the registry after the scan or substitute an unreviewed package during deployment. Artifact integrity connects source review to what actually runs.<\/p>\n<h2>Use policy and infrastructure scanning before deployment<\/h2>\n<p>Infrastructure code, Kubernetes manifests, cloud policy, and configuration can create security exposure without a defect in application code. Scan base images and container dependencies as part of the same flow when they are inside the delivery boundary. The application source may be clean while an outdated runtime image introduces a critical vulnerability at deployment time. Add syntax validation, policy-as-code checks, IaC scanning, and cloud-specific what-if or plan review before deployment. Focus gates on controls with clear organizational requirements such as public exposure, encryption, privileged IAM, or prohibited regions.<\/p>\n<p>The secure development practices in <a href=\"https:\/\/www.examtopics.biz\/blog\/secure-software-development-common-coding-techniques-to-prevent-vulnerabilities\/\">secure software development<\/a> remain relevant because DevSecOps is not only a scanner stack. Design review, safe defaults, validation, logging, and least privilege reduce the number of issues a pipeline needs to catch later.<\/p>\n<h2>Measure security flow from finding to remediation<\/h2>\n<p>A mature DevSecOps program measures time to detect, time to triage, time to remediate, recurrence, exception age, and security coverage across repositories. Also track control adoption: which repositories have secret protection, code scanning, dependency coverage, branch gates, and protected deployment identities. Gaps in onboarding are often more dangerous than imperfect tuning on repositories that are already covered. Scanner count and alert volume are weak metrics if findings remain open for months or teams repeatedly introduce the same flaw.<\/p>\n<p>Connect findings to owners, service risk, and release decisions. Review whether the pipeline is catching defects before production and whether developers receive feedback fast enough to act. The purpose of security automation is a safer flow of change, not a larger security dashboard. Include security-product availability and license state in operational monitoring so a disabled scanner or expired entitlement cannot silently turn a required control into a permanently passing no-op. A gate is only meaningful when the team can prove the underlying analysis actually ran. Review the program quarterly for obsolete gates, unused exceptions, repositories that were never onboarded, and findings that no longer map to a supported service. DevSecOps controls should evolve with the delivery architecture instead of becoming a permanent pile of legacy pipeline tasks.<\/p>\n<p>Security gates should be risk based rather than uniformly blocking. A critical secret exposure may justify an immediate stop, while a lower-severity dependency finding may be accepted temporarily with an owner and deadline. The pipeline should preserve that decision as evidence. Otherwise teams either disable noisy controls to keep delivery moving or accumulate exceptions that no one can later explain or retire.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>DevSecOps integrates security evidence into the software-delivery workflow so defects are found and prioritized while code is being designed, reviewed, built, and released. For AZ-400, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[129,29,30,47],"tags":[],"class_list":["post-3241","post","type-post","status-publish","format-standard","hentry","category-exam-az-400","category-certifications","category-cloud-computing","category-microsoft-certifications"],"_links":{"self":[{"href":"https:\/\/www.examtopics.biz\/blog\/wp-json\/wp\/v2\/posts\/3241","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.examtopics.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.examtopics.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.examtopics.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.examtopics.biz\/blog\/wp-json\/wp\/v2\/comments?post=3241"}],"version-history":[{"count":1,"href":"https:\/\/www.examtopics.biz\/blog\/wp-json\/wp\/v2\/posts\/3241\/revisions"}],"predecessor-version":[{"id":3742,"href":"https:\/\/www.examtopics.biz\/blog\/wp-json\/wp\/v2\/posts\/3241\/revisions\/3742"}],"wp:attachment":[{"href":"https:\/\/www.examtopics.biz\/blog\/wp-json\/wp\/v2\/media?parent=3241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.examtopics.biz\/blog\/wp-json\/wp\/v2\/categories?post=3241"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.examtopics.biz\/blog\/wp-json\/wp\/v2\/tags?post=3241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}