Change Management Policy template (SOC 2)

Requires that every change to production code, infrastructure and security-relevant configuration is proposed, reviewed, tested, approved and deployed through a controlled and traceable process.

Policy P09 of 22 · Owner: Engineering Lead · 3 criteria in the crosswalk · Apache-2.0

What this policy is for

The Change Management Policy is one of the 22 governance policies in the Policyseed set. It is owned by the Engineering Lead, approved by the executive you name in the intake, and reviewed on the cadence you choose. Like every policy in the set it has nine numbered sections: purpose, scope, roles, policy statements, procedures, exceptions, enforcement, review cadence and a revision history table. Sections 4 and 5 carry the substance; those are the sections the Audit Kit rewrites for your named tools.

SOC 2 criteria this policy addresses

The Policyseed crosswalk maps 3 criteria to this policy. Each row names the section an auditor would read for that criterion; the criterion pages explain what it asks in plain words and list evidence examples.

CriterionWhat it coversWhere in this policy
CC3.4Changes that affect riskSection 4 (Policy Statements)
CC5.2Technology controlsSection 4 (Policy Statements)
CC8.1Change managementSection 4 (Policy Statements), Section 5 (Procedures)

Evidence auditors typically ask for

A policy is tested against artifacts. These are examples from the crosswalk for the criteria above, written for a small SaaS company; the Audit Kit ships the full list as an evidence checklist with an owner per row.

  • Risk register revision history showing an update tied to a major change in the period
  • Change ticket for a significant architecture change with a risk review field completed
  • Policy Review Calendar entry showing an out-of-cycle review triggered by a change
  • Cloud IAM configuration export showing role-based groups rather than individual grants
  • Branch protection settings export for production repositories
  • Infrastructure-as-code repository with pull request history for infrastructure changes
  • Branch protection settings export requiring pull request review and passing checks before merge
  • Sample of merged pull requests from the period showing reviewer approval and CI status

How to put the Change Management Policy in place

Adopting the document is the easy part; the auditor tests whether it runs. These steps take it from a signed policy to a control with evidence, for a cloud company of 5 to 200 people.

  1. In your source control platform (for example GitHub), enable branch protection on the default and release branches requiring at least one approving review, all CI status checks to pass, dismissal of stale approvals, no force pushes and no branch deletion, and apply the rules to administrators too.
  2. Disable self-approval, and if the team is too small to have an independent reviewer, name the Security Owner or a technically competent member of Executive Management as the reviewer. Do not waive the requirement.
  3. Add a pull request template that asks for description, linked issue, risk classification, test evidence, rollback plan, customer impact and whether the change is security-relevant.
  4. Configure CI (for example GitHub Actions) to run the test suite, linting, dependency scanning, static analysis, secret scanning, infrastructure-as-code validation and a build on every pull request, and make failures block merge.
  5. Use code ownership rules so that changes to authentication, authorization, data access, cryptography, cloud IAM, network exposure and logging route automatically to the Security Owner or designated security reviewer.
  6. Deploy to production only from the CI/CD pipeline using dedicated service identities scoped to one environment, with no personal credentials in the deploy path, and make sure each deployment record captures who triggered it, the commit and the outcome.
  7. Manage cloud infrastructure as code, attach the plan or diff to each pull request, and run monthly drift detection so console changes are reconciled back into code or reverted.
  8. Define the standard change catalog (for example automated dependency updates), the emergency procedure (second engineer notified, approval recorded in the incident ticket, retrospective review within two business days) and how emergency changes are labeled so they can be listed.
  9. Each month, sample the required share of production changes (the policy sets the minimum), and for each verify independent approval, passing checks and a deployment record. Confirm branch protection settings still match, and record the results for Executive Management.
  10. Each quarter, inventory the identities your pipeline uses to deploy to production, confirm each is scoped to one environment with no interactive login, and record the review. Retain pull requests, reviews, check results and deployment records for the period the policy sets.

Common audit findings and how to avoid them

What the auditor findsHow to avoid it
Changes to production were merged without an independent approval, or the author approved their own change.Show the branch protection configuration with self-approval disabled and administrators included, and keep the full sampling population with the reviewer's identity for each change.
The audit population of production changes was incomplete, so the auditor could not confirm every deployment had a pull request.Export deployments from the pipeline and pull requests from source control for the period, reconcile them, and explain every deployment that has no matching pull request (for example emergency changes).
Emergency changes lack the retrospective review, or there is no way to tell which changes were emergencies.Label emergency changes in source control, record approval in the incident ticket, and keep the retrospective review completed within the time the policy sets.
Branch protection was disabled or bypassed for part of the audit period, or checks were not required to pass.Keep the monthly change review showing branch protection confirmed, alert on setting changes in your source control audit log, and document and approve any temporary bypass as an exception.
Changes to systems not managed as code (identity provider policies, source control organization settings, DNS) have no ticket or approval.Require a ticket approved by the Security Owner with the before and after state for each such change, and reconcile the audit logs of those systems against the tickets.

Full text: the Change Management Policy rendered for Northwind Cloud Inc

Below is the complete template as the generator renders it for Northwind Cloud Inc, a fictional 11-50-person remote company running Northwind on AWS, Vercel, GitHub and Okta. Every name, tool and date comes from that sample intake; your answers replace them. Section headings carry anchors so the criterion pages can link straight to the section they cite.

Sample document

Northwind Cloud Inc Change Management Policy

1. Purpose

Most outages and many security weaknesses are introduced by changes: a rushed hotfix, an untested migration, a firewall rule opened in a console and forgotten. This policy defines how Northwind Cloud Inc proposes, reviews, tests, approves, deploys and records changes to Northwind and its supporting infrastructure, so that every production change traces to a reviewed request, an independent approval, passing tests and a deployment record. It is deliberately lightweight, because a process bypassed under pressure provides no assurance, and it supports the SOC 2 criteria for authorizing, testing and implementing changes and for preventing unauthorized software in production.

2. Scope

This policy applies to all changes to production systems: application code for Northwind, infrastructure-as-code and cloud configuration on AWS and Vercel, database schemas and migrations, container and base images, GitHub Actions configuration, security-relevant settings in third-party services including Okta, organization and repository settings in GitHub, DNS, certificates, and monitoring and alerting rules. It binds all employees and contractors who author, review, approve or deploy changes and any vendor granted write access to an in-scope system. Work confined to a local development environment is out of scope until it is proposed for production.

3. Roles and Responsibilities

  • Executive Management approves this policy, ensures engineering capacity allows for review and testing, and receives the monthly change report including emergency changes and bypasses.
  • Security Owner (Dana Whitfield, CTO) defines which changes are security-relevant and reviews them, verifies branch protection in GitHub, samples changes monthly and approves exceptions.
  • Engineering authors changes with adequate description and tests, performs peer review, maintains GitHub Actions and its required checks, deploys through the pipeline, monitors after deployment and executes rollbacks.
  • People Operations ensures every engineer receives this policy and change process training at onboarding and records acknowledgement.
  • All Personnel request changes to systems they do not administer through the ticketing process, never ask an engineer to bypass review, and report suspected unauthorized changes to security@northwindcloud.example.

4. Policy Statements

  • 4.1 All production code and infrastructure-as-code lives in GitHub, and production reflects only what has been merged to the protected default or release branch. Editing code or configuration directly on servers, in containers or in cloud consoles is prohibited except under the emergency procedure in 5.6, and any such change is reconciled into GitHub afterwards.
  • 4.2 Every change is made through a pull or merge request in GitHub. Branch protection on default and release branches requires at least one approving review from someone other than the author, requires all status checks from GitHub Actions to pass, dismisses stale approvals on new commits, blocks force pushes and branch deletion, and applies to administrators without bypass.
  • 4.3 Changes are classified as standard (low-risk, repeatable and pre-approved through the standard change catalogue), normal (the full process in Section 5) or emergency (an active incident or imminent risk, handled under 5.6 with retrospective review).
  • 4.4 Every change is tested before deployment: every pull request runs the automated test suite, linting, dependency and static analysis scanning and build verification in GitHub Actions, new functionality includes automated tests, and failing checks block the merge.
  • 4.5 Changes affecting authentication, authorization, data access, cryptography, cloud IAM, network exposure or logging are security-relevant and additionally require approval from the Security Owner or a designated security reviewer, routed automatically through code ownership rules in GitHub.
  • 4.6 Production deployments are performed only by GitHub Actions using dedicated service identities scoped to the target environment. Personal credentials never deploy to production, and the deployment record captures who triggered it, the commit deployed and the outcome.
  • 4.7 Infrastructure on AWS and Vercel is defined as code in GitHub and changed through the same review and pipeline as application code, with the plan or diff attached to the pull request so reviewers see exactly which resources will be created, modified or destroyed.
  • 4.8 Database schema and data migrations are backward compatible with the running application version wherever possible, are tested in staging against representative data, and are preceded by a verified backup or snapshot when destructive or irreversible.
  • 4.9 The author of a change never approves it, and self-approval is disabled in GitHub. Where team size leaves no qualified independent reviewer, the Security Owner or a technically competent member of Executive Management reviews; the requirement is never waived.
  • 4.10 Every change has a documented rollback path: revert the merge, redeploy the previous artifact or disable a feature flag. For high-risk changes the rollback is tested in staging first, and the deploying engineer watches error rates and key metrics for at least 30 minutes after deployment in Datadog and rolls back if the service degrades.
  • 4.11 Development, staging and production are logically separated with distinct credentials, and changes are promoted through staging before production. Production customer data is not copied to lower environments except in anonymized or masked form approved by the Security Owner.
  • 4.12 Changes with potential customer impact are communicated internally before deployment and, where downtime or changed behavior is expected, are scheduled in an announced maintenance window and communicated to customers at least 48 hours in advance through the status page or release notes, consistent with Northwind Cloud Inc's availability commitments. Release notes are published for customer-visible changes.
  • 4.13 Security-relevant configuration changes in systems not managed as code, such as organization settings in GitHub, Okta policies, vendor administration consoles and DNS, are requested by ticket, approved by the Security Owner and recorded with the before and after state.
  • 4.14 The pull request, its review, the check results from GitHub Actions and the deployment record together form the change record and are retained for at least 12 months as audit evidence. Vendors and contractors follow the same process and hold no standing write access to production.

5. Procedures

  • 5.1 Proposal. The author opens a pull request in GitHub using the template, which requires a description, linked issue, risk classification, test evidence, rollback plan, expected customer impact and whether the change is security-relevant. Incomplete templates are returned to the author.
  • 5.2 Review. A reviewer who did not author the change reads the full diff, confirms tests cover it, checks for secrets and unsafe patterns, and requests changes or approves. Security-relevant changes route to the Security Owner or designated security reviewer through code ownership rules and cannot merge without that approval.
  • 5.3 Automated checks. Every pull request must pass unit and integration tests, linting, dependency vulnerability scanning, static application security testing, secret scanning, infrastructure-as-code validation and a successful build in GitHub Actions. Suppressing a failing check requires written justification in the pull request and Security Owner approval.
  • 5.4 Merge, deployment and verification. After approval and passing checks the change is merged to the protected branch; GitHub Actions deploys to staging, runs smoke tests and then deploys to production, automatically or on approval of a named engineer per repository configuration, tagging each deployment with the commit identifier. The deploying engineer confirms health checks, watches error rates, latency and key metrics for at least 30 minutes, records completion, and rolls back immediately if rollback criteria are met, opening an incident if customers were affected.
  • 5.5 Infrastructure changes. The author attaches the plan output; the reviewer confirms the resources to be changed match the description and that no unintended destruction is planned. The pipeline applies the change; monthly drift detection finds console changes, which are reconciled into code or reverted.
  • 5.6 Emergency changes. The Engineering lead or Security Owner declares an emergency when an active incident or imminent risk cannot wait for the normal process. A second engineer is notified before the change, approval given verbally or in chat is recorded in the incident ticket, and the change is labeled as an emergency in GitHub. Within two business days it receives a full retrospective review and any follow-up fixes, and it appears in the monthly change report.
  • 5.7 Standard change catalogue. Engineering maintains the list of pre-approved standard changes, such as automated dependency updates, content updates and scaling within approved limits, each with its conditions and automated checks. The Security Owner reviews the catalogue semi-annually and removes entries whose risk has changed.
  • 5.8 Monthly change review. The Security Owner samples at least ten percent of production changes and no fewer than five, verifies independent approval, passing checks and a deployment record for each, confirms branch protection settings in GitHub remain as required, investigates any bypass or emergency change, and summarizes the results to Executive Management.
  • 5.9 Deployment access review. Identities used by GitHub Actions to deploy to production are inventoried and reviewed quarterly under the Access Control Policy, confirming each is scoped to one environment, has no interactive login and has been rotated per the Encryption and Key Management Policy.

6. Exceptions

Deviations such as a repository that cannot yet enforce branch protection or a vendor-managed system that permits changes only through its console require a written exception request describing the system, the risk, the compensating controls and the remediation date. The Security Owner approves or rejects it; exceptions affecting production customer data also require Executive Management approval. Approved exceptions are recorded in the exception register, last no more than 12 months and are reviewed at each policy review.

7. Enforcement

Bypassing review, disabling branch protection, deploying with personal credentials or making undocumented production changes violates this policy and is handled under the Human Resources Security Policy, which may result in disciplinary action up to and including termination of employment; contractors and vendors are subject to contract termination. Suspected unauthorized changes are reported to security@northwindcloud.example and investigated under the Incident Response Policy.

8. Review Cadence

The Security Owner reviews this policy on the annual review cycle and after any significant change to Northwind Cloud Inc's source control, pipeline tooling or cloud platforms, and after any incident caused by a change. Changes are approved by Priya Natarajan, CEO and recorded in the revision history.

9. Revision History

VersionDateDescriptionApproved by
1.02026-09-02Initial releasePriya Natarajan, CEO

Frequently asked questions

Who should own the Change Management Policy?
In the Policyseed template the Engineering Lead owns the Change Management Policy: they maintain the text, run the procedures in section 5 and hold the evidence those procedures produce. The approver you name in the intake signs it, and section 8 sets the review cadence you choose (annual, semi-annual or quarterly).
Which SOC 2 criteria does the Change Management Policy address?
3 criteria in the Policyseed crosswalk: CC3.4 (Changes that affect risk), CC5.2 (Technology controls) and CC8.1 (Change management). Each mapping points at a numbered section of this policy, and the Audit Kit exports the same mapping as an Excel crosswalk with an evidence checklist.
Is the Change Management Policy template free to use?
Yes. The template is Apache-2.0 licensed and the generator renders it in your browser with your company, stack and owner names filled in; nothing is stored server-side. The Audit Kit ($39 one-time) rewrites sections 4 and 5 for your named tools with Claude and adds Word documents, the crosswalk spreadsheet, acknowledgment forms and a review calendar. Refunds are available within 14 days on request. Policyseed provides governance policy templates, not legal advice; the CPA firm performs the examination.

Policyseed provides governance policy templates and AI tailoring. It is not legal advice and not a compliance guarantee. Management adopts the policies; the CPA firm performs the SOC 2 examination.