Change Management Policy
| Field | Value |
|---|---|
| Document ID | POL-006 |
| Version | 1.0 |
| Effective Date | 2026-04-08 |
| Next Review Date | 2027-04-08 |
| Classification | Internal |
| Owner | Information Security Officer |
| Approved By | CEO, Paylithix Inc. |
| Parent Policy | Information Security Policy (POL-001) |
1. Purpose
This policy defines how changes to the Gatelithix Gateway Cardholder Data Environment (CDE) and connected systems are proposed, reviewed, tested, approved, deployed, and documented. It ensures that changes do not introduce vulnerabilities or compromise cardholder data security, in compliance with PCI DSS 4.0.1 Requirement 6.5.
2. Scope
This policy applies to all changes affecting:
- CDE systems: Token Vault Service (
apps/vault/), PCI Cloud SQL, Cloud KMS configuration, PCI VPC/firewall rules - Connected systems: Gateway API (
apps/gateway/), Connector services (apps/connectors/), Dashboard (apps/dashboard/) - Infrastructure: Terraform configurations (
infra/terraform/), CI/CD pipelines (.github/workflows/) - Database schemas: Goose migrations (
db/migrations/,db/migrations/vault/) - Dependencies: Go module updates, npm package updates
- Configuration: Cloud Run environment variables, Secret Manager secrets, Auth0 tenant settings
Changes are classified into two categories:
| Category | Definition | Examples |
|---|---|---|
| Standard Change | Pre-approved, low-risk change following established process | Dependency update, bug fix, feature addition with tests |
| Emergency Change | Urgent change required to address an active security incident or critical outage | Hotfix for active vulnerability, firewall rule to block attack |
3. Roles and Responsibilities
| Role | Responsibility |
|---|---|
| Change Author | Creates the change (code, config, infrastructure); writes PR description; ensures tests pass |
| Change Reviewer | Reviews code for security, correctness, and compliance; approves or requests changes |
| ISO | Approves CDE changes; reviews PCI scope impact; maintains change log |
| Engineering Lead | CODEOWNER for apps/vault/; approves infrastructure changes; oversees deployments |
| CI/CD System | Runs automated tests, linting, vulnerability scans; deploys approved changes |
4. Policy Statements
4.1 Standard Change Process
All standard changes follow this process:
Step 1: Development
- Create a feature branch from
main. - Implement the change with appropriate unit and integration tests.
- Ensure all tests pass locally before creating a pull request.
Step 2: Pull Request
- Create a pull request (PR) on GitHub with:
- Clear description of what is changing and why
- PCI scope impact assessment: does this change affect the CDE boundary, data flows, access controls, encryption, or audit logging?
- Testing performed (automated and manual)
- Rollback plan if the change causes issues
- The PR triggers automated CI checks:
go test ./...(unit tests)go vet ./...(static analysis)golangci-lint(linting)govulncheck(Go vulnerability scanning)trivy(container image scanning)npm run buildfor dashboard changes- Database migration validation
Step 3: Review and Approval
- All PRs require at least one approval from a qualified reviewer.
- Changes to
apps/vault/require approval from the Engineering Lead (enforced via GitHub CODEOWNERS). - Changes to
infra/terraform/pci/require approval from the ISO or Engineering Lead. - Reviewers verify:
- No PAN in logs, error messages, or API responses
- No new dependencies with known critical vulnerabilities
- Access controls are not weakened
- Encryption is not bypassed or downgraded
- Audit logging covers new operations
- Tests adequately cover the change
Step 4: Merge and Deploy
- Approved PRs are merged to
mainvia squash merge. - Merging to
maintriggers the CI/CD pipeline:- Build container images
- Push to Artifact Registry
- Deploy to Cloud Run (core project for non-CDE services)
- Deploy to Cloud Run (PCI project for vault service, if vault files changed)
- Post-deployment health checks verify the service is responding correctly.
Step 5: Post-Deployment Verification
- Verify the change is working as expected in production.
- For CDE changes: verify audit logging, encryption, and access controls are functioning.
- For database migrations: verify schema by querying
information_schema.columns(do not rely solely on goose version table).
4.2 CDE-Specific Change Requirements
Changes to CDE components have additional requirements beyond the standard process:
- Explicit confirmation from the Engineering Lead or ISO before modifying vault code, as documented in
CLAUDE.md. - PCI scope impact analysis documented in the PR description: could this change expand the CDE boundary, introduce new data flows, or weaken existing controls?
- Vault interface preference: prefer adding to the vault’s public interface over modifying its internals. Minimize the scope of CDE changes.
- Database migration verification: after deploying vault migrations, verify the schema by querying
information_schema.columns— the goose version table can be out of sync. - Audit trail: CDE changes are logged in the Git history, PR review history, and Cloud Run deployment history.
4.3 Infrastructure Change Requirements
Changes to Terraform configurations follow additional steps:
terraform planoutput must be included in the PR or PR comments.- The plan must be reviewed for unintended changes (resource destruction, security group modifications).
terraform applyis executed by the CI/CD pipeline after merge — never manually from a developer machine.- Network changes (firewall rules, VPC peering) require ISO approval regardless of who authors them.
4.4 Emergency Change Process
Emergency changes are permitted when a delay would result in:
- Active exploitation of a security vulnerability
- Ongoing cardholder data exposure
- Complete service outage affecting merchant payment processing
Emergency change procedure:
- The Incident Commander (per the Incident Response Plan) authorizes the emergency change.
- The change may be deployed directly to production with verbal approval from the ISO or Engineering Lead.
- A PR is created retroactively within 24 hours of the emergency change.
- The retroactive PR documents: what was changed, why it was urgent, who approved it, and the full test/verification results.
- The ISO records the emergency change in the change log with the justification.
4.5 Rollback Procedures
Every change shall have a documented rollback plan:
| Change Type | Rollback Method |
|---|---|
| Cloud Run service | Revert to previous Cloud Run revision (instant, zero-downtime) |
| Database migration (additive) | Deploy reverse migration or leave in place if backward-compatible |
| Database migration (destructive) | Restore from Cloud SQL backup (requires downtime window) |
| Terraform infrastructure | terraform apply with reverted code (via git revert + new PR) |
| Auth0 configuration | Manual revert via Auth0 Dashboard or Management API |
| Secret Manager values | Create new secret version with previous value |
4.6 Change Log
- The ISO shall maintain a change log tracking all changes to CDE systems.
- Each change log entry includes:
- Date and time of change
- Change author
- PR number and link
- Description of the change
- Systems affected (CDE, connected, infrastructure)
- Reviewer and approver
- Test results summary
- Rollback plan
- The change log is derived from Git history and supplemented with deployment records.
- Change log records are retained for at least 12 months.
4.7 Separation of Duties
- The person who authors a change shall not be the sole approver of that change (enforced by GitHub branch protection requiring at least one review from a different person).
- For CDE changes, the author, reviewer, and deployer roles should be distinct where team size permits.
- CI/CD pipeline credentials (service accounts) are separate from developer credentials.
4.8 Development and Test Environments
- Development and testing shall use test payment data only (Stripe test PANs, sandbox processor credentials).
- Production cardholder data shall never be used in development or test environments.
- Test environments shall mirror production security controls (encryption, TLS, access controls) but use separate credentials and key material.
- See the Data Classification Policy for handling rules for test vs. production data.
5. Compliance and Enforcement
- Deploying changes to CDE systems without following this process (except for authorized emergency changes) is a policy violation.
- Merging PRs without required approvals is blocked by GitHub branch protection rules. Attempts to bypass these controls shall be investigated.
- The ISO reviews the change log quarterly to verify process compliance.
6. Related Documents
- Information Security Policy (POL-001) — Parent policy
- Incident Response Plan (POL-005) — Emergency change authorization
- Network Security Policy (POL-003) — Network change process
- Access Control Policy (POL-002) — Access provisioning changes
- GitHub CODEOWNERS file — Enforces vault code review by Engineering Lead
- PCI DSS 4.0.1 Requirement 6.5
7. Document History
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | 2026-04-08 | Information Security Officer | Initial policy creation |