Skip to main content
Most companies approach access management backward. They start with systems—Okta, Google, AWS, Salesforce—and ask: “How do we manage access in each system?”
1

Per-system admin consoles proliferate

Each has different UIs, different mental models, different ways of expressing the same underlying concepts. The team managing Google groups thinks about access differently than the team managing AWS IAM roles.
2

Per-system group rules accumulate

Okta rules, Google rules, AWS rules—each maintained separately, each drifting from the others. What should be a single source of truth becomes a dozen competing approximations.
3

Per-system provisioning workflows create ticket queues

IT receives requests for each system independently. No unified view exists of what someone should have access to—only fragmented records of what they’ve requested.
The result: access management (lots of tools managing access) without access governance (clear policies defining what access should exist). The alternative is policy-first: define what access people should have based on their job function, then let systems enforce those policies automatically. This is how modern organizations are building access control.

The Traditional Approach: System-First

A Sales Engineer joins the company. IT receives a ticket: “Provision access for new Sales Engineer.” IT consults a checklist—or worse, relies on memory. They manually add the user to groups in Okta, Google, Salesforce, Slack, GitLab. Something gets missed or granted incorrectly. More tickets arrive: “I don’t have access to X” and “Why do I have access to Y?” This is reactive provisioning. IT responds to requests. No single source of truth defines what a Sales Engineer should have.

The Policy-First Approach

Define the policy once. “Sales Engineers should have access to…”
Then provisioning becomes automatic. Someone joins as a Sales Engineer. HRIS updates their attributes: job_title: "Sales Engineer". The policy engine sees the attribute change, calculates required access. The orchestration layer provisions access across all systems automatically. The user has correct access on day one. No tickets. No waiting. This is proactive provisioning. Access is defined by policy. IT maintains the policy, not individual access grants.
Policy-based provisioning provides continuous evidence of least-privilege enforcement. Instead of point-in-time attestation spreadsheets, auditors receive system-generated proof that access matches policy—satisfying SOC 2 CC6.1 (logical access controls) and ISO 27001 A.9.2.1 (user registration and de-registration).

The Core Insight

In system-first access management, organizations manage:
  • 10 systems
  • 50 groups per system
  • 500 users
That’s 500 users x 50 groups x 10 systems = 250,000 potential relationships. In policy-first access management, organizations manage:
  • 20 job roles
  • 10 policies per role
  • Policies automatically apply to users
That’s 20 roles x 10 policies = 200 objects. Three orders of magnitude less complexity.

Building Policy-First Access: The Layers

Layer 1: Identity Data (Source of Truth)

The HRIS is the source of truth for user attributes:
This data flows automatically from HRIS to the policy engine. When attributes change—promotion, transfer, termination—the policy engine re-evaluates access.

Layer 2: Policy Definitions

Policies define what access each role should have:
Policies are hierarchical. “Sales Engineer” inherits from “Sales Team” and “Base Employee”. No duplication.

Layer 3: Policy Engine (Evaluation)

The policy engine continuously evaluates: Given this user’s attributes, what access should they have?
This runs continuously. Not just when someone joins. When someone’s attributes change—promotion, transfer, team change—access automatically re-calculates.

Layer 4: Orchestration (Execution)

The orchestration layer translates policy into system-specific actions:
This layer handles all the system-specific complexity: API calls, rate limits, retries, error handling.

Layer 5: Continuous Reconciliation (Drift Detection)

Compare expected state (policy) to actual state (systems):
Drift detection runs daily. Manual changes—someone granted access directly in a system—are flagged and can be auto-corrected.
Continuous drift detection demonstrates that access controls operate as designed between formal audits. This directly addresses SOC 2 requirements for monitoring and SOX IT general controls for access management—transforming compliance from periodic attestation to ongoing assurance.

Policy-First in Practice: Sarah’s Lifecycle

Day 1: Onboarding

HRIS event:
Policy engine evaluates:
Orchestration provisions:
Sarah logs in on day one. Everything works.

Month 6: Promotion

HRIS event:
Policy engine evaluates:
No ticket. No manual intervention. Policy updated, access followed.

Month 18: Transfer

HRIS event:
Policy engine evaluates:
Orchestration provisions with graceful deprecation:
Sarah transitions smoothly. She keeps sales access for 30 days to help with handoff, gains engineering access immediately, and submits no tickets for either.

Termination

HRIS event:
Policy engine evaluates:
Orchestration deprovisions:
Last day at 5pm, all access is revoked. No lingering accounts.
Automated deprovisioning tied to HR termination events demonstrates control over the joiner-mover-leaver lifecycle. This directly addresses SOX IT general controls for access management and eliminates the “orphaned accounts” finding common in SOC 2 audits.

Policy-First Benefits

1

Single source of truth

“What access should a Sales Engineer have?” Look at the policy, not 10 system admin consoles.
2

Consistent provisioning

Every Sales Engineer receives exactly the same access. No drift between “the person hired in Q1” and “the person hired in Q4.”
3

Automatic lifecycle management

Promotions, transfers, and terminations update attributes. Policies re-evaluate. Access changes automatically.
4

Audit readiness

“Why does Sarah have Salesforce access?” “Because she’s a Sales Engineer, and the Sales Engineer policy grants Salesforce.” Policy documentation is compliance evidence.
5

Drift detection

Someone manually grants Sarah access outside policy? The system flags it:
Reduced IT overhead. IT maintains policies (200 objects), not individual access grants (250,000 relationships). Day-one access. New hires never wait for tickets. Policy defines access. System provisions automatically.

Implementing Policy-First: The Migration Path

Organizations don’t flip a switch and go from system-first to policy-first. Here’s the migration path:

Phase 1: Document Current State (Weeks 1-4)

Task: Export who has access to what from all systems. Output:
Do this for all users. The result is a snapshot of current state.

Phase 2: Extract Patterns (Weeks 5-8)

Task: Group users by role. Identify common access patterns. Output:
The 100% access becomes baseline policy. The 90%+ access likely belongs in the policy. The outliers are exceptions to investigate.

Phase 3: Define Policies (Weeks 9-12)

Task: Convert patterns to policy definitions. Output: YAML files or policy objects defining expected access per role.

Phase 4: Validate Policies (Weeks 13-16)

Task: Compare policy-defined access to current access. Identify drift. Output:
Remediate drift. Update policies where needed. Document exceptions.

Phase 5: Pilot with One Ruleset (Weeks 17-20)

Task: Enable policy-based provisioning for one Ruleset (e.g., “Sales Engineer”). Process:
  1. New Sales Engineer joins
  2. Policy engine calculates required access
  3. IT reviews and approves before execution
  4. Orchestration provisions access
  5. Validate that user has correct access
Run this in “review before execution” mode. IT sees what would happen and approves. Builds confidence.

Phase 6: Expand to All Rulesets (Weeks 21-30)

Task: Define policies for all roles. Enable policy-based provisioning broadly. Process:
  • 1-2 Rulesets per week
  • Document policies
  • Validate against current access
  • Enable provisioning
  • Monitor for issues

Phase 7: Enable Continuous Compliance (Week 31+)

Task: Turn on daily drift detection and auto-remediation (optional). Process:
  • Daily: Compare policy to reality
  • Flag drift
  • Optionally: Auto-remediate (remove excess access, grant missing access)
  • Log everything
The organization is now fully policy-first. Access is governed by policy. Systems are execution layers.

Common Objections

“This sounds like a lot of upfront work.” It is. Documenting current state and extracting patterns takes 8-12 weeks. But consider the alternative: managing 250,000 relationships forever. The upfront investment pays off in reduced ongoing overhead. “What about exceptions?” Exceptions are first-class citizens in the policy model. They’re tracked explicitly:
Exceptions don’t pollute policies. They’re separate. “What if HRIS data is wrong?” Then system-first access is also wrong. The problem isn’t policy-first. The problem is data quality. Policy-first makes data quality issues visible—because the system explicitly depends on attributes. System-first hides them—because manual grants mask underlying data problems. “Our auditors require quarterly access reviews.” Policy-first satisfies the same compliance requirement—demonstrating access is appropriate—with stronger evidence:
  • System-first: “We reviewed access quarterly, managers approved.”
  • Policy-first: “We defined policies, validate daily, exceptions are logged.”
Auditors prefer policy-first.

The Bottom Line

System-first access management is backward. Organizations manage symptoms (access in 10 systems) instead of causes (what access people should have). Policy-first flips this:
  1. Define what access roles should have (policy)
  2. Let systems enforce policies automatically (orchestration)
  3. Detect when reality drifts from policy (continuous compliance)
This is how modern access governance works. It takes upfront effort to migrate. But once there, organizations manage 200 policies instead of 250,000 relationships. Three orders of magnitude less complexity. Start the migration. Document current state. Extract patterns. Define policies. Pilot with one Ruleset. Expand. Within 6 months, policy-first access is achievable. And there’s no going back.
Next up: The end-state vision—what fully automated onboarding looks like when policy-first access is combined with infrastructure as code.
Ready to implement policy-first access? Explore Provisionr’s policy framework