{
  "title": "How to Prepare for a CMMC Assessment by Implementing Change Tracking, Review, Approval, and Logging Controls: NIST SP 800-171 REV.2 / CMMC 2.0 Level 2 - Control - CM.L2-3.4.3",
  "date": "2026-03-31",
  "author": "Lakeridge Technologies",
  "featured_image": "/assets/images/blog/2026/3/how-to-prepare-for-a-cmmc-assessment-by-implementing-change-tracking-review-approval-and-logging-controls-nist-sp-800-171-rev2-cmmc-20-level-2-control-cml2-343.jpg",
  "content": {
    "full_html": "<p>This post walks through actionable steps, technical controls, and small-business examples for meeting NIST SP 800-171 Rev.2 / CMMC 2.0 Level 2 control CM.L2-3.4.3 — tracking, reviewing, approving, and logging changes to system components — so you can prepare concrete evidence for an assessor and reduce risk from unauthorized or undocumented modifications.</p>\n\n<h2>What CM.L2-3.4.3 requires and why it matters</h2>\n<p>CM.L2-3.4.3 mandates that organizations track, review, approve, and log changes to system components (hardware, software, firmware, and configurations). The objective is to ensure changes are intentional, tested, authorized, and traceable so that configuration drift, unauthorized modifications, and regression of security posture are prevented. For CMMC assessors you must demonstrate an operational change control process plus logs and artifacts showing that planned and emergency changes were approved and executed in accordance with policy.</p>\n\n<h2>Implementation roadmap (practical steps)</h2>\n<p>Start by documenting a change management policy that defines roles (requestor, approver, implementer), approval criteria, emergency change handling, rollback procedures, and required evidence. Inventory all system components (use a CMDB, spreadsheet, or asset manager) to define baselines. For each class of asset establish a configuration baseline (OS images, application versions, firewall rules) and store those baselines in version control (Git, or even a secured file share with hashed images) so a before/after comparison is possible.</p>\n\n<h3>Implementing request, review, and approval workflows</h3>\n<p>Use a ticketing system (ServiceNow, Jira, GitHub Issues, or a documented spreadsheet + signed email for very small shops) to capture change requests. Each ticket should include: change description, impacted systems, test/rollback plan, scheduled window, risk rating, requester identity, and explicit approver(s). Enforce separation of duties: the approver should not be the same person performing the change. For high-risk changes, require CAB (Change Advisory Board) minutes or an approval chain captured in the ticketing system. For emergency changes, require retrospective review and documented justification.</p>\n\n<h3>Automation, version control, and deployment pipelines</h3>\n<p>Where possible, shift to automated deployments and infrastructure-as-code (IaC) so changes become auditable artifacts. Use Git with signed commits and branch protection (require pull requests with at least one approver) to demonstrate review and approval. Example: store Ansible playbooks in GitLab, require MR approvals, and have the CI pipeline run automated tests; pipeline logs then become part of your change evidence. For configuration files on Linux, enable auditd for critical directories (example auditd rule: -w /etc -p wa -k etc_changes) and capture package manager actions (apt/dnf logs) for system-level changes.</p>\n\n<h2>Logging, retention, and evidence for assessors</h2>\n<p>Capture logs that prove the change happened and who authorized it: ticket IDs tied to deployment logs, system event logs, CI/CD logs, and version control commits. Forward logs to a central collector or SIEM (Elastic Stack, Splunk, Azure Monitor, AWS CloudTrail for cloud resources) and keep immutable records (write-once storage or locked indices) for the retention period defined by your policy — commonly 6–12 months for small businesses unless contract requires longer. Ensure timestamps are synchronized via NTP and that logs include user IDs, action details, and correlation IDs linking change request → approval → execution → verification.</p>\n\n<h2>Small-business example and day-to-day scenarios</h2>\n<p>Example: A small defense subcontractor runs a three-person IT team and uses Jira for tickets, GitHub for application code, and a simple Jenkins CI pipeline. An engineer files a Jira change request to upgrade a webserver package. The request includes a rollback command, test plan, and scheduled window. The operations lead (approver) signs off in Jira; the Git commit includes the CI pipeline run ID which deploys to staging, runs smoke tests, and, after approval, promotes to production. Jenkins and syslog forwarder write logs to an Elastic instance that stores indices for 12 months. For evidence, the company exports the Jira ticket with approval comments, a Git commit hash with a signed signature, and the Elastic logs showing the deployment and post-deployment health checks.</p>\n\n<h2>Risks of NOT implementing these controls and best practices</h2>\n<p>Without tracked approvals and logging you expose the organization to unauthorized changes, configuration drift, malware persistence, and prolonged outages. From a compliance perspective, lack of traceability is a primary failure area in assessments and can result in lost contracts or corrective action plans. Best practices: enforce least privilege for change execution (use ephemeral privileged sessions or a PAM solution), require multi-factor authentication for approvers, maintain rollback and test plans for every change, and schedule periodic audits of change logs and baselines to detect drift.</p>\n\n<p>Practical tips: map each evidence artifact to the control (policy, a sample of change tickets, CAB minutes, CI/CD logs, system audit logs, and baseline snapshots), run tabletop exercises for emergency changes, and automate as much as feasible to reduce human error. If budgets are tight, document manual controls carefully (signed emails can suffice if retention, authentication, and traceability are demonstrable) but prioritize automation for systems that process Controlled Unclassified Information (CUI).</p>\n\n<p>Summary: To prepare for a CMMC assessment against CM.L2-3.4.3, create a documented change control policy, inventory and baseline your systems, implement request/approval workflows (ticketing + CAB), use version control and CI/CD for auditable deployments, centralize and protect logs, and retain mapped artifacts for the assessor. Following these steps reduces operational risk, creates clear evidence for assessors, and helps maintain a defensible security posture for small businesses working under Compliance Framework requirements.</p>",
    "plain_text": "This post walks through actionable steps, technical controls, and small-business examples for meeting NIST SP 800-171 Rev.2 / CMMC 2.0 Level 2 control CM.L2-3.4.3 — tracking, reviewing, approving, and logging changes to system components — so you can prepare concrete evidence for an assessor and reduce risk from unauthorized or undocumented modifications.\n\nWhat CM.L2-3.4.3 requires and why it matters\nCM.L2-3.4.3 mandates that organizations track, review, approve, and log changes to system components (hardware, software, firmware, and configurations). The objective is to ensure changes are intentional, tested, authorized, and traceable so that configuration drift, unauthorized modifications, and regression of security posture are prevented. For CMMC assessors you must demonstrate an operational change control process plus logs and artifacts showing that planned and emergency changes were approved and executed in accordance with policy.\n\nImplementation roadmap (practical steps)\nStart by documenting a change management policy that defines roles (requestor, approver, implementer), approval criteria, emergency change handling, rollback procedures, and required evidence. Inventory all system components (use a CMDB, spreadsheet, or asset manager) to define baselines. For each class of asset establish a configuration baseline (OS images, application versions, firewall rules) and store those baselines in version control (Git, or even a secured file share with hashed images) so a before/after comparison is possible.\n\nImplementing request, review, and approval workflows\nUse a ticketing system (ServiceNow, Jira, GitHub Issues, or a documented spreadsheet + signed email for very small shops) to capture change requests. Each ticket should include: change description, impacted systems, test/rollback plan, scheduled window, risk rating, requester identity, and explicit approver(s). Enforce separation of duties: the approver should not be the same person performing the change. For high-risk changes, require CAB (Change Advisory Board) minutes or an approval chain captured in the ticketing system. For emergency changes, require retrospective review and documented justification.\n\nAutomation, version control, and deployment pipelines\nWhere possible, shift to automated deployments and infrastructure-as-code (IaC) so changes become auditable artifacts. Use Git with signed commits and branch protection (require pull requests with at least one approver) to demonstrate review and approval. Example: store Ansible playbooks in GitLab, require MR approvals, and have the CI pipeline run automated tests; pipeline logs then become part of your change evidence. For configuration files on Linux, enable auditd for critical directories (example auditd rule: -w /etc -p wa -k etc_changes) and capture package manager actions (apt/dnf logs) for system-level changes.\n\nLogging, retention, and evidence for assessors\nCapture logs that prove the change happened and who authorized it: ticket IDs tied to deployment logs, system event logs, CI/CD logs, and version control commits. Forward logs to a central collector or SIEM (Elastic Stack, Splunk, Azure Monitor, AWS CloudTrail for cloud resources) and keep immutable records (write-once storage or locked indices) for the retention period defined by your policy — commonly 6–12 months for small businesses unless contract requires longer. Ensure timestamps are synchronized via NTP and that logs include user IDs, action details, and correlation IDs linking change request → approval → execution → verification.\n\nSmall-business example and day-to-day scenarios\nExample: A small defense subcontractor runs a three-person IT team and uses Jira for tickets, GitHub for application code, and a simple Jenkins CI pipeline. An engineer files a Jira change request to upgrade a webserver package. The request includes a rollback command, test plan, and scheduled window. The operations lead (approver) signs off in Jira; the Git commit includes the CI pipeline run ID which deploys to staging, runs smoke tests, and, after approval, promotes to production. Jenkins and syslog forwarder write logs to an Elastic instance that stores indices for 12 months. For evidence, the company exports the Jira ticket with approval comments, a Git commit hash with a signed signature, and the Elastic logs showing the deployment and post-deployment health checks.\n\nRisks of NOT implementing these controls and best practices\nWithout tracked approvals and logging you expose the organization to unauthorized changes, configuration drift, malware persistence, and prolonged outages. From a compliance perspective, lack of traceability is a primary failure area in assessments and can result in lost contracts or corrective action plans. Best practices: enforce least privilege for change execution (use ephemeral privileged sessions or a PAM solution), require multi-factor authentication for approvers, maintain rollback and test plans for every change, and schedule periodic audits of change logs and baselines to detect drift.\n\nPractical tips: map each evidence artifact to the control (policy, a sample of change tickets, CAB minutes, CI/CD logs, system audit logs, and baseline snapshots), run tabletop exercises for emergency changes, and automate as much as feasible to reduce human error. If budgets are tight, document manual controls carefully (signed emails can suffice if retention, authentication, and traceability are demonstrable) but prioritize automation for systems that process Controlled Unclassified Information (CUI).\n\nSummary: To prepare for a CMMC assessment against CM.L2-3.4.3, create a documented change control policy, inventory and baseline your systems, implement request/approval workflows (ticketing + CAB), use version control and CI/CD for auditable deployments, centralize and protect logs, and retain mapped artifacts for the assessor. Following these steps reduces operational risk, creates clear evidence for assessors, and helps maintain a defensible security posture for small businesses working under Compliance Framework requirements."
  },
  "metadata": {
    "description": "[Write a compelling 1-sentence SEO description about this compliance requirement]",
    "permalink": "/how-to-prepare-for-a-cmmc-assessment-by-implementing-change-tracking-review-approval-and-logging-controls-nist-sp-800-171-rev2-cmmc-20-level-2-control-cml2-343.json",
    "categories": [],
    "tags": []
  }
}