Somebody leaves on a Friday. IT disables their account, collects the laptop, and closes the ticket. On Monday an integration stops working, because it had been authenticated as that person since 2022 and nobody knew. Six weeks later a VPN certificate issued to their personal machine still authenticates, because revocation was never part of the process. A year later their name is still on a shared vendor portal login that three people use.
None of this is unusual and none of it reflects carelessness. It reflects the fact that access accumulates through dozens of small, individually reasonable grants over several years, and offboarding is a single event that inherits none of that history. The account is the part everyone can see. Everything else is invisible unless somebody wrote it down at the time.
The business consequence is a slowly growing population of credentials that work, belong to nobody, and appear in no review. That is the population an attacker is looking for, and it is also the first thing an auditor asks about.
Joiner, mover, leaver — and the one everyone skips
Access management is conventionally described as three events. In practice businesses handle the first well, the third adequately, and the second not at all — and the second is where most of the accumulated risk originates.
| Event | What should happen | What usually happens |
|---|---|---|
| Joiner | Access granted from a defined role profile, recorded with owner and reason | Access granted ad hoc, often by copying an existing person's permissions |
| Mover | Old access removed as new access is granted | New access added; old access retained because removing it might break something |
| Leaver | Every grant revoked, including non-account access | The directory account is disabled and the ticket is closed |
The middle row is where entitlement creep comes from, and it is entirely mechanical. Someone moves from support to operations, then to a team lead role, then to a different department. At each step new access is required immediately and old access is removed never, because nobody is certain it is safe to remove and nobody is accountable for the accumulation.
After a few years the longest-serving people hold the broadest access in the business, which is precisely the inversion of what a least-privilege model intends. They are also the accounts most valuable to compromise.
Copying permissions is how creep spreads
The single most common onboarding shortcut is to grant a new starter the same access as an existing colleague. It is fast, it works, and it copies every accumulated entitlement that colleague acquired across three role changes. Within two hires the original justification for half those grants is untraceable.
The alternative is a role profile: a documented set of access that a role requires, granted from that definition rather than from a person. It takes an afternoon to write for the five or six roles that cover most of a business, and it stops creep propagating by inheritance.
What actually survives an offboarding
Disabling the directory account is necessary and it addresses one category. The categories below survive it, and each one has been found live in businesses that considered their offboarding complete.
- Client certificates issued to the person's device, which authenticate independently of the account unless revoked and unless the gateway checks revocation.
- Integrations and scheduled jobs authenticated as that person, which fail on their last day and are then fixed by re-authenticating as somebody else rather than by moving to a service account.
- API keys and tokens they generated, which are attached to the system rather than to the directory and continue working.
- Shared credentials they knew, in vendor portals, hosting panels, domain registrars and telephony systems, where access is knowledge rather than identity.
- Local accounts on individual servers, network devices and appliances that were never joined to central identity.
- Access granted as an exception during a project and never withdrawn, which is invisible precisely because it sat outside the normal process.
- Data on personal devices, and in personal cloud storage, that no revocation reaches at all.
The fourth item is the hardest and the one businesses most often accept. A password that several people know cannot be revoked by disabling an account — it is revoked by changing it, which means knowing every consumer of it. That is the same inventory problem described in the secrets management article, and offboarding is where its absence becomes visible.
The controls behind this are standardised
This is useful when the work has to be justified to somebody holding a budget, because the requirement is not a matter of opinion.
NIST SP 800-53 addresses it in the Access Control family. AC-2, Account Management, requires that organisations create, enable, modify, disable and remove accounts in accordance with defined policy and criteria, and that account managers are notified when accounts are no longer required. Its enhancements are more specific still: AC-2(3), Disable Accounts, calls for disabling accounts within a defined period when they have expired, are no longer associated with an individual, violate policy, or have been inactive beyond a defined period. AC-2(2) addresses temporary and emergency accounts, requiring that they be automatically removed or disabled after a defined period rather than persisting.
Two things are worth extracting from that. The standard expects a defined time period rather than best effort, which converts offboarding from a task into a measurable control. And it treats inactive accounts as a category in their own right — accounts belonging to nobody in particular, which is exactly what accumulates when leaver processes are incomplete.
Access review: the control that finds what the process missed
Every offboarding process leaks. The question is whether anything catches the leakage, and the mechanism that does is a periodic reconciliation between who has access and who should.
- 1
Take the access list
Every account with access to each significant system, including local accounts on devices and accounts in vendor portals that are not joined to central identity. This list is usually harder to produce than expected, and its difficulty is itself a finding.
- 2
Take the people list
Current staff, current contractors with live engagements, and current service accounts with a named owner. Anything on the access list that is not on this list is the output of the review.
- 3
Reconcile, and route the differences
Accounts with no matching person are disabled. Accounts whose access exceeds their role profile are reduced. Service accounts with no owner are assigned one or removed.
- 4
Have the system owner confirm, not IT
IT can produce the list but cannot judge whether a finance user should still reach a particular system. The person accountable for that system signs off, and their sign-off is recorded.
- 5
Record the result
What was reviewed, when, by whom, and what changed. A review that was performed and not documented cannot be relied on later, by an auditor or by the next engineer.
The first time this runs in a business that has never done it, the result is uncomfortable and that is the point. Finding fourteen live accounts belonging to people who left is a good outcome, not a bad one — the accounts existed either way, and now they do not.
Privileged access deserves separate handling
Administrative access to servers, network devices, hypervisors, identity systems and financial platforms is a different category from ordinary user access, and treating both through one process under-protects the first.
Three practices carry most of the value and none requires a dedicated platform. Administrators should hold a separate privileged identity rather than elevating their daily account, so that a compromised email session does not carry administrative rights. Privileged access should be reachable only through a defined path — a bastion or jump host with multi-factor authentication and session recording — rather than directly from a user workstation. And privileged sessions should be logged in a way that survives the administrator, because the audit question is what was done, not who was logged in.
Where a business can go further, time-bound elevation is the strongest improvement available: administrative rights granted for a defined window on request rather than held permanently. It removes standing privilege entirely, which means an offboarding that misses something misses something with no rights attached.
Contractors, third parties and the accounts nobody owns
Third-party access fails differently from employee access, because there is no HR event to trigger the leaver process. An engagement simply ends, quietly, and nothing in any system notices.
The mechanism that fixes this is an expiry date set when the account is created, matched to the contract. An account that expires by default fails safe; an account that must be remembered fails open, and the person who would have remembered has moved to the next project. This is the same reasoning applied to temporary firewall rules and to temporary access exceptions, and it is the single highest-value habit in this whole subject.
Service accounts have the same problem in a different shape. They belong to a system rather than a person, so no leaver process touches them, and they frequently hold broad permissions because they were created to make something work. Every service account needs a named human owner who can answer whether it is still required — not because they use it, but because somebody has to be accountable for its continued existence.
Common mistakes
| Mistake | Why it happens | What to do instead |
|---|---|---|
| Offboarding disables the account and stops | The account is the visible artefact | A leaver checklist covering certificates, tokens, shared credentials and local accounts |
| Access granted by copying a colleague | Fast, and it works immediately | Role profiles, so accumulated entitlements are not inherited |
| Movers gain access and never lose any | Removing might break something; nobody is accountable | Treat a role change as a leaver plus a joiner |
| Integrations run as a named employee | Whoever built it used their own login | Service accounts with a named human owner |
| Contractor accounts with no end date | The engagement end is not a system event | Expiry set at creation, matched to the contract |
| Admins elevate their daily account | One login is more convenient | Separate privileged identity, reached through a defined path |
| Access review approves everything | Annual cadence; nobody recalls the context | Quarterly, with the system owner signing off rather than IT |
| Review performed, not recorded | It felt like housekeeping rather than a control | Record scope, date, reviewer and changes made |
A representative scenario
A composite of situations we see repeatedly; no client detail is included.
A business with around ninety staff runs its first access review after an insurance questionnaire asks how often one is performed. The expectation is that it will be a formality.
The reconciliation found live accounts for eleven people who had left, the oldest more than two years earlier. Four integrations were authenticated as individuals rather than service accounts, two of them as someone no longer employed — they had continued working because disabling the directory account did not invalidate the stored token. Several administrators used their daily account for privileged work. Two vendor portal logins were shared by name among a team, so no departure had ever changed them. A contractor engagement that ended the previous year still had VPN access with a valid certificate.
The remediation was ordered by what a compromise would reach. Dormant accounts were disabled and their certificates revoked the same week. Integrations moved to service accounts with named owners. Administrators were issued separate privileged identities and routed through a bastion. Shared vendor logins were replaced with individual access where the vendor supported it, and where it did not, the credential was rotated and its consumers recorded. Contractor accounts were given expiry dates matched to their contracts.
The review itself became quarterly, with system owners signing off rather than IT. The second review found two items rather than twenty, which is what the control looks like when it is working.
Implementation checklist
- Role profiles exist for the common roles, and new access is granted from them rather than copied from a colleague.
- A role change is handled as a leaver followed by a joiner, so old access is removed rather than accumulated.
- The leaver process covers certificates, tokens, API keys, shared credentials, local device accounts and project exceptions — not only the directory account.
- No integration or scheduled job authenticates as a named employee; all use service accounts.
- Every service account has a named human owner accountable for whether it is still required.
- Contractor and temporary accounts carry an expiry date set at creation, matched to the engagement.
- Administrators hold a separate privileged identity and reach management interfaces through a defined path with MFA.
- Privileged sessions are logged in a way that survives the administrator.
- An access review runs on a fixed interval — quarterly for general access, more often for privileged.
- The system owner signs off the review, not IT, and the result is recorded with scope, date and changes.
- Anything found by a review that the leaver process should have caught is fed back into that process.
Frequently asked questions
What is joiner-mover-leaver?
Joiner-mover-leaver is the standard framing for access lifecycle management: granting access when someone joins, adjusting it when their role changes, and removing it when they leave. Most businesses handle joiners adequately and leavers partially, and handle movers not at all — which is where entitlement creep originates, because each role change adds access without removing the previous set. After several years the longest-serving staff hold the broadest access, inverting the least-privilege model the business believes it operates.
What does offboarding usually miss?
Everything that is not the directory account. Client certificates issued to the person's device continue to authenticate unless revoked and unless the gateway checks revocation. Integrations and scheduled jobs authenticated as that individual keep working through stored tokens, or fail and get re-pointed at another person rather than a service account. API keys they generated are attached to systems rather than to identity. Shared credentials they knew cannot be revoked by disabling an account, only by changing them. Local accounts on servers and network devices that were never joined to central identity remain. And access granted as a project exception is invisible precisely because it sat outside the normal process.
How often should access reviews be carried out?
Quarterly is defensible for general access and monthly for privileged access. The specific interval matters less than the review genuinely happening, but annual reviews do not work: a year is long enough that nobody remembers the context for the grants being reviewed, so the review degenerates into approving the existing state. The other decisive factor is who signs off. IT can produce the access list but cannot judge whether a particular user should still reach a particular system; the person accountable for that system has to confirm it, and their confirmation should be recorded.
Why should integrations not run as a named employee?
Because the integration inherits that person's lifecycle. When they leave and their account is disabled correctly, the integration breaks — usually at an inconvenient moment, with no error that explains the cause, since the failure is in an identity system rather than in the integration. The common repair makes it worse: re-authenticating as whoever is available transfers the problem to the next person to leave. A service account, with a named human owner accountable for whether it is still required, decouples the integration from staff changes and produces an audit trail that distinguishes automated activity from user activity.
How should contractor access be handled differently?
The essential difference is that no HR event marks the end of a contractor engagement, so nothing triggers a leaver process. The mechanism that solves this is an expiry date set when the account is created, matched to the contract term, so that access ending is the default outcome rather than something a person has to remember. Beyond that, contractors should have individual identities rather than shared accounts so activity is attributable, should be granted the specific systems named in the engagement rather than a group membership, and should be subject to multi-factor authentication regardless of how short the engagement is.
What does NIST say about disabling accounts?
NIST SP 800-53 covers this in the Access Control family. AC-2, Account Management, requires organisations to create, enable, modify, disable and remove accounts in accordance with defined policy and criteria, and to notify account managers when accounts are no longer required. The enhancement AC-2(3), Disable Accounts, calls for disabling accounts within a defined time period when they have expired, are no longer associated with an individual, violate organisational policy, or have been inactive beyond a defined period. AC-2(2) requires that temporary and emergency accounts be automatically removed or disabled after a defined period. The recurring phrase is defined time period, which converts offboarding from best effort into a measurable control.
Conclusion
Offboarding is judged by what it misses, and what it misses is determined years earlier by whether access was recorded when it was granted. A business that grants access from role profiles, assigns an owner to every service account, and sets an expiry on anything temporary will have a leaver process that mostly works. One that grants access by copying colleagues and remembers exceptions informally will not, however good its checklist.
The access review is what makes the difference visible. It is uncomfortable the first time and routine by the third, and the trajectory of what it finds is the only honest measure of whether the rest of the process is improving.
Sources and further reading
- Secrets management for business systems— the inventory that makes shared credentials revocable
- Secure remote access architecture— certificates, device identity, and the bastion pattern
- API integration for modern businesses— why integrations break on somebody's last day
- NIST SP 800-53 Rev. 5: Security and Privacy Controls— AC-2 Account Management and its enhancements
Services This Relates To
Written by KYCONNECTS Engineering. Client names are withheld under confidentiality.