Identity Governance Foundations in Okta
Signing people in is only half the job. Governance answers the harder questions: who should have access, who approved it, who checked it, and how do we prove it to an auditor. A first-principles guide to building that discipline with Okta.
Westbrook Insurance has done everything right on sign-in. Every one of its 6,000 employees uses single sign-on. Multi-factor authentication is mandatory. Phishing-resistant factors protect the administrators. The security team is proud of it, and with good reason.
Then the annual audit arrives. The auditor picks twenty names at random and asks three simple questions about each. Why does this person have access to the claims payment system? Who approved it? When did anyone last check whether they still need it? For eleven of the twenty, nobody can answer. One person moved to marketing two years ago and still approves payments. Another left the company in March, and an account in a rarely used app is still active. Two people hold a combination of permissions that lets them both create a vendor and pay that vendor, which is exactly the situation fraud rules exist to prevent.
Nothing was wrong with the sign-in. The problem was governance: the ongoing discipline of deciding, recording, reviewing, and proving who has access to what. Authentication tells you who someone is. Governance tells you whether they should be allowed to do what they are doing, and keeps telling you, month after month, as people and systems change.
This guide builds the foundations of identity governance from zero, with Okta as the platform. We define the vocabulary, look at how Okta’s governance capabilities fit together, and then work through the foundation layers one at a time: clean data, an application inventory, sensible groups and roles, a reliable joiner-mover-leaver process, entitlements, access requests, access reviews, and separation of duties. After that we cover automation, compliance evidence, security, monitoring, a rollout roadmap, and the mistakes that sink governance programs. You do not need any prior governance experience.
1Why Sign-In Is Not Enough
A company can have perfect authentication and still be badly exposed. The gap between “this really is Maria” and “Maria should have this access” is where governance lives.
Three Questions, Three Disciplines
Access management answers three separate questions. Confusing them is the root of many weak programs.
Who are you?
This is authentication. Passwords, factors, and device checks prove that the person at the keyboard is who they claim to be.
What may you do right now?
This is authorization. Rules and permissions decide whether a specific action, such as approving a payment, is allowed at this moment.
Should you still have this, and can we prove it?
This is governance. It manages how access is granted, reviewed, changed, and removed over time, with a record that stands up to scrutiny.
How Access Rots
Access is not static. It decays in predictable ways, and every one of them is invisible to an authentication system.
- Privilege creep. People change roles and collect permissions. Nobody removes the old ones, so a long-serving employee ends up with far more access than any single job needs.
- Orphan accounts. Accounts that belong to nobody active, such as a leaver’s account in an app that was never connected to the central process.
- Over-provisioning. A new hire is “set up like Dana” and receives everything Dana has, including things Dana needed only for a one-off project.
- Toxic combinations. Two permissions that are harmless alone but dangerous together, such as creating and approving the same payment.
- Stale approvals. An approval from three years ago is treated as permanent, though the reason may have ended.
- Unknown ownership. Nobody can say who is responsible for deciding who gets access to a given app.
Think of the keys to a large office building. The front door lock is authentication: it checks the key is genuine. But over ten years, staff have been handed keys to storerooms, server rooms, and the finance office. Some keys were never returned. Some people hold keys they used once. Governance is the habit of keeping a key register, asking each holder “do you still need this?”, and collecting keys that are no longer justified.
Okta’s governance capabilities have grown quickly, and names, packaging, and licensing change over time. This guide focuses on lasting concepts and design choices. Confirm exact features, limits, and supported applications in Okta’s current documentation and with your account team before you commit to a design.
2What Identity Governance Is, and Is Not
Identity governance and administration, often shortened to IGA, is a field with its own history and vocabulary. A clear definition keeps projects focused.
A Plain Definition
Identity governance is the set of processes and tools that make sure the right people have the right access to the right resources for the right reasons, and that you can show evidence of this at any time. It combines three activities: deciding who should have access, enforcing that decision by creating and removing accounts and permissions, and verifying over time that the decision is still correct.
The Four Pillars
Lifecycle
Accounts and access follow real-world events: a person joins, moves, or leaves. Access appears and disappears automatically in step with those events, not weeks later.
Request and approval
When someone needs access beyond their standard set, they ask. The right people approve with the right information, and the grant is recorded, often with an end date.
Review and certification
At regular intervals, managers and owners look at who has what and confirm or remove it. The review itself becomes evidence.
Policy and risk controls
Rules such as separation of duties stop dangerous combinations before they happen, and reports show where risk is concentrated.
What Governance Is Not
Governance is
- An ongoing process with owners and a calendar.
- A way to make access decisions visible and repeatable.
- A source of audit evidence produced as a by-product of daily work.
- A partnership between IT, security, HR, and business owners.
Governance is not
- A one-time cleanup before an audit.
- A tool you buy and then ignore.
- Only the IT team’s problem.
- The same as single sign-on or MFA.
Governance is to access what bookkeeping is to money. Spending money is easy. Keeping a trustworthy record of where it went, checking that records match reality, and being able to explain every entry to an outside inspector is the discipline that keeps a business honest. A company with no bookkeeping might be fine today, but it cannot prove it.
3Core Concepts: The Vocabulary of Governance
Governance has a precise vocabulary. Learning these terms once makes everything that follows easier to read and to discuss with auditors.
Entitlement
A specific permission inside an application, such as “approve invoices up to a limit” or “read customer records.” Entitlements are the fine detail below the level of “has an account.”
Role
A named bundle of access that matches a job, such as “Claims Adjuster.” People hold roles and receive the access that comes with them.
Entitlement bundle
A package of related entitlements that can be requested or assigned together, so people do not need to pick permissions one by one.
Birthright access
The access everyone in a given role receives automatically on day one, with no request needed, like email and the company directory.
Access request
A formal ask for access that is not birthright. It records who asked, what for, who approved, and often when the access should end.
Approver
A person or group who decides on a request, usually a manager, an application owner, or both in sequence.
Access certification
A scheduled review in which reviewers confirm or revoke each person’s access. Also called an access review or recertification. A single scheduled run is often called a campaign.
Attestation
A recorded statement by a responsible person that something is true, such as “I confirm these ten people still need this access.”
Separation of duties
A rule that no single person should control all steps of a sensitive process. Often shortened to SoD.
Toxic combination
A set of permissions that violates separation of duties when held by one person.
Least privilege
Giving only the minimum access needed to do a job, for only as long as needed.
Orphan account
An account in an app that matches no active person, often left behind by leavers or created by hand.
Joiner, mover, leaver
The three life events that change access. Joiners start, movers change role, leavers depart. Each needs its own handling.
Provisioning
Creating, updating, and removing accounts and permissions in applications automatically when something changes in the identity system.
Owner
The accountable person for an application, role, or group. Governance does not work without named owners.
Audit evidence
Records that show a control worked: who requested, who approved, what was reviewed, what was removed, and when.
Think of a hospital. A role is “Surgical Nurse.” Entitlements are the specific permissions inside it: enter the operating theater, view patient charts, handle controlled medicines. Birthright access is the staff cafeteria card everyone gets. An access request is a nurse asking for temporary access to the pediatric ward. A certification is the ward manager reviewing the badge list every quarter. Separation of duties is the rule that the person who orders controlled medicine cannot also be the one who signs it off.
4The Access Model: How Access Is Organized
Before any tool is configured, decide how access will be organized. The model you choose determines how easy reviews, requests, and audits will be for years.
Three Ways to Decide Who Gets What
| Approach | How it works | Strength | Weakness |
|---|---|---|---|
| Role-based (RBAC) | Access is attached to roles that match jobs | Easy to explain and to review | Roles multiply; exceptions pile up |
| Attribute-based (ABAC) | Access depends on facts such as department, location, or project | Flexible and automatic | Depends on clean data; harder to read |
| Request-based | People ask, and approvers decide | Fits unusual and temporary needs | Slow if overused; approvers may rubber-stamp |
Mature programs use all three, each for what it does best. Standard access for a job is granted by role or attributes, so it appears automatically. Special access is requested, approved, and given an end date. Everything is reviewed on a schedule.
The Layered Model
flowchart TD
P["Person: attributes from HR"] --> BR["Birthright access: automatic for everyone"]
P --> RL["Role access: from job, department, location"]
P --> RQ["Requested access: approved, time-limited"]
BR --> ACC["Effective access in applications"]
RL --> ACC
RQ --> ACC
ACC --> RV["Periodic review and certification"]
RV -->|"Revoke"| ACC
Groups, Roles, and Entitlements in Okta
In Okta, the most common building block is the group: a collection of users to which apps and policies can be assigned. Governance thinking adds two finer layers. A role is a business-level idea that usually maps to one or more groups. An entitlement is a permission inside an application. For apps that support it, Okta can manage entitlements and bundle them, so that a request can say “I need the Claims Adjuster bundle” rather than a list of twelve individual permissions. The mapping looks like this.
| Layer | Example | Who owns it | Reviewed how |
|---|---|---|---|
| Business role | Claims Adjuster | Head of Claims | Yearly role review |
| Okta group | role-claims-adjuster | Identity team with role owner | Membership rules checked quarterly |
| App assignment | Claims system assigned to the group | Application owner | Part of access campaign |
| Entitlement bundle | Claims: adjust and pay up to a limit | Application owner | Reviewed per person in campaigns |
| Entitlement | “Approve payment” permission | Application owner and risk team | Checked against separation of duties |
A restaurant has job titles such as chef, waiter, and cashier. Each title comes with standard tools: knives, order pads, till keys. A waiter who covers the bar for a week asks the manager for the cellar key, which is a request with an end date. The manager walks through the key register each month to see who still holds what. Roles, requests, and reviews are all present, and each handles a different kind of need.
5Okta’s Governance Landscape
Okta provides governance through a set of connected capabilities. Knowing what each does, and where its boundary lies, prevents both gaps and overlaps.
The Main Capabilities
Universal Directory and groups
The identity data store. Holds people, attributes, and group membership that all governance decisions depend on.
Lifecycle Management
Automates joiner, mover, and leaver events, and provisions accounts into connected apps. The engine that keeps access in step with HR.
Access requests
Lets people ask for apps and entitlements, routes requests to approvers, and records decisions. Often reachable from chat tools, where supported.
Access certifications
Runs review campaigns in which reviewers confirm or revoke access, and can act on the results automatically.
Entitlement management
Models fine-grained permissions in supported apps, and groups them into bundles for assignment, request, and review.
Separation of duties
Defines conflicting permissions and checks requests and assignments against them, where the capability is available in your plan.
Workflows
A no-code automation tool that connects events to actions: notify, create tickets, update attributes, escalate, or clean up.
System Log and reports
The record of changes and decisions. Together with governance reports, it forms the audit trail.
Privileged access and posture tools
Okta also offers products for privileged account access and for assessing identity security posture. Check how they link with your governance design.
The Big Picture
flowchart LR
HR["HR system: source of truth"] --> UD["Universal Directory"]
UD --> LCM["Lifecycle Management"]
LCM --> APPS["Connected applications"]
REQ["Access requests"] --> APPR["Approvers"]
APPR --> LCM
CERT["Access certification campaigns"] --> REV["Reviewers"]
REV -->|"Revoke"| LCM
SOD["Separation of duties rules"] --> REQ
SOD --> CERT
WF["Workflows"] --> REQ
WF --> CERT
LCM --> LOG["System Log and reports"]
REQ --> LOG
CERT --> LOG
Where Okta Ends
No platform governs everything. Okta governs the identities and the applications connected to it. Permissions that live outside connected apps, such as local accounts on servers, database roles, or cloud platform permissions, may need other tools or may need integration work to be visible. Part of a good governance foundation is an honest list of what is inside the scope and what is not.
A clean governance report on connected apps can create false comfort if your riskiest systems are not connected. Always list important systems that sit outside the platform and decide how they will be covered.
A building’s key register covers only the keys it knows about. If the finance office has its own lock and its own spare keys, the register looks complete and is not. The first job is to find every door, even the ones the register has never heard of.
6Architecture and Data Flow
Governance is only as good as the data flowing into it. This chapter traces where facts come from, how decisions are made, and where results go.
Four Kinds of Data
| Kind of data | Example | Source | If it is wrong |
|---|---|---|---|
| People data | Name, manager, department, employment status, end date | HR system and directories | Wrong people get access, or leavers keep it |
| Application data | Which apps exist, their owners, and sensitivity | Application inventory | Reviews miss risky apps |
| Access data | Which accounts and entitlements exist in each app | Provisioning connections and imports | Reviewers see an incomplete picture |
| Decision data | Requests, approvals, review decisions, exceptions | Governance engine | Audit evidence is missing or untrustworthy |
From Event to Evidence
flowchart TD
E1["Event: new hire recorded in HR"] --> S1["Okta creates identity and sets attributes"]
S1 --> S2["Rules assign groups and birthright apps"]
S2 --> S3["Lifecycle provisions accounts in apps"]
S3 --> S4["Person asks for extra access"]
S4 --> S5["Approvers decide, SoD check runs"]
S5 --> S6["Access granted with end date"]
S6 --> S7["Campaign asks reviewer to confirm"]
S7 --> S8["Reviewer confirms or revokes"]
S8 --> EV["Evidence stored: who, what, when, why"]
The Principle of One Source Per Fact
Every fact should have exactly one authoritative source. A person’s employment status comes from HR. A person’s department comes from HR. An application’s owner comes from the application inventory. Permissions inside an app come from the app itself, read through connections. When two systems both claim to own a fact, they fight, and governance decisions flip randomly. Decide the source for each fact early, write it down, and make every other system a reader of that source.
Reading Access: The Hard Part
Granting access is easy compared to seeing it. To review who has what, the governance system must read the real state of each application, not just what it last pushed. Okta’s connections can import accounts and, for supported apps, entitlements. For apps without a good connection, the data may arrive through files, scripts, or manual exports. The quality of your reviews is limited by the quality of this reading. A review of stale data is a ceremony, not a control.
An auditor reviewing a warehouse can count the stock on the shelves, or can read the stock list in the computer. If the two never get compared, the list can say 500 boxes while the shelves hold 300. Reading real access from applications is the shelf count. Governance without it is reading the list and hoping.
Schedule a regular reconciliation: compare accounts found in each important application with active people in Okta. Every difference is either an orphan account, a missing connection, or a data bug, and each is worth knowing about.
7Foundation 1: Trustworthy People Data
Every governance decision starts with a fact about a person. If those facts are wrong, the best tooling in the world produces confident mistakes.
Why Data Quality Comes First
Group rules, role assignment, approvers, and review assignments all read profile attributes. If the manager field is empty, requests have no approver and reviews have no reviewer. If the department field has five spellings of “Finance,” a rule that grants finance access misses most of the team. If employment status is wrong, leavers stay active. Teams often rush to buy governance tools and then spend months discovering that their data was never good enough to use. Fixing data first is not glamorous, but it is the highest-value work in the whole program.
The Attributes That Matter Most
| Attribute | Why governance needs it | Typical problem |
|---|---|---|
| Stable person ID | Links accounts across systems and survives name or email changes | Matching by email breaks when names change |
| Employment status and dates | Triggers joiner and leaver events, including future-dated starts and ends | Leavers recorded late; contractors have no end date |
| Manager | Default approver and reviewer for requests and reviews | Missing or pointing to someone who left |
| Department and job code | Drives role and birthright access | Free text with many spellings |
| Location and legal entity | Controls regional access and legal restrictions | Out of date after transfers |
| Worker type | Separates employee, contractor, partner, and guest rules | All treated as employees |
| Cost center or project | Allows project-based access and cost ownership | Not recorded at all |
Making HR the Source
For employees, the HR system is the natural source of truth. Okta can import people from HR systems and keep them in step, so that a hire, a transfer, or a termination in HR becomes an event in Okta within minutes. For contractors and partners, which HR often does not hold, you need another authoritative source, such as a vendor management system or a sponsor-driven process in which a named employee vouches for the person and sets an end date. Without such a source, contractors become the largest group of accounts that nobody owns.
Profile the data
Count blanks, duplicates, and spelling variants in the key attributes. A simple spreadsheet shows how bad things are.
Fix at the source
Correct values in HR, not in Okta. Add required fields and drop-down lists so new errors stop appearing.
Define the master for each attribute
Write down which system owns each attribute and make Okta a reader, not an editor, of those values.
Add quality checks
Run a weekly report that lists people with missing managers, missing end dates for contractors, or unusual values.
A school cannot run a fair exam if the class list has the wrong names, the wrong classes, and students who left last year. Before you build the timetable and the seating plan, you clean the class list. People data is the class list of governance.
Production example: the manager field that held up everything
A mid-size company launched its first access review and discovered that 18 percent of staff had no manager recorded, and another 6 percent pointed to someone who had left. Reviews could not be routed. The company paused the campaign, spent three weeks correcting the HR data, added a weekly data-quality report, and then relaunched. The delay was annoying, and it prevented a review that would have been meaningless.
8Foundation 2: Know and Classify Your Applications
You cannot govern what you have not listed. An application inventory with owners and risk levels decides where reviews should be frequent, and where they can be light.
Build the Inventory
Start with what is already connected to Okta, then widen. Sources of unknown applications include finance records of software purchases, network logs showing sign-in pages, browser extension reports, and simply asking departments. For each app, record the following.
Business owner
The person who decides who should have access. This is a business role, not an IT role.
Technical owner
The person who knows how the app is connected and how to fix it.
Sensitivity tier
How harmful would misuse be? Financial, personal, health, and source code data usually rank high.
Connection status
Single sign-on only, with provisioning, with entitlement data, or not connected at all.
Compliance scope
Whether the app falls under financial reporting, privacy law, health rules, or payment card standards.
Review frequency
How often access should be certified, based on tier.
Tiering
| Tier | Examples | Review frequency | Approval for access |
|---|---|---|---|
| Tier 1: Critical | Payments, core banking, production infrastructure, admin consoles | Quarterly or more often, plus event-driven reviews | Manager and application owner, with SoD checks, time-limited where possible |
| Tier 2: Sensitive | HR data, customer records, source code | Twice a year | Manager approval, owner for special permissions |
| Tier 3: Standard | Project tools, internal wikis | Yearly | Manager approval or self-service |
| Tier 4: Low risk | Public information tools, cafeteria menus | Light or none | Birthright |
Why Tiering Saves Effort
A company with two hundred applications cannot review them all with the same intensity. Tiering lets you spend attention where risk lives. Reviewers face fewer, more meaningful decisions, and quality improves. Without tiering, reviewers drown in requests to approve access to low-risk tools, and begin to approve everything automatically, including the dangerous items.
flowchart TD
A["Application found"] --> B{"Handles financial, personal, health or admin data?"}
B -->|"Yes, critical"| T1["Tier 1: frequent review, strict approval"]
B -->|"Yes, sensitive"| T2["Tier 2: twice a year, owner approval"]
B -->|"No"| C{"Used by many people for ordinary work?"}
C -->|"Yes"| T3["Tier 3: yearly review"]
C -->|"No, low risk"| T4["Tier 4: birthright, light review"]
A hospital guards the pharmacy with locks and logs, the supply cupboard with a simple key, and the waiting room with nothing at all. It would be silly to log every visitor to the waiting room, and dangerous to leave the pharmacy open. Tiering is deciding which rooms deserve which level of protection.
9Foundation 3: Groups and Role Design
Groups and roles are the building blocks that turn people data into access. Careful design here makes everything else easier. Careless design makes everything harder.
Principles for Good Groups
- One purpose per group. A group should mean one thing, such as “Finance analysts” or “Payroll app users,” not a mix of both.
- Name with a pattern. A prefix that says what the group is for, such as role, app, or policy, makes reviews and searches far easier.
- Every group has an owner and a purpose line. The description answers “why does this group exist?”
- Prefer rule-based membership. Let attributes from HR drive membership, so people move in and out automatically. Hand-made membership should be rare and reviewed.
- Avoid nesting that confuses. Deep chains of group-inside-group make it hard to see why someone has access.
- Separate role groups from policy groups. A group that means “Finance staff” should not also be used as a security exception list.
Role Design: Top-Down and Bottom-Up
Top-down role design
- Start from business functions and job descriptions.
- Interview owners to define what each job needs.
- Produces clean, intentional roles.
- Can miss real-world access that people actually use.
Bottom-up role mining
- Analyze existing access to find common patterns.
- Reveals what people really have today.
- Fast way to get a first draft of roles.
- Risk of copying today’s over-privilege into tomorrow’s roles.
The best approach combines both. Mine the existing data to see what exists, then review the draft roles with owners, remove access that is not justified, and fix the final design top-down. Treat mined results as evidence, not as truth.
How Many Roles Are Too Many?
Role explosion is a common failure. If every small difference becomes a new role, a company with 3,000 people ends up with 2,500 roles, which is close to one role per person and defeats the point. A useful rule is to start with a small number of broad roles, plus well-defined add-on bundles for common extra needs, and use requests for the rare cases. If you have more roles than managers can name, the model is too fine.
| Pattern | Example | When to use |
|---|---|---|
| Base role | Claims Adjuster | Everyone with that job gets this |
| Add-on bundle | Claims: high-value approvals | Common extra access for a subset |
| Location bundle | Claims: Texas office tools | Access that depends on place |
| Project access | Fraud task force 2026 | Temporary, with an end date |
| Exception request | One-off access to a report | Rare, approved, time-limited |
flowchart LR
ATTR["HR attributes: department, job code, location"] --> RULE["Group rules"]
RULE --> RG["Role group: Claims Adjuster"]
RG --> BUN["Entitlement bundle: standard claims access"]
RG --> APP["App assignments: claims system, email, intranet"]
EXTRA["Approved request"] --> ADD["Add-on bundle with end date"]
ADD --> PERSON["Person's effective access"]
BUN --> PERSON
APP --> PERSON
A clothing shop has a few standard sizes, plus a small number of special orders. If it tried to stock a unique garment for every customer, the shelves would overflow and nobody could find anything. Roles are standard sizes. Requests are special orders. Both are needed, in the right proportion.
What it looks like
A new role is created by copying a senior employee’s access, which includes permissions granted years ago for a project that ended.
Why it hurts
Every new person in that role receives the old, unneeded access. Over-privilege is now automated.
Better approach
Design roles from job needs, not from a single person’s access. Review each entitlement in a role with the application owner.
10Foundation 4: Joiner, Mover, Leaver
Most governance failures begin with a life event that did not reach every system. A reliable joiner-mover-leaver process is the single most valuable control you can build.
Joiners: Day-One Readiness
The goal for joiners is simple: on the first morning, the new person has exactly the access their role needs, no more and no less. The process starts before the start date. HR records the hire with a start date, manager, department, and worker type. At the right moment, Okta creates the identity, rules assign role groups, and lifecycle management provisions accounts. The new hire receives activation instructions, enrolls in strong factors, and opens their apps. Anything beyond standard access is requested through the normal process, not copied from a colleague.
Movers: The Forgotten Case
Movers are the most dangerous group, because adding access for the new role is easy and removing access from the old one is easily forgotten. A good mover process treats the move as two events: remove access tied to the old role, and add access tied to the new one. Role-based groups make this natural, because a change in department attribute changes group membership, which removes old apps and assigns new ones. Requested access, however, does not disappear automatically. A good practice is to trigger a review of all requested and exception access whenever a person’s department or manager changes.
Leavers: Speed and Completeness
For leavers, two things matter: how fast access is removed, and whether it is removed everywhere. Deactivating the Okta account stops sign-in through Okta, but accounts in apps that keep their own passwords, API keys, and long sessions may live on. A complete leaver process also deprovisions accounts in connected apps, revokes tokens, ends sessions, reassigns or archives owned resources such as files and mailboxes, and removes the person from approval chains and reviewer lists.
Joiner flow
HR record, identity created, role groups assigned, apps provisioned, welcome message sent, factors enrolled, manager confirms additional needs. Target: ready on day one.
Mover flow
HR change, attributes updated, role groups recalculated, old role access removed, new role access added, requested access flagged for review, manager notified. Target: within a day.
Leaver flow
HR termination, immediate suspension for high-risk cases or at the end date for planned leavers, sessions and tokens revoked, accounts deprovisioned, assets reassigned, approver duties reassigned. Target: minutes for sign-in, hours for apps.
flowchart TD
HR["HR event"] --> T{"Type of event"}
T -->|"Hire"| J1["Create identity and assign role groups"]
J1 --> J2["Provision birthright apps"]
T -->|"Transfer"| M1["Recalculate role groups"]
M1 --> M2["Remove old role access"]
M2 --> M3["Flag requested access for review"]
T -->|"Termination"| L1["Suspend and revoke sessions and tokens"]
L1 --> L2["Deprovision apps"]
L2 --> L3["Reassign owned items and approver duties"]
J2 --> LOG["Record in System Log"]
M3 --> LOG
L3 --> LOG
Measuring the Process
| Measure | Question it answers | Good target |
|---|---|---|
| Time from HR leaver event to Okta suspension | How fast is sign-in cut off? | Minutes |
| Time from leaver event to last app account disabled | How complete is removal? | Hours, not days |
| Share of new hires fully ready on day one | Is onboarding smooth? | Above 90 percent |
| Movers with old access removed within a week | Is privilege creep controlled? | Near 100 percent |
| Orphan accounts found in reconciliation | Where are the gaps? | Falling to near zero |
A hotel handles check-in, room changes, and check-out. Check-in gives the guest a key card for their room. A room change must cancel the old key, or the guest could enter two rooms. Check-out must cancel the card, clear the minibar tab, and collect the towel. Most hotel problems come from room changes and check-outs, not check-ins, just as most access problems come from movers and leavers.
Production example: the leaver with a long app session
A company disabled a departing finance analyst in the morning. The analyst’s Okta account was off, but a reporting tool kept its own session for seven days, and the analyst exported a customer list from home on day three. The company then shortened the tool’s session, connected it to receive deprovisioning signals, and added “end app sessions” as an explicit step in the leaver process.
11Entitlements: Governing Below the App Level
Knowing that someone has an account in the payments system is useful. Knowing exactly what they can do inside it is what governance really needs.
The Problem With “Has Access”
Most early governance work treats access as on or off: you either have the app or you do not. But the real risk is inside. Two people with accounts in the same payments app may have very different power: one can only view reports, the other can release payments. A review that shows “both have access to Payments” tells the reviewer almost nothing. Entitlement-level governance shows “view reports” for one and “release payments, up to a high limit” for the other.
How Entitlements Appear
Roles inside the app
The app has its own roles, such as Viewer, Editor, Approver, and Administrator.
Permission sets
Named groups of rights, such as “Manage vendors” or “Run payroll.”
Licenses and seats
Paid tiers of a product, which are also a cost entitlement.
Data scopes
Limits on which records, regions, or business units a person can see.
Bundling for Humans
Raw entitlements are written for systems, not people, and their names are often cryptic: “AP_RLS_04” means little to a manager. Governance platforms let you give entitlements plain names and descriptions, and group them into bundles that match business needs, such as “Accounts payable clerk” or “Accounts payable approver up to 10,000.” Good descriptions are not decoration. They are what lets a reviewer decide correctly. A reviewer who does not understand an entitlement will approve it, because denying something you cannot explain feels riskier than approving it.
| Raw name in the app | Plain name | Description for reviewers | Risk |
|---|---|---|---|
| AP_RLS_04 | Release payments up to 10,000 | Can release vendor payments below 10,000. Cannot create vendors. | High |
| AP_VND_01 | Create and edit vendors | Can add vendors and change bank details. Cannot release payments. | High |
| AP_RPT_01 | View payment reports | Read-only access to payment summaries. | Low |
Notice that the first two rows together form a classic toxic combination. A person who can create a vendor and release payments to that vendor holds the power to commit fraud alone. Plain names and risk labels make this visible to reviewers, and separation of duties rules can block it automatically.
Coverage Is Uneven
Okta supports entitlement data for a growing list of applications, but not every app exposes permissions in a way a platform can read. For unsupported apps you can still govern at the account level, and bring in entitlement data through files, scripts, or custom connections for the most critical ones. Prioritize by risk: the apps where entitlements matter most are usually financial, administrative, and customer-data systems.
Knowing that a staff member has a key card is like knowing someone works at the bank. Knowing the card opens the vault is a very different fact. Entitlement-level governance is knowing exactly which doors each card opens, in language the manager understands.
Start entitlement work with your three most sensitive applications. Write plain names and descriptions with the application owner, label risk, and only then include them in reviews. Quality beats quantity.
12Access Requests: Designing the Front Door for Extra Access
Not all access can be automatic. When a person needs something beyond their standard set, a good request process is fast for the requester, clear for the approver, and rich in evidence for the auditor.
What a Good Request Contains
- What: the specific app, role, or entitlement bundle, in plain language.
- Why: a business reason in the requester’s own words. A free-text field with a sensible minimum prevents “need it.”
- How long: a duration or end date for anything that is not permanent by nature.
- Who approves: determined automatically from the manager, the app owner, and the risk level.
- What it conflicts with: a check against separation of duties rules before approvers see it.
Approval Design
| Request risk | Approval chain | Typical expiry | Extra controls |
|---|---|---|---|
| Low (Tier 3 or 4 apps) | Auto-approve or manager only | Permanent, reviewed yearly | None |
| Medium (Tier 2 apps) | Manager, then app owner | 12 months | Reason required |
| High (Tier 1 apps, powerful entitlements) | Manager, app owner, and risk or security | 30 to 90 days, renewable | SoD check, MFA step-up, extra logging |
| Emergency | Fast single approver, with after-the-fact review | Hours to days | Alert to security, mandatory follow-up review |
Where Requests Live
People ask for access where they already work. Okta lets users request access from their dashboard, and, where supported, from chat tools such as Slack or Microsoft Teams, where approvers can also respond. Making approval easy matters: if approving takes six clicks in an unfamiliar portal, approvers delay, requesters complain, and people look for shortcuts like sharing accounts.
The Rubber-Stamp Risk
Approvers see dozens of requests. If every request looks identical and carries no context, they approve all of them. To avoid it, show approvers helpful information: the requester’s role and team, what access they already have, how common this request is for their peers, the risk label, and any conflict warnings. Reduce volume by moving common requests into birthright or role bundles. An approver who sees five requests a week with good context will think. One who sees fifty with none will not.
flowchart TD
R["Requester asks for access with reason and duration"] --> C["System checks risk level and SoD conflicts"]
C -->|"Conflict found"| BLK["Blocked or sent to exception process"]
C -->|"Low risk"| AUTO["Auto-approve"]
C -->|"Needs approval"| M["Manager approves"]
M --> O["Application owner approves if required"]
O --> S["Security approves for high risk"]
AUTO --> G["Access granted by lifecycle engine"]
S --> G
G --> E["End date set and request recorded"]
E --> X["Access removed automatically at expiry"]
A library lets you borrow ordinary books at the desk without any questions, asks for a form and a librarian’s signature for rare manuscripts, and requires a special reading room and a supervisor for the most fragile items. Every loan has a return date. The more precious the item, the more checks apply. A request process should treat access with the same sense of proportion.
What it looks like
Requests have no end date. After three years, hundreds of “temporary” grants are still active.
Why it hurts
Temporary access becomes permanent by neglect, and reviewers cannot tell which grants were meant to be short.
Better approach
Make an end date the default for anything above low risk, and require an active renewal.
13Access Certifications: Reviews That Actually Review
Reviews are the heart of governance, and the most commonly wasted effort. A review that nobody reads carefully produces paperwork and no safety. This chapter is about making reviews meaningful.
What a Campaign Is
An access certification campaign is a time-boxed review. It selects a scope of access, assigns reviewers, gives them a deadline, asks them to confirm or revoke each item, and records every decision. When it closes, the revoked items are removed, and the whole campaign is stored as evidence.
The Design Choices
What is under review
All users of one app, all access held by a department, all holders of a risky entitlement, or all privileged accounts. Narrow scopes get better answers than giant ones.
Who decides
Managers know their people. Application owners know their app. Use managers for “does this person need it?” and owners for “is this permission sensible at all?”
How often
Set by tier: more often for critical apps, less often for low-risk ones, plus event-driven reviews when someone moves.
How long to respond
Long enough to be fair, short enough to matter. Two to three weeks is common, with reminders and escalation.
What if nobody answers
Choose in advance: leave access in place, or revoke. Revoke-by-default drives responses but can disrupt work, so use it for high-risk access.
What happens to revoked items
Automatic removal through lifecycle management is better than a ticket to a human, because tickets get lost.
Making Reviews Better
- Show context. For each item, show the person’s role, how long they have had the access, when they last used it if the app reports that, and what peers in the same role hold.
- Highlight outliers. Access that most peers do not have deserves a closer look. Put it at the top.
- Reduce volume. Remove low-risk items from review, and split the rest into manageable lists of a few dozen items per reviewer.
- Use plain language. Entitlement descriptions should be understood by the reviewer.
- Remind and escalate. Reminders at the start, middle, and end. Escalate overdue items to the reviewer’s manager.
- Measure quality, not just completion. A 100 percent completion rate with zero revocations should raise questions, not applause.
The Campaign Lifecycle
flowchart LR
D["Design: scope, reviewers, schedule"] --> L["Launch and notify reviewers"]
L --> R["Reviewers confirm or revoke"]
R --> RM["Reminders and escalations"]
RM --> R
R --> C["Close campaign at deadline"]
C --> A["Apply revocations through lifecycle engine"]
A --> V["Verify removal"]
V --> E["Store report as audit evidence"]
E --> I["Improve next campaign"]
Event-Driven and Risk-Based Reviews
Calendar reviews alone are blunt. Smart programs add reviews triggered by events: a person changes department, a person is granted a very powerful entitlement, a person’s manager changes, or a security alert involves the account. They also concentrate effort by risk, reviewing high-risk access monthly or quarterly and low-risk access yearly. This puts attention where it matters and keeps reviewers from tiring.
A ship’s captain does not inspect every nail every day. The engine room is checked every shift, the cargo hold every week, and the guest cabins once a month. Extra inspections happen after a storm. Review frequency and depth should follow risk and events in the same way.
Beware of rubber-stamping. If reviewers can approve everything with one click and nothing happens when they are wrong, they will. Make the item list short, the context rich, and the consequences real, and track the revocation rate over time.
14Separation of Duties
Some risks cannot be solved by reviewing access alone. They require rules that prevent one person from holding dangerous combinations in the first place.
The Idea
Separation of duties says that sensitive processes should be split among several people so that no single person can complete the whole thing alone, whether by mistake or by fraud. A familiar example: the person who writes a cheque should not be the person who signs it. Financial regulations such as those that apply to public companies expect such controls, and auditors test them directly.
Typical Conflicts
| Conflict | Why it is dangerous | Where it appears |
|---|---|---|
| Create vendor and release payment | One person can invent a vendor and pay it | Accounts payable systems |
| Create user and approve access | A person can grant themselves or an accomplice access | Identity and admin consoles |
| Develop code and deploy to production | Unreviewed changes reach live systems | Source control and release tools |
| Enter journal entries and approve them | Financial records can be altered unchecked | General ledger systems |
| Request access and approve own request | Defeats the whole approval process | Governance tools themselves |
| Administer system and audit its logs | Evidence can be changed by the person it concerns | Logging and security tools |
Preventive and Detective Controls
Preventive
- Check the rule when access is requested or assigned.
- Block the request, or send it to an exception process.
- Stops the problem before it exists.
- Needs clear, well-maintained rule definitions.
Detective
- Scan existing access for violations.
- Flag people who already hold conflicts.
- Finds legacy problems from before the rules.
- Problem exists until someone fixes it.
You need both. Preventive rules stop new conflicts. Detective scans find old ones, and also catch conflicts that arise through paths the preventive check cannot see, such as access granted directly inside an application.
Handling Exceptions
Sometimes a conflict is unavoidable, especially in small teams where one person must cover several duties. The answer is a documented exception with compensating controls: an owner accepts the risk in writing, the access is time-limited, and extra monitoring or a second reviewer checks the person’s activity. Exceptions should be rare, visible, and reviewed often.
flowchart TD
REQ["Access request or assignment"] --> CHK{"Conflicts with an SoD rule?"}
CHK -->|"No"| OK["Continue normal approval"]
CHK -->|"Yes"| EXC{"Exception allowed?"}
EXC -->|"No"| DENY["Deny and explain why"]
EXC -->|"Yes"| ACC["Risk owner accepts in writing with compensating controls"]
ACC --> TL["Grant with end date and extra monitoring"]
TL --> REVIEW["Review exception at each campaign"]
A bank vault needs two keys held by two different people, so no single person can open it alone. The rule is not an insult to either person. It is a design that works even if one of them is careless, pressured, or dishonest. Separation of duties builds that same two-key design into access.
Begin with five to ten conflict rules for your most sensitive process, usually payments. Prove the approach on that process, then widen. A small, reliable rule set is far better than a large one nobody trusts.
15Governing Privileged and Administrator Access
Administrators hold the keys to everything else. If governance is weak anywhere, it must not be weak here.
Why Privileged Access Is Special
A normal user can damage a small piece of the business. An administrator can change policies, create accounts, read data, and erase evidence. Attackers know this and target administrators first. Auditors know it too, and almost always ask for a list of every administrator and proof that each is justified.
The Governance Pattern for Admins
Know every administrator
List administrators in Okta and in each critical app. Include people who hold powerful roles indirectly, such as through group membership or API tokens.
Use narrow roles
Replace broad roles with scoped ones. Okta supports custom administrator roles and resource sets so that an admin can manage only certain groups or apps.
Make elevation temporary
Where possible, give admin rights only for the time a task needs, with approval and automatic expiry, instead of permanent standing power.
Separate admin identities
Administrators use a dedicated account for admin work, protected with the strongest factors, and a normal account for email and browsing.
Review more often
Certify administrators monthly or quarterly, with the application owner and the security team as reviewers.
Watch their actions
Send admin events to a monitoring tool and alert on role changes, policy edits, new tokens, and break-glass use.
| Model | How it works | Risk | Governance fit |
|---|---|---|---|
| Standing admin | Admin rights always on | Always exposed if account is stolen | Weak; needs frequent review |
| Time-limited elevation | Rights granted on request for hours or days | Exposure only during window | Strong; request and approval give evidence |
| Just-in-time with session recording | Short sessions, often recorded, via a privileged access tool | Lowest | Strongest; best for servers and databases |
In a museum, the curator does not carry the key to the diamond case all day. A guard checks it out of a safe when a cleaning is scheduled, signs a log, and returns it afterward. Standing admin rights are a key worn around the neck. Time-limited elevation is the key in the safe.
Production example: shrinking the admin list
A company running its first admin review found 23 people with some kind of administrator role in Okta, 9 of them with super administrator. After interviews with each person, 7 roles were no longer needed, 11 were replaced by narrow custom roles, and super administrators dropped to 3, each with a dedicated account and phishing-resistant factors. The audit finding on privileged access was closed.
16Governing Non-Human Identities
People are not the only ones with access. Service accounts, API tokens, and connected applications hold power too, and they are the part of governance most often forgotten.
The Non-Human Crowd
Service accounts
Accounts used by software, such as a backup job or an integration, to log in to another system.
API tokens and keys
Long secret strings that grant access to APIs. Some act with the permissions of the person who created them.
OAuth clients and integrations
Applications registered to receive tokens from the identity system, with scopes that define what they can do.
Shared and generic accounts
Accounts used by several people, such as a team mailbox login. They break accountability.
Why They Escape Governance
Non-human identities usually have no manager, no HR record, and no leaver event. Their passwords never expire, because rotating them might break something. Their owners change jobs and nobody notices. They often hold high privileges because it was easier to give too much than to work out the minimum. In many breaches, the stolen credential was not a person’s password but a forgotten service account or token.
Bringing Order
- Register every one. Name, purpose, system, owner, backup owner, creation date, and expiry or review date.
- Assign a human owner. A real person is accountable. When the owner leaves, the leaver process reassigns ownership before the account is orphaned.
- Apply least privilege. Narrow scopes and roles, reviewed with the owner.
- Rotate secrets. Store them in a vault and replace them on a schedule. Prefer short-lived tokens over permanent ones.
- Review them like people. Include non-human identities in certification campaigns, with the owner as reviewer.
- Ban sharing. Where a team needs shared access, use named accounts or a privileged access tool that records who used it.
- Watch usage. Alert when a service account signs in from an unexpected place or at an unusual time.
flowchart LR
NH["Non-human identity: token, service account, OAuth client"] --> REG["Register: purpose, owner, scope, review date"]
REG --> LP["Apply least privilege"]
LP --> V["Store secret in vault and rotate"]
V --> CERT["Include in review campaigns with owner as reviewer"]
CERT --> MON["Monitor usage and alert on anomalies"]
OWN["Owner leaves"] --> RE["Reassign owner before offboarding completes"]
RE --> REG
Think of the spare keys hidden around a house: one under the mat, one with a neighbor, one in the garage. Nobody remembers all of them, and nobody checks whether the neighbor still lives there. Service accounts and tokens are the spare keys of your digital estate, and a list of them with named holders is the first step to getting them back under control.
17Contractors, Partners and Guests
People who are not employees often have as much access as employees, with far less oversight. They deserve their own rules.
Why External Workers Are Different
Contractors, consultants, partner staff, and auditors are not in the HR system, so no leaver event fires when their work ends. They may use their own devices. They change employers without telling you. Yet they often work on the most sensitive projects, because that is why they were hired. In many organizations, external workers are the largest source of stale accounts.
The Sponsor Model
The most reliable control is the sponsor model. Every external person has a named employee sponsor who vouches for them and is responsible for their access. The sponsor sets an end date at the start, which cannot be left blank. As the end date approaches, the sponsor must either renew with a reason or let the account expire. When the sponsor leaves, the leaver process transfers the sponsorship or ends the accounts.
| Control | Employee | Contractor or partner |
|---|---|---|
| Source of truth | HR system | Vendor system or sponsor process |
| End date | Optional, on leaving | Mandatory at creation |
| Access defaults | Role-based birthright | Minimal, project-specific |
| Device requirements | Managed devices preferred | Stricter checks if unmanaged |
| Review frequency | Per tier | More frequent, with sponsor as reviewer |
| Session length | Standard | Shorter |
Practical Steps
Distinct worker type
Give contractors and partners their own worker type attribute so rules and reports can single them out.
Mandatory end date and sponsor
No account without both. Use a workflow to enforce this when the account is created.
Automatic expiry
At the end date, accounts suspend automatically, and a message goes to the sponsor.
Frequent sponsor reviews
Every quarter, sponsors confirm that each external person still works for them.
A visitor to an office building signs in at reception, names the employee they are visiting, and receives a badge that expires at the end of the day. The host is responsible for them. Nobody gives a visitor a permanent badge and forgets about it. A sponsor and an end date apply the same sensible rule to digital visitors.
Do not let contractors keep an employee-style account “because it is easier.” Easy accounts without end dates are exactly what attackers hope to find three years later.
18Internal Working: How Requests and Campaigns Run
Let us watch two governance processes from the inside: an access request and a review campaign. Seeing the steps clarifies where delays, errors, and evidence come from.
An Access Request, Step by Step
Ravi, a junior accountant, needs read access to the quarterly payments report for a three-month audit project.
sequenceDiagram
participant R as Ravi
participant G as Governance engine
participant S as SoD checker
participant M as Manager
participant O as App owner
participant L as Lifecycle engine
participant A as Payments app
R->>G: Request report access with reason and 3 months
G->>S: Check conflicts with Ravi current access
S-->>G: No conflict found
G->>M: Ask for approval with context
M-->>G: Approve
G->>O: Ask for approval as Tier 1 app
O-->>G: Approve
G->>L: Grant bundle with end date
L->>A: Create entitlement for Ravi
A-->>L: Confirmed
L-->>G: Grant recorded
G-->>R: Notify access is active
G->>G: Schedule automatic removal in 3 months
Notice the points where things can go wrong. The conflict check depends on correct data about Ravi’s current access. The approvals depend on correct manager and owner data. The grant depends on a working connection to the payments app. The expiry depends on the engine remembering. Each is a place to monitor.
A Campaign, Step by Step
sequenceDiagram
participant C as Campaign owner
participant G as Governance engine
participant D as Access data
participant V as Reviewer
participant L as Lifecycle engine
participant E as Evidence store
C->>G: Define scope, reviewers, deadline
G->>D: Read current access from apps and directory
D-->>G: Access list with entitlements
G->>V: Send items with context
V-->>G: Confirm some, revoke others
G->>G: Remind and escalate overdue items
G->>L: Send approved revocations
L->>D: Remove access in apps
D-->>G: Confirm removal
G->>E: Store decisions, timestamps, reviewer identities
G-->>C: Final report
Where Evidence Comes From
Who asked
The requester, the time, and the stated reason.
Who approved
Each approver’s identity, decision, time, and any comment.
What was granted
The exact entitlement, the system, and the end date.
What was checked
Conflict rules evaluated and their result.
What was reviewed
The list of items in each campaign, and every confirm or revoke decision.
What was removed
Proof that revoked access really disappeared in the app.
A courier company records every parcel: who sent it, who signed for it at each handoff, and the exact time of delivery. If a parcel goes missing, the chain of signatures shows where. A governance system records access in the same way, so that for any person and any permission, you can reconstruct who asked, who agreed, and when it ended.
19Automation with Workflows and Event Hooks
Governance that depends on people remembering to do things will fail on a busy Monday. Automation turns good intentions into steady habits.
What Can Be Automated
Okta offers a no-code automation tool called Workflows, and also supports event hooks that send a message to another system when something happens, such as a user being created or a group membership changing. Feature names and limits change over time, so confirm current capabilities in the official documentation before designing around them. The pattern, however, is stable: an event happens, a rule decides, an action follows.
User becomes inactive
Action: notify the manager, reassign owned items, and open a checklist for equipment return.
Contractor end date is 14 days away
Action: email the sponsor asking for renewal or expiry, with a link to decide.
Powerful role assigned
Action: post a message to the security channel with who, what, and who approved it.
Reviewer is overdue
Action: remind, then escalate to the reviewer’s manager after a set number of days.
Department attribute changes
Action: start a mover review of the person’s existing access.
Account unused for 90 days
Action: warn the owner, then suspend if no response.
Guardrails for Automation
Automation is a power tool, and power tools need guards. A mistaken rule can remove access from thousands of people in seconds.
- Test in a preview environment first. Run new flows against test users before real ones.
- Limit blast radius. Cap how many accounts a single run may change, and stop and alert if the cap is exceeded.
- Prefer suspend over delete. Suspension can be reversed. Deletion often cannot.
- Log every action. Each automated step should leave a record saying which rule fired and why.
- Own every flow. A named owner, a description, and a review date, just like any other access-related asset.
- Handle failures. If a step fails, retry sensibly, then raise a visible ticket. Silent failure is the enemy.
flowchart TD
EV["Event: attribute change, expiry, overdue review"] --> RULE{"Rule matches?"}
RULE -->|"No"| IGN["Ignore and log"]
RULE -->|"Yes"| CAP{"Under safety cap?"}
CAP -->|"No"| HALT["Stop and alert a human"]
CAP -->|"Yes"| ACT["Perform action: notify, suspend, open task"]
ACT --> LOG["Write log entry with rule name and reason"]
LOG --> FAIL{"Action succeeded?"}
FAIL -->|"Yes"| DONE["Done"]
FAIL -->|"No"| RETRY["Retry then raise ticket"]
A sprinkler system in a building reacts to heat without anyone pressing a button, but it is also tested regularly and has a shutoff valve. Good automation behaves like that: it reacts reliably, it is checked, and a human can stop it.
Start with automation that only notifies. Once the notifications have proved accurate for a few weeks, promote selected flows to take real action.
20Mapping Governance to Compliance
Most organizations start governance because an audit demands it. Understanding what auditors actually ask for lets you build once and satisfy many.
What Auditors Want to See
Different frameworks use different words, but their identity questions are surprisingly similar: Who has access? Who approved it? Is it still needed? Is it removed promptly when people leave? Are conflicting duties separated? Are administrators controlled? Can you prove all of this?
| Framework | Typical identity expectations | Evidence you can produce |
|---|---|---|
| Financial reporting controls (SOX style) | Access to financial systems is approved, reviewed, and conflict-free | Request approvals, campaign results, SoD reports |
| SOC 2 | Logical access is granted, modified, reviewed, and removed in a controlled way | Joiner and leaver samples, quarterly reviews, admin lists |
| ISO 27001 | Access control policy, user registration, privilege management, periodic review | Policy documents, role catalog, review records |
| Health data rules (HIPAA style) | Only authorized people reach patient data, with audit trails | Role-based access lists, access logs, termination records |
| Payment card rules (PCI style) | Access to card data is need-to-know, reviewed, and uniquely attributable | Reviewed access lists, unique IDs, admin separation |
This table is a simplified orientation, not legal or audit advice. Each framework has its own detailed text and your auditor interprets it for your situation, so always confirm requirements with your compliance team.
Build Once, Map Many
The efficient approach is to design a small set of strong controls and then map each to the requirements it satisfies. A quarterly review of financial-system access, run properly, may serve several frameworks at once. A single leaver process with measured removal times is evidence for all of them.
Making Evidence Easy
- Evidence by design. Choose processes that create records as a side effect, not as an extra chore.
- Immutable storage. Keep reports and logs where they cannot be quietly edited.
- Sampling readiness. Auditors pick random people and ask for the full story. Be able to retrieve request, approval, grant, review, and removal for any one person in minutes.
- Retention. Keep records as long as policy and regulation require, and no longer than necessary.
- Walkthrough documents. Short descriptions of each control, with owner and frequency, save hours of meetings.
Think of taxes. People who keep receipts all year find tax season easy, and people who do not spend weeks searching drawers. Evidence by design means the receipts file themselves.
Compliance is not the same as security. A program can pass an audit while leaving real gaps, if it only covers the sampled systems. Use the audit as a floor, and aim higher where your own risk analysis says it matters.
21Securing the Governance System Itself
The system that decides who gets access is itself a prize. If an attacker controls governance, they can grant themselves anything and erase the trail.
Threats to Governance
| Threat | How it happens | Defense |
|---|---|---|
| Self-approval | A requester approves their own request or has a friend do it | Block self-approval, require approver independence |
| Poisoned source data | Someone edits a manager or department field to gain access | Restrict who edits HR data, log changes, alert on unusual edits |
| Compromised governance admin | Attacker takes over an account that manages rules | Phishing-resistant sign-in, separate admin accounts, change approval |
| Tampered evidence | Logs or reports altered after the fact | Export logs to protected storage, restrict deletion |
| Rule tampering | SoD rules or dynamic group rules quietly loosened | Version, review, and alert on rule changes |
| Over-privileged connectors | Integration accounts hold broad rights into apps | Least privilege on connectors, rotate secrets, monitor use |
| Social engineering of approvers | Attacker pressures a manager to approve | Show context, train approvers, require reasons |
Protecting the Controls
- Few governance administrators, each with strong multi-factor sign-in and a dedicated account.
- Change control for rules, with a second person reviewing each change.
- Independent log copy sent to a system the governance admins cannot edit.
- Break-glass accounts sealed, monitored, and tested on a schedule, so that emergencies do not force risky shortcuts.
- Approver independence rules, such as no approving for people who report to you in a conflict of interest.
flowchart LR
ADM["Governance admin"] -->|"phishing-resistant sign-in"| GOV["Governance rules and campaigns"]
GOV -->|"every change logged"| LOG["Copy to protected log store"]
LOG --> SIEM["Security monitoring"]
SIEM -->|"alerts on rule or role changes"| SEC["Security team"]
GOV --> CHG["Second person reviews rule changes"]
The person who keeps the building’s security camera recordings should not be the same person who guards the vault, and the recordings should be copied somewhere that cannot be erased from inside. Guarding the guards is not distrust. It is how trust is made checkable.
22Monitoring, Logging and Metrics
You cannot improve what you do not measure. A handful of well-chosen numbers tells you whether governance is working or just running.
What to Log
Okta records activity in its System Log, which can be queried and streamed to other tools. For governance, make sure these categories are captured and retained, and confirm the exact event names in the current documentation:
- User lifecycle changes: creation, activation, suspension, deactivation.
- Group and role assignment changes, including who made them.
- Application assignments and removals.
- Administrator role grants and changes to policies.
- Access request submissions, approvals, denials, and expirations.
- Certification decisions and revocations.
- Token and API key creation and use.
- Failed provisioning attempts and integration errors.
The Key Metrics
| Metric | What it tells you | Healthy direction |
|---|---|---|
| Time to remove access after leaving | How quickly leavers lose access | Minutes to hours for critical apps |
| Orphan accounts found | Accounts with no owner or active person | Falling toward zero |
| Review completion rate | Whether reviewers respond on time | High, above 95 percent |
| Revocation rate in reviews | Whether reviews find real excess | Non-zero, then declining as hygiene improves |
| Request turnaround time | How long people wait for access | Falling |
| Standing admins | How much permanent power exists | Falling |
| Open SoD violations | Unresolved conflicts | Zero, or each with a documented exception |
| Applications under governance | Coverage of the program | Rising, by tier |
| Access with no end date for external workers | Contractor hygiene | Zero |
Alerts Worth Having
- A new super administrator, or any change to administrator roles.
- A mass change: many group removals or deactivations in a short time.
- A governance rule or workflow edited outside change control.
- A service account signing in from a new location.
- A leaver whose account is still active after the target time.
A car dashboard shows speed, fuel, and engine warnings, not every internal sensor. You need only the few gauges that tell you when to act. Governance metrics are your dashboard, and the System Log is the engine data underneath.
23Performance, Scale and Failure Scenarios
A design that works for 200 people may buckle at 20,000. Thinking about scale and failure early prevents unpleasant surprises.
Where Scale Hurts
- Review volume. Reviews multiply: users times apps times entitlements. Without tiering and role-based review, volumes become impossible for humans.
- Provisioning bursts. A merger or a yearly intake of new hires creates thousands of changes at once, which may reach rate limits on Okta or on connected apps. Limits vary by plan and endpoint, so check the current documentation.
- Group sizes and rule complexity. Very large groups and complicated dynamic rules take longer to evaluate and are harder to understand.
- Reconciliation time. Comparing millions of records takes time, so plan windows and avoid peak hours.
Failure Scenarios and Responses
| Failure | Impact | Response |
|---|---|---|
| HR feed delayed or broken | New hires wait, leavers keep access | Alert on stale feeds, manual fallback with approval |
| Application connector fails | Grants or removals silently not applied | Failure queue with alerts, retry, daily reconciliation |
| Rate limit reached in a burst | Slow provisioning | Throttle and stage changes, run bulk jobs off-peak |
| Wrong mass rule deployed | Many people lose or gain access | Safety caps, preview, quick rollback plan |
| Reviewer unavailable | Campaign stalls | Delegates and escalation paths |
| Identity provider outage | Nobody can sign in, approvals stall | Break-glass accounts, documented emergency process |
flowchart TD
CHG["Large change planned"] --> PRE["Preview on test group"]
PRE --> OK{"Result as expected?"}
OK -->|"No"| FIX["Fix rule and retest"]
FIX --> PRE
OK -->|"Yes"| STG["Stage in batches off-peak"]
STG --> MON["Watch errors and rate limit signals"]
MON --> ISSUE{"Problems seen?"}
ISSUE -->|"Yes"| PAUSE["Pause and roll back batch"]
ISSUE -->|"No"| NEXT["Continue to next batch"]
NEXT --> REC["Reconcile at the end"]
When a theater empties after a show, staff open several doors and guide people out in waves rather than letting everyone rush one exit. Staging big identity changes in batches avoids the same kind of jam.
Write down a rollback plan for every large change before you start. If you cannot describe how to undo it, you are not ready to do it.
24Advantages, Disadvantages and Trade-offs
Governance is not free. An honest view of the costs helps you decide how far to go and in what order.
Advantages
- Fewer excess permissions, so smaller damage from stolen accounts.
- Faster, more reliable joiner and leaver handling.
- Audit evidence produced as a by-product.
- Clear ownership of apps, roles, and accounts.
- Less manual ticket work for IT.
- Better answers to the question “who can access this?”
Disadvantages
- Upfront work to clean data and design roles.
- Ongoing effort from reviewers and owners.
- Licensing and tooling cost.
- Risk of friction if requests become slow.
- Rules need maintenance as the business changes.
- Can create false confidence if reviews are rubber-stamped.
The Main Trade-offs
| Trade-off | Leans one way | Leans the other |
|---|---|---|
| Speed versus control | Auto-approve low-risk access for fast work | Require approvals for high-risk access, slowing work |
| Few big roles versus many small ones | Simple to manage, more excess access | Precise, but a heavy catalog to maintain |
| Frequent reviews versus fatigue | More safety per risky item | Tired reviewers and shallow decisions |
| Automatic removal versus disruption | Strong hygiene | Risk of cutting off needed access |
| Central control versus team autonomy | Consistency and evidence | Speed and local knowledge |
| Buying a tool versus building flows | Faster start, ongoing license | Flexibility, but you carry maintenance |
Good governance is not the most control you can add. It is the least friction that still lets you prove who can do what.
Airport security could check every passenger for an hour, which would be very safe and very impractical. Real airports tier their checks, using faster lanes for known travelers and deeper checks for unusual cases. Governance tiers its effort in the same way.
25A Maturity Model and a 90-Day Roadmap
Nobody builds a full governance program in one leap. A maturity model shows where you are, and a short roadmap shows the next useful step.
Five Levels of Maturity
Ad hoc
Access is granted by email and memory. Leavers are handled when someone remembers. Audits are stressful scrambles.
Basic hygiene
Single sign-on covers main apps. A leaver process exists. Groups are mostly named sensibly. Reviews happen in spreadsheets.
Defined
Trusted people data, tiered applications, role-based birthright access, formal access requests, and scheduled review campaigns.
Managed
Separation of duties rules, time-limited privileged access, non-human identity control, automated mover reviews, and measured metrics.
Optimized
Risk-based reviews, continuous monitoring, analytics that suggest role changes, and fast, low-friction access for the many.
The First 90 Days
| Period | Focus | Outputs |
|---|---|---|
| Days 1 to 30 | Discover and fix the spine | Application inventory with tiers, owner list, admin list, HR data quality fixes, leaver time baseline |
| Days 31 to 60 | Design and pilot | Role design for two departments, birthright groups, pilot request flow for one Tier 1 app, SoD rules for the payment process |
| Days 61 to 90 | Review and automate | First certification campaign on Tier 1 apps, contractor sponsor rule, mover review trigger, first metrics report |
flowchart LR
A["Level 1: Ad hoc"] --> B["Level 2: Basic hygiene"]
B --> C["Level 3: Defined"]
C --> D["Level 4: Managed"]
D --> E["Level 5: Optimized"]
B -.->|"90-day plan targets"| C
Learning to cook starts with boiling an egg and keeping the kitchen clean, long before any elaborate dinner party. Governance grows the same way: clean up the basics, repeat them reliably, and only then add the fancy dishes.
Pick one visible win for the first quarter, such as removing all stale contractor accounts. An early, clear success earns the patience and support the longer work needs.
26Design Patterns and Anti-Patterns
Patterns are solutions that keep working. Anti-patterns are mistakes that keep recurring. Learning both from others saves you from paying for the lessons yourself.
Patterns That Work
Birthright plus request
Give everyone in a role the common access automatically, and make everything else a request. Keeps requests few and meaningful.
Tiered effort
Spend review and approval effort in proportion to application risk.
Expiry by default
Extra access ends on a date unless someone renews it with a reason.
Owner for everything
Every app, role, group, flow, token, and contractor has a named person accountable.
Prevent, detect, prove
Block known-bad combinations, scan for the rest, and store evidence of both.
Stage, preview, reconcile
Roll out big changes in small batches and compare results to intent.
Anti-Patterns to Avoid
What it looks like
Everything is reviewed the same way, every quarter, by the same managers, with thousands of items each.
Why it hurts
Reviewers click approve on everything. Real risks hide in the pile.
Better approach
Tier applications, focus on high-risk access and outliers, and cut the volume.
What it looks like
Role explosion: a new role for every team, project, and exception until the catalog has thousands of entries.
Why it hurts
Nobody understands the catalog, so nobody can review it. Roles overlap and drift.
Better approach
Keep a lean set of business roles, add small bundles for common extras, and retire unused roles on a schedule.
What it looks like
Governance is bought as a tool and expected to solve process problems by itself.
Why it hurts
The tool faithfully automates unclear ownership and dirty data. Results disappoint and trust falls.
Better approach
Fix data, ownership, and role design first, or alongside, and let the tool enforce a clear process.
What it looks like
Governance covers only the apps connected to Okta, while the riskiest systems sit outside it.
Why it hurts
The program looks strong in reports while the most sensitive access goes unexamined.
Better approach
Start from the risk list, not the connector list. For systems that cannot be connected yet, run a manual review with the same rigor.
What it looks like
Access is removed in Okta but the same person keeps a local account inside the application.
Why it hurts
The leaver appears gone while a back door stays open.
Better approach
Disable local logins where possible, provision accounts through the identity system, and reconcile local accounts regularly.
A gardener who waters every plant equally, including cactuses, drowns some and starves others. Skilled gardeners water by need. Patterns tell you who needs water, and anti-patterns are what happens with a bucket and no judgment.
27Best Practices Checklist
A compact list to review before launch and again each year. Each item is a habit, not a one-time task.
Foundations
- HR data has one source of truth, with owners for manager, department, and status fields.
- Every application is in an inventory with an owner, a tier, and a method of connection.
- Groups are named by pattern, owned, and reviewed, and role groups are separate from app groups.
- Leaver, joiner, and mover steps are written down, automated where possible, and measured.
Access Decisions
- Birthright access covers the common needs of each role and nothing more.
- Requests ask for a reason and an end date, and show approvers real context.
- Separation of duties rules protect the most sensitive processes, with documented exceptions.
- Entitlements inside critical apps are described in plain language.
Review and Control
- Reviews are tiered by risk and triggered by events as well as by the calendar.
- Reviewers have context, deadlines, reminders, and escalation.
- Revocations are applied automatically and verified.
- Administrators, contractors, and non-human identities are reviewed more often than ordinary users.
Operations and Evidence
- Logs go to protected storage, and key changes raise alerts.
- Metrics have owners and are reviewed monthly.
- Automation has safety caps, tests, and rollback plans.
- Break-glass access is sealed, monitored, and tested.
- Evidence for any person can be retrieved within minutes.
Pilots use a checklist before every flight, even though they know how to fly. The list does not replace skill. It protects against the ordinary human habit of forgetting one small thing on a busy day.
28Real-World Scenarios and Worked Numbers
Here are four short stories from the fictional Westbrook Insurance, plus a worked example of how much review work a good design can remove. All numbers are illustrative, chosen to show the method.
Scenario 1: The audit that came back clean
Westbrook’s next audit sampled 20 people. For each, the team opened a single report showing the request, two approvals, the grant, the last review, and, for one leaver, the removal time of 40 minutes. All 20 questions were answered the same day. The audit lead noted that the main change was not new software but clear ownership and consistent records.
Scenario 2: The mover who kept the keys
Meera moved from Claims to Finance. Her old Claims access stayed for months until a mover review, triggered when her department changed, showed 14 entitlements outside her new role. Twelve were removed. Two were kept with a reason and an end date. Before the trigger existed, this review depended on Meera’s goodwill.
Scenario 3: The forgotten integration token
A review of non-human identities found an API token created four years earlier by a developer who had left. It still had broad read access to customer records. The token was revoked, a replacement with narrow scope was created under a named owner, and the leaver process was changed to reassign tokens at departure.
Scenario 4: The contractor cliff
Westbrook found 118 contractor accounts, of which 37 belonged to people whose contracts had ended. Sponsors were contacted, 31 accounts were expired, and 6 renewed with reasons. A rule now requires a sponsor and end date at creation, so the number of stale accounts stays near zero.
Worked Numbers: Why Design Reduces Review Work
Suppose Westbrook has 6,000 employees and 60 applications, and each person holds on average 12 application accounts. That is 72,000 account assignments. A naive review asks managers to check every one.
| Step | Items to review | Reason |
|---|---|---|
| Start | 72,000 | Every assignment reviewed |
| Exclude Tier 3 apps from annual review | about 42,000 | Low-risk apps checked by sampling and exit process |
| Remove birthright access reviewed at the role level | about 14,000 | Review the role once, not each person |
| Focus Tier 1 and Tier 2 extra access | about 9,000 | Only extra, non-birthright access reviewed per person |
| Highlight outliers first | about 1,500 need close attention | Access that peers do not have |
The review shrank from 72,000 decisions to roughly 9,000, with about 1,500 deserving real thought. The numbers are invented for explanation, but the pattern is real: governance succeeds by removing what does not need reviewing, so that humans can focus on what does.
29Frequently Asked Questions
30Summary and Key Takeaways
Governance turns “we think people have the right access” into “we know, and here is the proof.” It is built on good data, clear ownership, sensible design, steady review, and careful automation.
Key Takeaways
- Sign-in is not enough. Authentication proves identity, authorization grants a request, and governance keeps access correct, justified, and provable over time.
- Build the foundations first. Trusted people data, an application inventory with tiers, clean groups, role design, and a reliable joiner, mover, and leaver process make every later step easier.
- Give common access automatically and make the rest a request. Birthright access by role, plus requests with reasons, approvals, and end dates, keep access lean.
- Make reviews meaningful. Tier by risk, show context, highlight outliers, apply revocations automatically, and measure whether reviewers are really reviewing.
- Control the dangerous cases. Use separation of duties, time-limited privileged access, sponsors for external workers, and owners for every service account and token.
- Guard and measure the system itself. Protect governance admins, log to independent storage, track a few key metrics, and automate with safety caps and rollback plans.
- Grow step by step. Use a maturity model and a 90-day plan, win something visible early, and treat governance as a habit that continues, not a project that ends.