{
  "title": "How to Configure Active Directory and SSO to Meet NIST SP 800-171 REV.2 / CMMC 2.0 Level 2 - Control - IA.L2-3.5.5: Preventing Identifier Reuse",
  "date": "2026-04-16",
  "author": "Lakeridge Technologies",
  "featured_image": "/assets/images/blog/2026/4/how-to-configure-active-directory-and-sso-to-meet-nist-sp-800-171-rev2-cmmc-20-level-2-control-ial2-355-preventing-identifier-reuse.jpg",
  "content": {
    "full_html": "<p>IA.L2-3.5.5 (Preventing Identifier Reuse) requires organizations to ensure identifiers (usernames, UPNs, employee IDs, SSO subject names) are not reassigned to different individuals in a way that could mask accountability or allow unauthorized access; this post gives practical, technical steps you can implement in Active Directory and common SSO providers to meet the Compliance Framework expectations for NIST SP 800-171 REV.2 / CMMC 2.0 Level 2.</p>\n\n<h2>Why preventing identifier reuse matters (implementation overview)</h2>\n<p>Preventing identifier reuse preserves the audit trail and accountability tied to an identifier. If a username is reassigned to a new person, previous logs, permissions, and accountability mapping become ambiguous and a malicious actor could inherit privileges or evade forensic timelines. To meet Compliance Framework requirements, you must combine policy (retention period, HR-driven process), directory configuration (disable vs delete), and SSO provisioning behavior (deactivate rather than delete, map SSO subjects to immutable attributes) so identifiers remain unique over a documented time window.</p>\n\n<h3>Active Directory: practical configuration steps</h3>\n<p>On-prem Active Directory is usually the authoritative identity store for many small businesses. Implement these actionable controls:\n- Create a documented \"identifier retention period\" (commonly 90 days, adjustable by risk/contract) during which user accounts remain in AD but are disabled and preserved.\n- Implement an HR-to-IT workflow (ticket or automation) that immediately disables accounts on termination and moves the account to a dedicated OU such as \"OU=DisabledUsers,DC=example,DC=com\" with a naming convention that includes the disable date.\n- Avoid deleting AD user objects before the retention window expires. AD enforces uniqueness of sAMAccountName and userPrincipalName only while the object exists; keeping the disabled account prevents reuse automatically.\n- Use immutable attributes for audit correlation: populate employeeID with a unique corporate identifier and never recycle that value. Use the description or extensionAttribute fields to add metadata like \"DisabledOn=YYYYMMDD; TermReason=Resignation\". </p>\n\n<p>Example PowerShell snippet to disable and move a user, set a disable tag, and add a termination date (run as an AD admin):</p>\n\n<pre><code>Get-ADUser -Identity \"j.smith\" | Disable-ADAccount\nSet-ADUser -Identity \"j.smith\" -Replace @{description=\"DisabledOn=2026-04-16; TermReason=Termination\"}\nMove-ADObject -Identity (Get-ADUser -Identity \"j.smith\").DistinguishedName -TargetPath \"OU=DisabledUsers,DC=example,DC=com\"</code></pre>\n\n<p>Also consider setting the accountExpires attribute if you want automatic cleanup after the retention period, but do not allow automatic deletion without documented approval and evidence capture.</p>\n\n<h3>SSO and cloud IdP: mapping to immutable identifiers and provisioning rules</h3>\n<p>Cloud SSO providers (Azure AD, Okta, OneLogin, Google Workspace) often act as the authentication endpoint for applications. Key implementation points:\n- Map the SAML/OpenID Connect subject to an immutable identifier (objectGUID in AD, Azure immutableId) rather than a mutable username. In Azure AD Connect, use immutableId and avoid using attributes you plan to recycle for the SAML NameID.\n- Configure provisioning (SCIM, AD Connect, SCIM connectors in Okta/OneLogin) to \"deactivate/suspend\" users on termination rather than deleting them. Check the SCIM schema: send \"active\": false and preserve the user object in the IdP for your retention period.\n- For Okta: set the lifecycle to deactivate on deprovisioning and do not remove historical user records; use the user.id (immutable Okta UID) as the application subject when possible.\n- For Azure AD: disable the user or set accountEnabled=false and use soft-delete behavior correctly. If you must delete from Azure AD after retention, export and store the identifier mapping and logs as evidence before removal.</p>\n\n<p>Sample SCIM deprovision payload for \"suspend\" semantics: {\"active\": false, \"meta\": {\"deactivatedTime\":\"2026-04-16T15:04:05Z\"}} — implement this through your IdP’s provisioning rules.</p>\n\n<h2>Small-business real-world scenario</h2>\n<p>Imagine a 25-employee consultant firm handling CUI under a DoD subcontract. HR sends a termination ticket the same day an employee leaves. The IT runbook: (1) run a PowerShell disable script to disable the AD account, tag it with DisabledOn and TermReason, and move to OU DisabledUsers; (2) trigger the IdP (Okta/Azure) provisioning to suspend the cloud identity; (3) document the action in the access change ticket and capture screenshots/logs. The disabled AD object remains for 90 days — during this time the sAMAccountName and the employeeID are reserved and cannot be reused. After 90 days, the team reviews retained accounts; if deletion is authorized, export logs and the identity record for audit and then delete. This workflow gives clear evidence (tickets, AD attributes, IdP suspend events, export files) to satisfy assessors under the Compliance Framework.</p>\n\n<h2>Risk of not preventing identifier reuse and evidence for assessors</h2>\n<p>If you fail to prevent identifier reuse, you risk privilege confusion, orphaned access, and the ability of a new user or attacker to inherit permissions or cover tracks — all of which can lead to unauthorized disclosure of CUI, failed audits, and contractual penalties. Evidence you should collect to demonstrate compliance: the written Identifier Reuse Policy, retention period definition, HR-to-IT workflow, sample disabled account records (showing attributes and disable timestamps), IdP provisioning logs showing deactivation events, periodic audit reports that confirm no reuse within the retention window, and the System Security Plan (SSP)/POA&M mapping IA.L2-3.5.5 to implemented controls and artifacts.</p>\n\n<h2>Compliance tips and best practices</h2>\n<p>Best practices to operationalize this control:\n<ul>\n<li>Document an explicit retention period (90–180 days is common) and include it in the SSP and IAM policy.</li>\n<li>Integrate HR and IT via automated ticketing or API triggers so disabling is immediate and logged.</li>\n<li>Use immutable attributes (employeeID, objectGUID, Azure immutableId) for audit mapping; never recycle employeeID values.</li>\n<li>Configure IdP provisioning to suspend/deactivate rather than delete; preserve user objects for the retention window.</li>\n<li>Maintain an \"Identifier Ledger\" (CSV or DB) of all issued employeeIDs and usernames and mark entries as retired when accounts are disabled.</li>\n<li>Schedule quarterly reviews to ensure disabled accounts are still preserved for the retention interval and that no identifiers have been reissued.</li>\n<li>Capture and retain logs (AD event IDs, IdP provisioning logs, and ticketing records) as evidence for audits and incident investigations.</li>\n</ul>\n</p>\n\n<p>In short, combine policy, automated disablement, preservation of disabled objects, and immutable identifier usage across AD and SSO to create a defensible and auditable approach to IA.L2-3.5.5 under the Compliance Framework.</p>",
    "plain_text": "IA.L2-3.5.5 (Preventing Identifier Reuse) requires organizations to ensure identifiers (usernames, UPNs, employee IDs, SSO subject names) are not reassigned to different individuals in a way that could mask accountability or allow unauthorized access; this post gives practical, technical steps you can implement in Active Directory and common SSO providers to meet the Compliance Framework expectations for NIST SP 800-171 REV.2 / CMMC 2.0 Level 2.\n\nWhy preventing identifier reuse matters (implementation overview)\nPreventing identifier reuse preserves the audit trail and accountability tied to an identifier. If a username is reassigned to a new person, previous logs, permissions, and accountability mapping become ambiguous and a malicious actor could inherit privileges or evade forensic timelines. To meet Compliance Framework requirements, you must combine policy (retention period, HR-driven process), directory configuration (disable vs delete), and SSO provisioning behavior (deactivate rather than delete, map SSO subjects to immutable attributes) so identifiers remain unique over a documented time window.\n\nActive Directory: practical configuration steps\nOn-prem Active Directory is usually the authoritative identity store for many small businesses. Implement these actionable controls:\n- Create a documented \"identifier retention period\" (commonly 90 days, adjustable by risk/contract) during which user accounts remain in AD but are disabled and preserved.\n- Implement an HR-to-IT workflow (ticket or automation) that immediately disables accounts on termination and moves the account to a dedicated OU such as \"OU=DisabledUsers,DC=example,DC=com\" with a naming convention that includes the disable date.\n- Avoid deleting AD user objects before the retention window expires. AD enforces uniqueness of sAMAccountName and userPrincipalName only while the object exists; keeping the disabled account prevents reuse automatically.\n- Use immutable attributes for audit correlation: populate employeeID with a unique corporate identifier and never recycle that value. Use the description or extensionAttribute fields to add metadata like \"DisabledOn=YYYYMMDD; TermReason=Resignation\". \n\nExample PowerShell snippet to disable and move a user, set a disable tag, and add a termination date (run as an AD admin):\n\nGet-ADUser -Identity \"j.smith\" | Disable-ADAccount\nSet-ADUser -Identity \"j.smith\" -Replace @{description=\"DisabledOn=2026-04-16; TermReason=Termination\"}\nMove-ADObject -Identity (Get-ADUser -Identity \"j.smith\").DistinguishedName -TargetPath \"OU=DisabledUsers,DC=example,DC=com\"\n\nAlso consider setting the accountExpires attribute if you want automatic cleanup after the retention period, but do not allow automatic deletion without documented approval and evidence capture.\n\nSSO and cloud IdP: mapping to immutable identifiers and provisioning rules\nCloud SSO providers (Azure AD, Okta, OneLogin, Google Workspace) often act as the authentication endpoint for applications. Key implementation points:\n- Map the SAML/OpenID Connect subject to an immutable identifier (objectGUID in AD, Azure immutableId) rather than a mutable username. In Azure AD Connect, use immutableId and avoid using attributes you plan to recycle for the SAML NameID.\n- Configure provisioning (SCIM, AD Connect, SCIM connectors in Okta/OneLogin) to \"deactivate/suspend\" users on termination rather than deleting them. Check the SCIM schema: send \"active\": false and preserve the user object in the IdP for your retention period.\n- For Okta: set the lifecycle to deactivate on deprovisioning and do not remove historical user records; use the user.id (immutable Okta UID) as the application subject when possible.\n- For Azure AD: disable the user or set accountEnabled=false and use soft-delete behavior correctly. If you must delete from Azure AD after retention, export and store the identifier mapping and logs as evidence before removal.\n\nSample SCIM deprovision payload for \"suspend\" semantics: {\"active\": false, \"meta\": {\"deactivatedTime\":\"2026-04-16T15:04:05Z\"}} — implement this through your IdP’s provisioning rules.\n\nSmall-business real-world scenario\nImagine a 25-employee consultant firm handling CUI under a DoD subcontract. HR sends a termination ticket the same day an employee leaves. The IT runbook: (1) run a PowerShell disable script to disable the AD account, tag it with DisabledOn and TermReason, and move to OU DisabledUsers; (2) trigger the IdP (Okta/Azure) provisioning to suspend the cloud identity; (3) document the action in the access change ticket and capture screenshots/logs. The disabled AD object remains for 90 days — during this time the sAMAccountName and the employeeID are reserved and cannot be reused. After 90 days, the team reviews retained accounts; if deletion is authorized, export logs and the identity record for audit and then delete. This workflow gives clear evidence (tickets, AD attributes, IdP suspend events, export files) to satisfy assessors under the Compliance Framework.\n\nRisk of not preventing identifier reuse and evidence for assessors\nIf you fail to prevent identifier reuse, you risk privilege confusion, orphaned access, and the ability of a new user or attacker to inherit permissions or cover tracks — all of which can lead to unauthorized disclosure of CUI, failed audits, and contractual penalties. Evidence you should collect to demonstrate compliance: the written Identifier Reuse Policy, retention period definition, HR-to-IT workflow, sample disabled account records (showing attributes and disable timestamps), IdP provisioning logs showing deactivation events, periodic audit reports that confirm no reuse within the retention window, and the System Security Plan (SSP)/POA&M mapping IA.L2-3.5.5 to implemented controls and artifacts.\n\nCompliance tips and best practices\nBest practices to operationalize this control:\n\nDocument an explicit retention period (90–180 days is common) and include it in the SSP and IAM policy.\nIntegrate HR and IT via automated ticketing or API triggers so disabling is immediate and logged.\nUse immutable attributes (employeeID, objectGUID, Azure immutableId) for audit mapping; never recycle employeeID values.\nConfigure IdP provisioning to suspend/deactivate rather than delete; preserve user objects for the retention window.\nMaintain an \"Identifier Ledger\" (CSV or DB) of all issued employeeIDs and usernames and mark entries as retired when accounts are disabled.\nSchedule quarterly reviews to ensure disabled accounts are still preserved for the retention interval and that no identifiers have been reissued.\nCapture and retain logs (AD event IDs, IdP provisioning logs, and ticketing records) as evidence for audits and incident investigations.\n\n\n\nIn short, combine policy, automated disablement, preservation of disabled objects, and immutable identifier usage across AD and SSO to create a defensible and auditable approach to IA.L2-3.5.5 under the Compliance Framework."
  },
  "metadata": {
    "description": "Practical steps to configure Active Directory and cloud SSO so user identifiers are not reassigned, helping you demonstrate compliance with IA.L2-3.5.5 under Compliance Framework.",
    "permalink": "/how-to-configure-active-directory-and-sso-to-meet-nist-sp-800-171-rev2-cmmc-20-level-2-control-ial2-355-preventing-identifier-reuse.json",
    "categories": [],
    "tags": []
  }
}