User access removal

User access removal under SOX ITGC is the control that stops former employees and contractors from keeping access to financial systems. This page explains what auditors test, which evidence passes, and what meeting it costs.

On this page

What SOX user access removal requires and why auditors test it

Imagine a compliance lead two weeks before a SOX ITGC test of terminations. The auditor has pulled a sample of leavers from the HR system and wants proof that each person's access to the general ledger, the consolidation tool and the database behind them was removed on or near their last day. User access removal requires management to disable or remove access to financially significant applications, databases and infrastructure promptly when an employee or contractor leaves or changes role, and to keep evidence that the removal happened. Auditors test it because a former employee who still holds a working login can post, approve or alter financial data, and the control only holds if the organization can show it closes that door every time.

The risk sits in the link between access and financial reporting. PCAOB AS 2110 lists unauthorized access to data and improper changes to data among the IT risks to internal control over financial reporting, and access that persists after termination is a direct route to both. When the auditor plans the audit under AS 2201, a weak removal control also means reliance on automated controls in that area becomes harder to justify, because those automated controls depend on the access restrictions working. That is why removal failures often surface as deficiencies that spread beyond a single application.

Removal is a common point of failure because the process crosses systems that rarely agree. The HR system records the termination date, but the application, database and directory accounts are created and maintained separately, sometimes by a different team, and a manual ticket may be the only bridge between them. Contractors often sit outside HR records entirely, shared and service accounts have no named owner to disable, and a role change can leave old entitlements in place because nobody removes the previous role. Confirm with your own environment which system is the authoritative source for leaver status, which accounts exist outside the directory, and how a transfer is handled, since each gap is where auditors will look first.

Which systems, people and events fall in SOX removal scope

Removal scope is set by the financial reporting risk each system carries, not by a single list of applications. The cards below cover the systems, identities and events that auditors expect management to define before they test whether access was removed on time.

In-scope applications and databases

Start from the applications that generate, process or summarize financially significant data, then add the databases behind them, since direct database access can change figures without passing through the application. Auditors will ask how the in-scope list was built and whether it matches the systems named in the ICFR scoping documentation. Confirm that each application's user store and each database's local accounts are included, not only the front-end login.

Operating systems and infrastructure

Access to servers, hypervisors, network devices and cloud consoles can reach financial data even when no finance user holds an application login. Removal scope should cover the directories and identity sources that feed those systems, such as the directory service that authenticates administrators. Ask whether local operating system accounts on in-scope hosts are removed as part of the same process or tracked separately.

Terminations, transfers and contractor end dates

Removal scope is not limited to resignations. Involuntary terminations, role changes that leave old access in place, and contractor engagements that end on a fixed date all create access that should be revoked. Each event type needs its own trigger in HR or vendor management records, because a transfer that is never reported to IT will not start a removal. Ask which event types feed the removal process and who owns each trigger.

Leaves of absence and suspensions

Employees on extended leave or under suspension still hold active credentials, and auditors often ask how that access was handled during the absence. Decide whether access is disabled, reduced or left in place, and document the rule. The decision matters for the leaver population definition: a person who is inactive but not terminated may still fall outside a termination report and be missed in testing. Confirm the policy and the owner who applies it.

Service, shared and generic accounts

Service accounts that run jobs and shared accounts used by several staff members are often excluded from a people-based leaver list. They still carry access to financial systems and can outlive the people who set them up. Decide whether these accounts are in scope, assign an owner to each one, and define how their access is reviewed when that owner leaves. Ask for the inventory of such accounts as part of the scope evidence.

Defining the leaver population

The population of leavers is the set of people and accounts the auditor will compare against access records, so its definition controls the test. Specify the date range, the source system for terminations, and whether identities from identity providers, HR systems and vendor lists are merged. Auditors commonly ask how completeness of that population was confirmed. Ask the process owner to show how the report was generated and reconciled.

How auditors compare termination lists with access records

Auditors test whether leavers lost access on time by building a population first, then sampling from it. They ask HR or the ticketing system for a complete list of employees and contractors who left or changed roles during the period, and they confirm that list is complete before using it. A common check is to compare the list against payroll terminations or badge deactivations for the same window. If the population is missing people, a clean sample proves nothing, so the completeness check is where many tests start to fail. Confirm with your HR and identity teams which report is the system of record for terminations, who generates it, and whether contractors appear in it at all.

From the complete population, the auditor selects a sample of leavers and traces each one to removal dates in every in-scope application, database and directory. Under PCAOB AS 2201, testing operating effectiveness combines inquiry of personnel, observation of operations, inspection of documentation and re-performance of the control. For access removal, that usually means interviewing the access administrator, inspecting the removal tickets or directory logs, and sometimes re-running the deprovisioning step in a test environment. The standard does not set a number of days for removal. The threshold is whatever management documented in the control design, so the policy must state the deadline, the trigger and the owner. Decide that deadline before the audit period starts, because an auditor will measure against the written design, not a deadline set after the fact.

Expect the auditor to ask how automated deprovisioning fits this test. Where an identity platform pushes deletions to downstream applications, for example through a SCIM provider such as the one in authentik, the auditor may test the provisioning configuration and its logs as well as individual samples. Confirm which applications sit outside the connector, since those accounts will need manual removal evidence. Also confirm how the platform handles a sync failure, because a missed deletion that is only caught by a periodic full sync may still fall outside your documented deadline.

How an assessor tests user access removal

This table walks through each step an external auditor or internal auditor takes to test leaver access, from the design walkthrough to inquiry, with the evidence requested at each step. Read it as a checklist of what to have ready before fieldwork, and note the failure patterns that most often turn a clean design into an exception.

Test stepWhat the assessor doesEvidence requestedWhere it usually fails
Design walkthroughTraces how a leaver's termination reaches HR, IT and the application owner, and who triggers each removal.Written procedure, HR offboarding workflow, named owners for each in-scope application.Procedure names HR as the trigger but no step covers contractors or accounts outside the directory.
Termination population completenessChecks that the list of leavers and contractor exits is complete for the period under test.HR termination report, contractor end-date report, reconciliation to the period start and end.HR report omits contractors, rehires or transfers, so the population is incomplete before any sample is drawn.
Sample of leavers traced to removalSelects leavers from the population and traces each to the date access was disabled in every in-scope application.Termination ticket or HR record, system audit log showing disable date, last login date.Access disabled days or weeks after the termination date with no documented exception.
Inspection of disabled accountsReviews that sampled accounts are disabled or deleted, not only hidden, and that no active role assignments remain.Account status export from the directory and application, role or group membership listing.Account marked disabled while group memberships, API tokens or shared-role access stay active.
Secondary application checkLooks beyond the primary ERP or ledger to reporting tools, databases, file shares and admin consoles tied to financial data.List of in-scope secondary systems, deprovisioning records for each, or a documented reason they are excluded.Terminated users still active in a reporting tool, database login or spreadsheet server that was never added to the offboarding checklist.
Access log reviewInspects logs for any sign of use after the termination date.Authentication logs for sampled leavers covering the period between termination and disable.Logs are not retained long enough to cover the test period, so the assessor cannot confirm no post-termination logins.
InquiryAsks application owners and HR how the process works in practice and how they learn of exits that happen outside normal channels.Interview notes, owner confirmations, description of any emergency or same-day termination path.Answers differ from the written procedure, for example owners say they rely on a manual email.

How to implement timely removal step by step

This sequence turns leaver removal from an informal habit into a documented process that auditors can trace from an HR termination to the closed account in each in-scope system. Each step produces an artifact that proves the control was designed and operates as written.

  1. Define the leaver trigger from HR

    Agree with HR which events start removal: resignation, termination, end of contract, transfer to a role without the same access, and extended leave. Document the source system, the field or status that marks a leaver, and who receives the notice. The step is done when HR and IT sign a short trigger definition and the feed of leaver records is confirmed to reach the access team. Ask HR to confirm which employment types, such as contractors and agency staff, appear in that feed, because gaps usually sit there.

  2. Inventory in-scope systems and removal methods

    List every financially significant application, database, operating system, network component and shared account that holds user access, following the scope set by management's ICFR assessment. For each system, record the owner, the account store it uses (directory, local accounts or application users) and the removal method, whether automated through an identity provider, a scripted process or a manual ticket. The output is a system inventory with a removal method per row, reviewed by the control owner. Systems with only manual removal are the first candidates for automation.

  3. Map identity sources and single sign-on paths

    Trace how users reach each in-scope system. Where a central directory, single sign-on provider or identity broker controls login, disabling the central identity can cut off access to every application that depends on it. Where an application keeps its own user table, removal must be done there as well. Record which accounts sit outside the central identity, such as local administrator or database logins, because these typically need a separate removal step. The output is a dependency map that shows which removal actions reach which systems.

  4. Automate deprovisioning where the platform supports it

    For systems that accept automated provisioning, configure the connector or provisioning protocol so that deleting or disabling a user in the identity source propagates to the application. Open-source identity platforms can handle this for some targets. For example, the authentik SCIM provider pushes user and group deletions to target applications and runs a full sync every hour, so the team should confirm that the target application honors deprovisioning messages. Test with a dummy leaver account, then record the configuration and the test result. Manual steps remain for any system the connector cannot reach.

  5. Set and document the removal timeframe

    Write the removal deadline into the control design, measured from the effective termination date or from the HR notice, and specify separate expectations for high-risk privileged accounts if the organization chooses them. Confirm the deadline with the control owner, internal audit and the external auditor before the control is relied on, because the timeframe is the test criterion. Keep the approved document with its version history. The control is ready when the written timeframe, approvers and effective date are on file.

  6. Execute removals and record the evidence

    When a leaver record arrives, the access team disables or removes each account in the inventory, using the automated path where it exists and a ticket for manual steps. Each ticket should name the employee, the systems, the completion time and the person who performed the action. Retain configuration screenshots and automated logs for automated paths, since these show the mechanism worked as designed. The step is complete when every in-scope account for a leaver shows a closed state with a traceable ticket or log entry.

  7. Reconcile HR terminations against system accounts

    At a set frequency, compare the list of HR terminations in the period with active accounts in each in-scope system. Any active account that belongs to a terminated person, or any terminated person with an active account, becomes an exception with an owner and a due date. Keep the population, the filter criteria and the comparison output, because auditors will ask whether the list used to test removals is complete. The reconciliation report, signed by the reviewer, is the artifact that proves removals were checked, not just assumed.

  8. Investigate exceptions and document follow-up

    For each reconciliation exception, determine whether the account was used after the termination date by reviewing authentication and activity logs where available. Record the finding, the corrective action, any impact on financial data and the root cause, such as a missed feed or a contractor outside the HR system. Feed recurring causes back into the trigger definition and the inventory. The step closes when each exception has a documented resolution and an owner has signed off, and the remediation approach is discussed with the auditor before year end.

Evidence that passes for each removal control

The HR system is usually the first record that a person has left or changed roles, so auditors use its termination list as the population they test against. The list proves who was separated and on what effective date. It does not prove that any system access was removed, so it is the starting point for the test rather than the evidence of removal itself.

  • Effective date fields: Confirm the record shows the separation date that drives access removal, not only the date the form was entered.
  • Contractors included: Confirm contractors and temporary staff appear in a feed or a separate list, since they are often missing from HR exports.
  • Role changes captured: Confirm transfers that remove prior duties are recorded, because access tied to the old role is a removal event too.
  • Change history retained: Keep prior versions or audit logs of edited records so an auditor can see when a date was corrected.
  • Completeness check: Keep a count or extract date showing the list was pulled for the full period under audit.

Before fieldwork, confirm with HR which report the auditor will receive and whether the period covers the full audit window.

How open-source identity platforms support removal evidence

An identity platform can make removal faster and easier to prove, but only when it sits between HR records and financial applications. The cards below cover four open-source options and the checks each one needs before an auditor can rely on its records.

authentik SCIM provisioning

The authentik SCIM provider pushes user and group creations, changes and deletions to target applications over SCIM 2.0. It also runs a full sync every hour and deprovisions users from the target when they lose access to the application. For removal evidence, confirm that a termination in the source directory reaches each in-scope application, and test whether the sync log shows the removal date. A full hourly sync reduces drift but does not replace checking that the target actually disabled the account.

FreeIPA central user directory

FreeIPA uses 389 Directory Server as a multi-master LDAPv3 directory that stores users, groups, hosts and other network objects. Access control and delegated administration run through its web UI and command line tools. Removal evidence depends on who holds the delegated rights to disable accounts, so list those administrators and confirm that disabling a user in FreeIPA blocks sign-in to the Linux hosts and applications that authenticate against it.

Keycloak single sign-on

Keycloak provides single sign-on, so users authenticate with Keycloak instead of each application. It supports OpenID Connect, OAuth 2.0 and SAML 2.0, and can broker logins to existing OpenID Connect or SAML 2.0 identity providers. Disabling a user in Keycloak removes the single sign-on path for every connected application at once. Auditors will still ask whether local application accounts, API tokens and service credentials were also removed, so test those paths separately.

Zitadel identity brokering

Zitadel acts as a central identity broker, so users sign in through external providers such as Google, Microsoft Entra ID or Okta over OpenID Connect, SAML 2.0 or LDAP. Applications trust Zitadel instead of each provider. Removal then has two points of failure: the employee's account at the external provider and the brokered link in Zitadel. Confirm that terminating the upstream account blocks brokered sign-in, and that the Zitadel record is updated in the same cycle.

Licensing and support obligations

The four products use different licenses: authentik is MIT, FreeIPA is GPL-3.0-or-later, Keycloak is Apache-2.0 and Zitadel is AGPL-3.0-only. License terms affect how you may modify, distribute and host each platform, and therefore who must maintain the patches and the audit trail. Ask counsel to confirm obligations for your deployment model, and confirm vendor support terms in writing, because open-source licenses do not guarantee support for SOX evidence.

Confirm behavior in your environment

Vendor documentation describes what each product is designed to do, but your configuration, connectors and target applications determine what happens to a removed user. Test each in-scope path with a named test account, record the timestamps for the source change, the sync or revocation, and the target disablement, and retain the results for the auditor. Document any application that does not support deprovisioning and assign a compensating review for it.

What meeting user access removal costs

This table breaks down the cost components of keeping access removal timely and provable under SOX, showing who is paid, whether each cost is one-time or recurring, and what pushes it up. Use it to build a quote request, since no figures are published here and each cost depends on your environment. The main takeaway is that open-source identity tools reduce license spend but leave integration, reconciliation and audit evidence costs in place.

Cost componentWho is paidOne-time or recurringWhat drives it
Identity tooling or licensesSoftware vendor, or none for open-source platformsRecurring for commercial licenses; open-source removes license spend onlyNumber of users, applications and directories; support subscriptions if you buy them
Connector and HR feed integrationImplementation partner or internal engineersOne-time, with later maintenance when systems changeNumber of in-scope applications, quality of HR termination data, and how many use custom APIs
Deprovisioning workflow build and testingImplementation partner or internal engineersOne-time, then change work as applications changeWhether removals flow automatically through SCIM or require manual tickets, and how many exceptions you handle
Periodic termination reconciliationInternal control owner, IT operations or co-sourced staffRecurring at the frequency you set, often monthly or quarterlyContractor volume, number of directories and applications, and how often HR and access records drift
Auditor sampling and testingExternal auditorRecurring each audit cyclePopulation size of terminations, number of in-scope systems tested, and how well evidence is already organized
Readiness review or external testingConsultant, co-sourced internal audit or security testing firmOften one-time before an audit, or periodicScope of systems reviewed, first-year maturity of the process, and whether findings from prior audits remain open

Who owns removal, who implements it, and what the auditor checks

The organization owns the removal control. Management designs the termination policy, decides which applications and infrastructure fall inside SOX ITGC scope, assigns owners for each system, and performs the reconciliation that shows whether access was removed on time. An implementation partner or auditor can support these tasks, but neither can accept the risk that a former employee keeps access to a ledger. Management also has to be able to explain the control in its own words during a walkthrough.

  • Termination policy: Define who triggers removal, the deadline for each access type, and what happens to shared and service accounts.
  • Scope list: Keep a current list of in-scope applications, databases, operating systems and directories with named system owners.
  • Reconciliation review: Compare the HR termination and transfer list against active accounts on each in-scope system, then document follow-up on exceptions.
  • Exception handling: Record every late or missed removal, its cause, and the corrective action with a reviewer's sign-off.
  • Retained evidence: Keep the reconciliation outputs, reviewer sign-offs and exception logs so they can be produced for the auditor without rebuilding them.

Before engaging anyone, confirm that a named manager can explain each step of the control and point to the evidence it produces.

Where removal controls usually fail and how to close each gap

Removal controls rarely fail in one place. They fail where the list of people who should lose access does not match the systems that grant it, and where nobody checks the two against each other. The cards below name the gaps auditors most often find and the closing action for each.

Contractors missing from HR feeds

Contractors, consultants and temporary staff usually sit outside the HR system that drives joiner, mover and leaver events. Their accounts persist after the engagement ends because no termination event fires. Check whether every contractor account has a named sponsor and an end date, and whether that end date triggers removal without anyone remembering to file a ticket.

Local accounts outside the identity provider

Financially significant applications, databases and servers often keep local user stores that the central identity provider never touches. Disabling the directory account leaves the local login active. Inventory every application that authenticates locally, and confirm that the leaver process covers each one or that local logins are disabled at the source.

Manual tickets without reconciliation

A leaver ticket that is closed without anyone comparing it to the live access list proves only that a ticket was filed. Auditors will compare termination listings with access records and look for accounts still active after the leaver date. Add a periodic reconciliation between the termination list and the enabled accounts in each in-scope system, with the reviewer's sign-off retained.

Role changes that keep prior access

When someone moves to a new team, access is often added for the new role and the old access is never removed. The result is accumulated privilege that no current manager intended. Make the mover process remove prior role grants as a required step, and confirm that the access list for the new role is the only list that survives the transfer.

Shared accounts with no owner

Shared and service accounts often hold database or application rights that remain usable after the people who knew the password have left. Nobody is accountable for disabling them, so they outlast every leaver event. Record a named owner for each shared account, rotate its credentials when that owner leaves, and confirm the account appears on the access review population.

Removal without a centralized directory

Where each application runs its own user store, removal means logging into every system and deleting the account by hand. Some teams automate this with provisioning connectors, which push deletions from a central source to target applications. Ask which in-scope applications support automated deprovisioning, which need manual steps, and who evidences each one.

Questions buyers ask about user access removal

What drives the cost of user access removal work for SOX ITGC?

The cost depends mainly on how many financially significant systems are in scope, how many of them have their own local accounts instead of central sign-on, and how much of the HR-to-IT termination flow already exists. Cost components are the time spent mapping in-scope applications, databases and infrastructure, integrating the HR source with directories and identity tools, configuring deprovisioning for each application, and building the evidence that shows removals happened on time. Fixed-scope engagements are priced from a written scope, so ask any provider to list each application, each integration and each evidence report included. Recurring costs include quarterly or monthly reconciliation of termination lists against access records and keeping integrations working after upgrades. DeployOpen does not publish a price list; a quote follows from the agreed scope.

How long does it take to implement timely access removal?

Duration follows scope rather than a fixed period. Timing depends on how many applications and directories need connectors, whether a central identity provider already exists, how clean the HR and directory data is, and how many change windows the business allows for production systems. Applications that accept automated provisioning move faster than those that need manual steps or vendor tickets. Agree on a written timeline with milestones for the HR feed, the directory, each in-scope application and the evidence process before work starts. Confirm with your own change calendar and the auditor's testing period how much time must pass with the control operating before the audit window opens.

What do HR and IT teams need to provide for access removal?

HR must send a reliable, timely signal for every termination, transfer and leave, and it must be the same signal that auditors will compare against access records. IT needs the authoritative list of in-scope applications, the owner of each application, the account types in use (named, shared, service and local), and approval of who may disable or delete accounts. Practical inputs include a clear definition of the termination effective date, a process for contractors whose end dates live in a vendor system or a project tracker, and a named contact for emergency removals. Without these inputs, removals depend on manual emails and the population the auditor samples is hard to define.

Can our own team implement SOX access removal in-house?

Yes, many organizations do this internally, and the decision depends on skills and capacity rather than on whether the work is possible. An internal team needs experience with directory services, SCIM or other provisioning standards, application administration and audit evidence. The work is continuous: new applications, reorganizations and upgrades all change the population that must be covered. Some organizations keep ownership of the controls and the reviews while bringing in an implementation partner to build and document the integrations. An external auditor or certification body issues any report or opinion, and management still owns the control. Ask any partner to state which parts it builds, which parts you must operate and which evidence you keep.

What do auditors sample when testing user access removal?

Auditors typically start with a population of terminations and transfers from the HR or contractor records for the period, then select samples and trace each one to the access record in every in-scope application. They also check that the termination list is complete by comparing it against the directory and application accounts, which is why unmatched active accounts often become findings. For each sample they look for evidence of the removal date, the person who performed or approved it, and whether it happened within the timeframe the company defined. Under PCAOB AS 2201, testing combines inquiry, observation, inspection of documents and re-performance, so keep the termination records, system logs and reconciliation reports that support each step. Confirm the exact sample sizes and period with your auditor.

How should we handle contractors and temporary staff in access removal?

Contractors often fall outside the HR feed, so they are the most common gap in removal testing. Bring contractor identities into the same directory and assign each one an end date tied to the contract or the sponsoring manager. Require a named sponsor who confirms the end of engagement, and make the account expiry automatic where the identity platform allows it. Vendors that operate your systems should also have their access removed when their contract ends, which links this topic to SOX ITGC for cloud and outsourced IT. Keep a separate list of contractors with their sponsors and end dates so the population can be reconciled to access records during the audit.

How do we handle legacy applications that cannot be integrated?

Legacy applications with local accounts or no provisioning interface need a documented workaround rather than an assumption that removal happens. Options include a manual removal procedure with a ticket, a checklist that the system owner signs, a scheduled report of active accounts compared with the termination list, or placing the application behind a central sign-on layer so that disabling the central identity removes access. Keycloak can provide single sign-on through OpenID Connect or SAML 2.0 for applications that support those protocols, and Zitadel can broker sign-in from external providers. Each option must be tested for the accounts it covers, and the reconciliation must cover local accounts that bypass sign-on. Confirm with each application vendor which account types it supports before committing to a design.

Which open-source tools can automate access removal evidence?

Several self-hosted tools cover parts of the flow. FreeIPA uses 389 Directory Server as a multi-master LDAPv3 directory that stores users, groups and hosts, with centralized access control and delegated administration. authentik's SCIM provider pushes user and group creations, changes and deletions to target applications over SCIM 2.0, runs a full sync every hour and deprovisions users who lose access. Keycloak provides single sign-on for applications that support its protocols. Tools produce logs and sync results, but they do not decide which accounts are in scope or which removals are acceptable. Confirm each product's support for your specific applications, its licensing terms and its logging before you rely on it as evidence.

How DeployOpen scopes and prepares removal evidence

DeployOpen plans, implements and documents self-hosted identity and access platforms inside your own infrastructure, so access removal for financial applications can be automated and evidenced. We prepare systems and evidence for your assessment, while your organization owns the control and an independent auditor performs the testing.

How we scope

  • Engagements are fixed-scope, with the in-scope applications, directories and termination sources agreed in writing before work starts.
  • We list which financially significant systems receive automated deprovisioning and which still depend on manual removal tickets.
  • Scope documents name each system owner, the HR source of truth and the evidence the auditor will request.
  • Ongoing support, upgrades and periodic checks are available as a retainer after the initial scope is delivered.

How we build

  • We configure identity sources so leavers and role changes flow from HR records into the directory without manual copying.
  • Where supported, we set up SCIM provisioning so user deletions and group removals reach target applications automatically.
  • We test removal end to end with test accounts, confirming that disabled users lose access to each in-scope application.
  • We document configuration settings and confirm with each platform's current documentation which deprovisioning behaviors are supported.

How we hand over

  • We deliver a runbook covering the removal workflow, exception handling for contractors and emergency terminations.
  • We provide reports that compare termination records against account status in each system, formatted for auditor inspection.
  • We document the test results, configuration baselines and change records that show the control operated as designed.
  • Your team receives training on monitoring, reviewing exceptions and maintaining the removal process after handover.

How we support

  • A retainer can cover platform upgrades, configuration changes and periodic re-testing of removal paths as systems change.
  • We help you prepare responses to auditor requests for termination samples, including reconciling exceptions with your HR records.
  • Support covers remediation of gaps found in removal testing, with the fix and retest recorded in the evidence file.
  • We do not issue audit reports or attestations. Your independent auditor makes that determination based on the evidence we help prepare.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.