AI Adoption GuideITProvision
Entitlement anomaly detection
ML flags access requests that deviate from peer group norms or violate least-privilege rules before approval.
IT processPlanSelectDeployProvisionSupportUpgradeReplaceRetire
By Don, DoneThat’s AI coach · updated
When a request should get a second look before approval
Entitlement anomaly detection runs at the moment an access request is ready for human review. The model compares the requested entitlement bundle against two references: a peer cohort with a similar job context, and the least-privilege rules your organization already encodes in policy. When the request diverges in a way that matters for governance, the system surfaces a flag on the approval record. The flag is informational. It does not deny access, does not change workflow state, and does not produce a numeric risk score. IAM still approves or rejects.
The point is review quality, not automation of the decision. A reviewer who sees thirty similar requests each week should not have to mentally reconstruct what "normal" looks like for a sales engineer in EMEA or a contractor on a three-month engagement. The flag states what is unusual and why, with citations a governance lead can audit later.
Platforms such as Okta, SailPoint, Microsoft Entra, and ServiceNow already hold the request payload, identity attributes, and policy definitions. Anomaly detection reads from those systems; it does not replace them. It sits between request submission and approver action, the same window where provisioning request intent classifier work often clarifies what the requester actually needs.
What the model compares against
Every evaluation starts from the provisioning request as the approver would see it: requester identity, target application or resource group, requested roles or entitlements, justification text if present, and any attributes the ticketing system carries (department, cost center, manager chain, employment type). That snapshot is the unit of analysis.
The model then loads a peer cohort. Cohort membership is derived from attributes you already trust for access decisions, not from ad hoc clustering. Typical anchors include job family, region, employment class, and business unit. The cohort answers a narrow question: among people who look like this requester on dimensions that matter for access, what entitlements do they actually hold?
Separately, the model loads applicable least-privilege rules. These are explicit policy statements your governance team maintains: role-to-entitlement mappings, separation-of-duties constraints, maximum scope for a given persona, or rules that forbid certain combinations. A deviation from peer norms and a direct policy violation are different findings. Both can appear on the same request, and each should cite its own source.
If the cohort is too thin to support a meaningful comparison, the peer-norm field stays empty. That is correct behavior. A blank field is not a pass and not a fail; it signals insufficient evidence. Reviewers should treat an empty peer cite the same way they would treat missing manager attestation: proceed with other available context, including policy rules and the requester's stated need.
Building the peer cohort and policy citations
Cohort construction is where governance judgment enters the system. You define which attributes define "peers" for each application or entitlement class. A single global cohort definition rarely works. Developers in platform engineering may need a different peer slice than developers embedded in business units. Contractors may need cohorts scoped by sponsor organization and engagement length.
At flag time, the system records what it used: the attribute values that selected the cohort, the cohort size after minimum thresholds, and the entitlements held by a high-consistency subset of that cohort. Wording should be factual, not probabilistic. Instead of "87% likelihood of error," the flag reads like an audit note: "Peer cohort: 42 active identities with job family Sales Engineering, region EMEA, employment type FTE. 39 of 42 hold Salesforce Read Only; none hold Salesforce Admin. Requested: Salesforce Admin."
Policy citations follow the same discipline. When a rule fires, the flag names the rule identifier or title as it appears in your policy catalog and quotes the constraint in plain language. Example: "Policy LP-SF-03: Salesforce Admin requires Security Champion approval; requester does not hold Security Champion role." If no policy rule applies to the requested bundle, the policy section stays empty.
This citation pattern matters for downstream accountability. When access reviewers or auditors ask why a request was approved despite a flag, the record should answer without opening a separate analytics tool.
Writing the flag reviewers can act on
A useful flag has three properties: it is specific, it is sourced, and it is bounded to the request under review.
Specific means naming the entitlement or combination that triggered attention, not a generic "elevated access" label. Sourced means every non-empty line traces to either the peer cohort summary or a named policy rule. Bounded means the flag describes this request only; it does not speculate about the requester's history unless a separate control already surfaces that history to approvers.
Consider a concrete illustration. A finance analyst in North America submits a request for SAP FI Posting and SAP User Administration on the same ticket. Peer cohort for Finance Analyst, NA, FTE: 28 identities; 27 hold FI Posting; none hold User Administration. Policy SOX-SAP-12: User Administration may not be combined with posting roles for non-IT identities. The flag displays both lines. The approver sees that the combination is unprecedented among peers and explicitly barred by policy. They may still approve if a documented exception path exists, but they do so with eyes open.
Flags should not include invented risk scores, color-coded severity tiers derived from opaque models, or ranked "top ten risky users." Those artifacts encourage approvers to treat the number as the decision. Governance leads routinely see approval queues where a red badge becomes a silent deny. Anomaly detection is designed to resist that failure mode by giving reasons, not scores.
Where agentic access provisioning proposes entitlements automatically, anomaly detection still applies to the proposed bundle before it reaches a human. The same cite-or-leave-blank rules apply. Proposals that align with cohort and policy should produce an empty flag set, which is valuable negative space: reviewers spend attention on genuine outliers.
What IAM does when a flag is present or absent
The approval action remains unchanged. IAM reviewers grant, deny, or route for additional approval using the same authority they had before anomaly detection existed. A flag is an annotation on the ticket or approval task in Okta, SailPoint, Microsoft Entra, or ServiceNow, depending on where your provisioning workflow lives.
When flags are present, reviewers use them as structured input. They confirm whether the deviation is justified (role change, temporary project, migration window) or whether the request should be sent back for correction. When flags are absent, that does not prove the request is safe. It means the model found no peer-norm deviation worth citing and no policy rule violation worth citing, given the cohort and rules available at evaluation time.
Thin cohorts produce empty peer sections by design. New applications, recently reorganized departments, and small specialist teams will stay sparse until identity data catches up. Governance leads should monitor how often peer cites are empty by application and adjust cohort attributes or minimum size thresholds rather than forcing a flag where the evidence does not support one.
Pair anomaly detection with adjacent controls where they reduce duplicate manual work. License assignment optimizer addresses a different question (right-sizing license SKUs) and should not be conflated with entitlement anomaly findings. Tier-1 autonomous resolution agent may handle straightforward fulfillment after approval; it should not reinterpret a flag as a deny or auto-close a ticket because a model raised a concern.
Failure modes that undermine trust
Several implementation mistakes erode approver confidence faster than having no model at all.
Flags without cohort or policy cites. If the system emits "anomalous access pattern detected" with no peer summary and no rule name, reviewers cannot distinguish signal from model drift. Treat uncited flags as a defect and disable that signal until citations are restored.
Treating a flag as a deny. Workflow automation that blocks approval while a flag exists, or that auto-rejects when policy text appears in the flag body, reverses the governance model. IAM owns the decision; the model supplies context. Any integration that changes approval permissions based on flag presence needs to be removed or reconfigured.
Invented risk scores. Numeric scores imply precision the underlying cohort and policy checks do not have. Scores also age poorly when peer distributions shift after reorganizations. Stick to cited deviations; let humans weigh business context.
Over-broad cohorts. If "peer group" means everyone in the company, peer-norm flags become noise and approvers learn to ignore them. Tighten attributes until the cohort reflects a meaningful professional context for the entitlement under review.
Ignoring empty fields. An empty peer cite on a high-risk application is a governance signal to improve identity attribute quality or cohort design, not proof that the request is typical. Track empty-cite rates by application the same way you would track approval SLA breaches.
Entitlement anomaly detection earns its place when flags read like notes from a diligent peer reviewer: grounded, citable, and silent when the evidence is not there. IAM keeps the final word. The model's job is to make that word informed.
Is this worth automating for you?
Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.
DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.
Measure the baseline first