Chapter 4: Governance, compliance, and trust
The introduction argues that platform engineering must change how organizations handle governance and compliance without taking control of CI/CD pipelines away from developers.
After this chapter you will be able to
- Organizational sources of friction. Explain why buying a tool or funding a one-time project is unlikely to resolve governance and compliance friction in platform engineering.
- Developer control of pipelines. Explain why the introduction favors development teams retaining functional control of CI/CD pipelines rather than treating them as centralized compliance gates.
- Skill-dependent value of checklists. Explain why a checklist can improve a novice’s performance but hinder an expert’s, using the pilot study or the section’s examples.
- Structured developer autonomy. Describe how a platform can support novice developers and give experienced developers room to make decisions without abandoning governance.
- Developer control with guardrails. Explain why development teams should retain control of their pipelines and how separating compliance work from verification reduces friction without removing guardrails.
- Verification at the point of change. Describe when compliance verification occurs and how a Kubernetes admission controller can intercept a deployment before it proceeds.
- Evidence checks and configuration checks. Distinguish verifying evidence that compliance work was done from directly checking a deployment’s configuration, using the scan-record and label examples.
- Policy enforcement with team ownership. Explain how a platform can enforce an organization-wide requirement while development teams retain ownership of their pipelines, using the test-coverage example.
- OPA policy evaluation model. Explain how Open Policy Agent uses data and Rego requirements to make a policy decision, and how it can enforce governance requirements as a Kubernetes admission controller.
- Predicates and data domains. Describe how a Rego assertion expresses an approved condition, and explain the section’s distinction between a predicate, a subject variable, and the domain of possible subjects.
- Deployment coverage policy. Trace how the Kubernetes deployment example uses admission-time input and code-coverage data to enforce the 80% requirement, and state the additional deployment requirements posed in the exercise.
- Platform support for digital trust. Explain the section’s claim that using an engineering platform to support custom software development is the most efficient way to build and maintain trust.
- Commit-to-deployment provenance. Describe the identity, audit, and artifact-integrity measures the section proposes for tracing software from development to deployment.
- Automated supply chain enforcement. Explain how the platform can provide supply chain safeguards without manual friction and how it can check requirements before deployment.
- Zero-trust security assessment. Explain why zero-trust networking does not treat presence on an internal network as proof that a system is secure, and what follows for assessing individual systems.
- Service-mesh authorization with OPA. Trace how the section's service-mesh and OPA approach can restrict calls to an API to authorized applications.
- Pod-network architecture tradeoffs. Justify why the section favors a portable, dedicated service mesh over taking on a self-managed pod network solely for its policy features.
- Team-centered authorization model. Distinguish individual authentication from team-centered authorization and describe what team membership should grant by default.
- Intermediary identity and claims. Describe the identity provider’s intermediary role and how authorization claims reach services through OIDC token issuance.
- Platform-managed infrastructure access. Explain how team claims apply to control-plane permissions and why the platform provisions infrastructure on users’ behalf.
- Event-driven team integration. Trace how a Teams API and integration APIs keep a newly onboarded team’s resources and permissions aligned across systems.
Section by section
Introduction
The introduction argues that platform engineering must change how organizations handle governance and compliance without taking control of CI/CD pipelines away from developers.
- Organizational sources of friction: Explain why buying a tool or funding a one-time project is unlikely to resolve governance and compliance friction in platform engineering.
Why it matters: A platform cannot remove friction if the organization preserves the decisions and incentives that create it. - Compliance responsibilities and roadblocks: Describe why necessary compliance requirements should not simply become implementation tasks assigned to stakeholder teams.
Why it matters: The goal is to meet real requirements without recreating the obstacles developers already face. - Developer control of pipelines: Explain why the introduction favors development teams retaining functional control of CI/CD pipelines rather than treating them as centralized compliance gates.
Why it matters: Who controls pipelines affects both developers’ ability to build quality into delivery and the friction they encounter.
Key terms: governance, compliance, engineering friction, audit, security, platform engineering standards, CI/CD pipelines, developer autonomy, command and control gate
4.1 Developer autonomy
The section explains why developer autonomy should vary with experience while remaining within a structure that supports governance.
- Skill-dependent value of checklists: Explain why a checklist can improve a novice’s performance but hinder an expert’s, using the pilot study or the section’s examples.
Why it matters: The same control can help someone learning a task and slow down someone who has mastered it. - Structured developer autonomy: Describe how a platform can support novice developers and give experienced developers room to make decisions without abandoning governance.
Why it matters: A platform can remove needless delays for experienced developers while still helping newcomers and maintaining controls.
Key terms: Dreyfus Skill Model, novices, experts, intuition, checklists, developer autonomy, starter kits, governance, centralized pipeline team, build and release pipelines
4.1.1 What does it mean to make a development team autonomous?
The section explains how development teams can control their own pipelines while the platform verifies compliance when changes reach an environment.
- Developer control with guardrails: Explain why development teams should retain control of their pipelines and how separating compliance work from verification reduces friction without removing guardrails.
Why it matters: This distinction is what makes developer autonomy compatible with compliance. - Verification at the point of change: Describe when compliance verification occurs and how a Kubernetes admission controller can intercept a deployment before it proceeds.
Why it matters: Checking at deployment keeps verification close to the change without dictating how developers organize their pipelines. - Evidence checks and configuration checks: Distinguish verifying evidence that compliance work was done from directly checking a deployment’s configuration, using the scan-record and label examples.
Why it matters: The two examples show what a deployment guardrail actually verifies—and what it does not need to redo. - Reusable compliance work in pipelines: Explain how reusable, versioned pipeline code lets teams perform required compliance work while keeping their choice of pipeline.
Why it matters: A shared way to do the work makes the guardrail practical without imposing one team-owned pipeline. - Other settings and checking times: Describe how the point-of-change strategy can extend beyond Kubernetes and how immediate post-change scans differ from prechecks.
Why it matters: The autonomy principle does not depend on a single control plane or on blocking every change in advance.
Key terms: developer autonomy, guardrails, compliance work, compliance verification, point of change, all the way left, admission controller, validating webhooks, authoritative source, image commit SHA
4.2 Policy-as-code
This section explains why a platform needs a policy engine to enforce shared requirements without taking ownership of development teams’ pipelines, and introduces Open Policy Agent as one option.
- Policy enforcement with team ownership: Explain how a platform can enforce an organization-wide requirement while development teams retain ownership of their pipelines, using the test-coverage example.
Why it matters: Shared rules can be enforced without taking control of teams’ delivery pipelines. - Open Policy Agent option: Describe Open Policy Agent’s role as a policy-engine option and identify Rego as the language used to interact with it.
Why it matters: It identifies the policy engine used in the book’s examples without implying it is the only choice.
Key terms: policy-as-code, compliance at the point of change, admission controllers, policy engine, Open Policy Agent, OPA, Rego, declarative policy engine
4.2.1 Introduction to policy-as-code using Open Policy Agent
This section introduces how OPA evaluates Rego policies, then applies that model to site access and Kubernetes deployment decisions.
- OPA policy evaluation model: Explain how Open Policy Agent uses data and Rego requirements to make a policy decision, and how it can enforce governance requirements as a Kubernetes admission controller.
Why it matters: This is the basic model behind the section’s access and deployment examples. - Predicates and data domains: Describe how a Rego assertion expresses an approved condition, and explain the section’s distinction between a predicate, a subject variable, and the domain of possible subjects.
Why it matters: Predicates and domains explain why the same stated requirement can evaluate differently for different data. - Age-based access decision: Trace the site-access example from its age requirement and user data to the different decisions for Ling and Ama.
Why it matters: The age example shows how an assertion turns a stated requirement into a concrete access decision. - Deployment coverage policy: Trace how the Kubernetes deployment example uses admission-time input and code-coverage data to enforce the 80% requirement, and state the additional deployment requirements posed in the exercise.
Why it matters: This example connects policy evaluation to a deployment decision using evidence from an external reporting tool.
Key terms: Open Policy Agent, OPA agent, admission controller, Rego, JSON, declarative, assertion, predicate, subject variable, data domain
4.3 Platform-managed trust
The section frames an engineering platform as a way to establish and maintain trust in custom software, while previewing trust topics covered next.
- Platform support for digital trust: Explain the section’s claim that using an engineering platform to support custom software development is the most efficient way to build and maintain trust.
Why it matters: This claim provides the trust rationale for the platform practices discussed next.
Key terms: engineering platform, trust, custom software
4.3.1 Software supply chain security
This section explains how an engineering platform can establish software provenance and enforce supply chain security from commit to deployment without relying on manual checks.
- Supply chain attack risk: Explain how a compromised build process can make malicious software appear trustworthy and why preventing such attacks matters.
Why it matters: A trusted-looking release is not enough if the process that produced it has been compromised. - Commit-to-deployment provenance: Describe the identity, audit, and artifact-integrity measures the section proposes for tracing software from development to deployment.
Why it matters: These measures provide evidence of who changed the code, what the pipeline accessed, and what went into the deployed image. - Automated supply chain enforcement: Explain how the platform can provide supply chain safeguards without manual friction and how it can check requirements before deployment.
Why it matters: Platform-provided automation makes the secure path easier for development teams while retaining checks before deployment.
Key terms: software supply chain security, software provenance, CI/CD process, signed commits, content trust, signed images, software bill of materials (SBOM), software-defined, reusable pipeline code, point-of-change compliance
4.3.2 Zero-trust networking
This section explains how to apply zero-trust networking to platform services and weigh service-mesh controls against network-level policies and self-managed pod networking.
- Zero-trust security assessment: Explain why zero-trust networking does not treat presence on an internal network as proof that a system is secure, and what follows for assessing individual systems.
Why it matters: A service should remain secure even when the network around it changes. - Service-mesh authorization with OPA: Trace how the section's service-mesh and OPA approach can restrict calls to an API to authorized applications.
Why it matters: The platform can offer a common authorization path without making every service team solve general access controls alone. - Default-deny service access: Describe how the service-mesh example blocks unregistered destinations and permits a specifically approved service.
Why it matters: A default-deny rule makes permitted destinations explicit rather than allowing every destination unless someone blocks it. - Pod-network architecture tradeoffs: Justify why the section favors a portable, dedicated service mesh over taking on a self-managed pod network solely for its policy features.
Why it matters: The policy technology chosen also affects security-assessment boundaries, operating costs, and portability. - Evidence for network self-management: State what evidence the section calls for before self-managing a pod or service network for performance, and how it qualifies its eBPF recommendation.
Why it matters: Measured customer impact is a stronger reason to accept networking complexity than a presumed performance gain.
Key terms: zero-trust networking, threat assessment, network settings, service mesh, OPA, policy-as-code, service mesh proxy, web tokens, default deny, ServiceEntry
4.3.3 Separating platform customer identity from cloud infrastructure identity
This section explains how a team-centered customer identity and integration architecture can give developers consistent access without tying their identities to cloud infrastructure accounts.
- Fragmented developer access: Explain why obtaining access to developer tools and infrastructure is often slow, and why centralizing access to SaaS tools alone does not solve the whole problem.
Why it matters: A self-serve platform experience has to cover the resources developers actually need, not just the easiest tools to integrate. - Team-centered authorization model: Distinguish individual authentication from team-centered authorization and describe what team membership should grant by default.
Why it matters: A consistent team boundary makes access easier to provide and maintain as teams and platform resources change. - Intermediary identity and claims: Describe the identity provider’s intermediary role and how authorization claims reach services through OIDC token issuance.
Why it matters: Claims let the same customer identity support control-plane access and custom platform integrations without making each underlying system the identity authority. - Platform-managed infrastructure access: Explain how team claims apply to control-plane permissions and why the platform provisions infrastructure on users’ behalf.
Why it matters: This preserves a product-like developer experience while keeping the platform responsible for how infrastructure is created and managed. - Event-driven team integration: Trace how a Teams API and integration APIs keep a newly onboarded team’s resources and permissions aligned across systems.
Why it matters: Team onboarding can become one coordinated action even when different departments continue to administer the underlying systems.
Key terms: developer onboarding, time to first production deployment, self-serve, authentication, authorization, team member, team membership, identity provider, OpenID Connect, authorization server
4.4 Summary
Where this is used later
- Reusable pipeline code (chapter 6) · The earlier discussion of developer autonomy.
- Developer tools selection criteria (chapter 6) · Establishes the value of development-team autonomy.
- Which services or extensions should be a part of every platform from the start? (chapter 8) · The idea of expressing organizational policy in ways teams can apply consistently.
- Cloud service control plane base (chapter 7) · Provides the admission-policy context for a Kubernetes control plane.
- Service mesh (chapter 8) · Provides the security rationale for considering a service mesh.
- Private executors (runners) (chapter 6) · The earlier discussion of zero-trust networking provides context for the recommended public-facing approach.
- Managing teams and namespaces for early adopters (chapter 8) · Managing teams and namespaces builds on the need to coordinate team resources.
- Service accounts and permissions (chapter 6) · The distinction between platform customer identity and cloud infrastructure identity.
Concepts explained in this chapter
- RegoRego is a declarative policy language used by Open Policy Agent to evaluate structured input against authorization and other rules.
- policy as codePolicy-as-code is the practice of representing organizational policies as machine-readable code that can be evaluated and enforced automatically.
- Open Policy AgentOpen Policy Agent is an open-source policy engine that evaluates declarative policies independently of the application or infrastructure being governed.
- identity providerAn identity provider is a system that authenticates entities and supplies identity or authorization information to relying applications and services.
- JSON Web TokenA JSON Web Token is a compact, signed token format for conveying claims between parties.
- authenticationAuthentication is the process of verifying the identity of a user, service, or automated process.
- authentication and authorizationAuthorization is the determination of whether an authenticated caller is permitted to perform a requested action or access a resource.
- authorization serverAn authorization server is a service that issues tokens and communicates authorization information to clients or relying services.
- claimA claim is an assertion about an authenticated entity or its permissions conveyed as identity data or in a token.
- customer identity abstraction layerA customer identity abstraction layer is an intermediary that decouples platform-user identities and permissions from the identities of underlying infrastructure resources.
- event-driven architectureEvent architecture is a system design pattern in which components communicate and integrate through emitted and consumed events.
- openid connectOpenID Connect is an identity layer built on OAuth 2.0 that enables clients to verify user identity and obtain standardized identity claims.
- self-serviceSelf-service is a pattern in which users obtain resources or perform supported operations directly without depending on an intermediary for each request.
- streamingAn event stream is an ordered, continuously produced sequence of events that can be consumed by software systems and is not modified after creation.
- team membershipTeam membership is the association between a user and a team that determines the team-derived resources or permissions available to that user.
- team-based authorization modelA team-based authorization model assigns principal permissions primarily through membership in a development team rather than through individual identity alone.
- autonomyAutonomy is the ability of developers or teams to work and make decisions independently within their responsibilities.
- zero-trust networkingA zero-trust network control restricts network access based on explicit verification and policy rather than implicit trust in network location.
- assertionAn assertion is a declarative statement that evaluates as true or false for given data.
- code coverageTest coverage is the proportion of specified code, paths, branches, or behaviors exercised by automated tests.
- GatekeeperGatekeeper is an open-source Kubernetes admission controller that enforces policies through Open Policy Agent integration.
- admission controllerA mutating admission controller API allows a cluster control plane to modify resource requests before they are persisted or executed.
- compliance at the point of changeCompliance at the point of change verifies compliance through a control mechanism before a software change is made.
- guardrailA guardrail is a control that constrains system behavior by preventing or flagging operations outside an allowed threshold or policy.
- validating webhookA validating webhook is an HTTP callback that examines a requested resource operation and accepts or rejects it before the operation proceeds.
- CosignCosign is an open-source tool for signing and verifying container images and other software artifacts.
- content trustContent trust is a mechanism for verifying the authenticity and integrity of published software content through digital signatures.
- signed commitA signed commit is a source-control commit accompanied by a cryptographic signature that authenticates its author and protects its contents from undetected modification.
- software bill of materialsA software bill of materials is a structured inventory of the components and dependencies contained in a software product.
- software supply chain securitySoftware supply chain security is the protection of software source code, build processes, dependencies, artifacts, and delivery mechanisms from compromise or unauthorized modification.
- Dreyfus Skill ModelThe Dreyfus Skill Model is a model of skill acquisition describing progression from novice rule-following to expert and master intuitive performance.
- starter kitA language starter kit is a preconfigured set of resources for beginning development in a particular programming language.
- deployment pipelineAn automated deployment pipeline is a tool-driven sequence that builds, validates, and deploys software with minimal manual intervention.
- complianceCompliance is adherence to applicable laws, regulations, policies, and prescribed controls.
- data governanceGovernance is the set of policies, controls, and decision processes that direct and constrain organizational technology practices.
- platform engineeringAn engineering platform is an internal development-oriented product that provides teams with self-service access to tools, infrastructure, and cross-functional capabilities while incorporating organizational requirements.
- namespace apiA namespace API is an interface that ensures the required team namespaces and their resource configuration exist in designated clusters.
- vulnerability scanningA vulnerability scan is an automated examination of software or artifacts for known security weaknesses.
These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.
