11. How would you design production release governance with separation of duties?
A regulated service must promote one already-tested artifact from staging to production. Design protected source and release branches, immutable artifact identity, automated evidence, quality gates, independent approval, least-privilege deployment execution, emergency access, audit history, and rollback. Explain how the flow prevents an approver or deployer from silently rebuilding or substituting the release.
I would build the artifact once in CI, store it immutably, and identify it by its exact digest. Staging and production must use that same digest. Protected branches control source changes. Automated tests, scans, SBOM data, provenance, signatures, and build records create evidence tied to the digest. An independent release manager reviews that evidence and approves promotion. A separate deployment identity can fetch and deploy only the approved digest with least privilege. It cannot rebuild the application, modify source, change the approval, or substitute another artifact. Every approval, deployment, emergency action, and rollback is recorded in tamper evident audit history.
The goal is to move one tested release from staging into production without allowing anyone to secretly change it. Different people receive different responsibilities. One person can change the product, another person decides whether the release is allowed, and another person performs the deployment. The exact item being released is recorded so everyone can prove what moved. Checks happen before approval. Important actions are recorded. Special emergency access is temporary and reviewed. If the release causes a problem, the team can return to the previously approved version.
- Which regulatory or audit requirements must this release process satisfy?
- Must every production release have a human approval?
- What recovery time is expected if production validation fails?
I would start with protected Git branches. Developers can change code through reviewed pull requests, but they cannot approve or deploy production releases. The main source branch requires review, ownership rules, status checks, and signed commits. A protected release branch is created from approved main branch history. After testing and sign off, it becomes immutable except for controlled release metadata.
CI performs the build using a pinned toolchain. It runs unit tests, linting, static security checks, integration tests, vulnerability checks, license checks, and infrastructure policy checks. CI then creates the OCI image, SBOM, provenance statement, and artifact signature. The artifact repository stores the image immutably by digest. Automated evidence such as test results, scan reports, build logs, provenance, and metrics is stored immutably and linked to that digest.
Staging deploys the exact digest. After staging validation, an independent release manager reviews the release candidate, evidence, change summary, risk, and change ticket. The approver is not the developer or deployer. MFA and justification are required. Approval creates a signed release tag or release record that points to the approved artifact.
The CD pipeline uses a separate least privilege identity. It fetches the artifact by digest from the release manifest. Policy checks validate the target environment, image allowlist, and change window. The deployment role can pull the approved image and deploy through Kubernetes or Helm, but it has no cluster administrator rights and cannot modify source, approval records, or the artifact. Readiness and smoke checks verify the deployment.
Production observability collects metrics, logs, traces, and alerts. If needed, rollback redeploys the previous approved digest or previous approved release tag. Approval records, deployment logs, evidence bundles, access logs, and rollback events are written to a tamper evident audit store. Emergency access requires an incident ticket, a time bound elevated role, MFA, justification, automatic auditing, and a required review after the incident. This prevents an approver or deployer from silently rebuilding or substituting the release because approval and deployment are both bound to the same immutable artifact identity.
Interviewers ask this question to test whether a candidate can design a controlled production release process for a regulated service. They want to see clear separation between people who change code, people who approve a release, and people who execute deployment. They also evaluate knowledge of protected branches, immutable artifact identity, automated evidence, quality gates, least privilege access, emergency controls, audit history, and rollback.
Common mistakes include rebuilding the application during production deployment, promoting a mutable image tag instead of an immutable digest, allowing the approver to modify code or trigger a new build, allowing the deployer to approve the release, and giving the deployment identity broad administrator access. Other mistakes include storing evidence without linking it to the artifact digest, letting release branches change after sign off, skipping signature or provenance verification, allowing an unapproved image outside the allowlist, providing permanent emergency administrator access, and calling rollback safe without keeping the previous approved artifact available.
Explain one artifact identity from start to finish. First say who can change code, who can approve, and who can deploy. Then explain that CI builds once and that staging, approval, production deployment, audit evidence, and rollback all reference the same immutable digest. Finish with least privilege, emergency access, monitoring, and tamper evident audit history. This makes the separation of duties easy for the interviewer to verify.










