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 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…”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.
The Core Insight
In system-first access management, organizations manage:- 10 systems
- 50 groups per system
- 500 users
- 20 job roles
- 10 policies per role
- Policies automatically apply to users
Building Policy-First Access: The Layers
Layer 1: Identity Data (Source of Truth)
The HRIS is the source of truth for user attributes:Layer 2: Policy Definitions
Policies define what access each role should have:Layer 3: Policy Engine (Evaluation)
The policy engine continuously evaluates: Given this user’s attributes, what access should they have?Layer 4: Orchestration (Execution)
The orchestration layer translates policy into system-specific actions:Layer 5: Continuous Reconciliation (Drift Detection)
Compare expected state (policy) to actual state (systems):Policy-First in Practice: Sarah’s Lifecycle
Day 1: Onboarding
HRIS event:Month 6: Promotion
HRIS event:Month 18: Transfer
HRIS event:Termination
HRIS event: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:
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:Phase 2: Extract Patterns (Weeks 5-8)
Task: Group users by role. Identify common access patterns. Output: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:Phase 5: Pilot with One Ruleset (Weeks 17-20)
Task: Enable policy-based provisioning for one Ruleset (e.g., “Sales Engineer”). Process:- New Sales Engineer joins
- Policy engine calculates required access
- IT reviews and approves before execution
- Orchestration provisions access
- Validate that user has correct access
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
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:- System-first: “We reviewed access quarterly, managers approved.”
- Policy-first: “We defined policies, validate daily, exceptions are logged.”
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:- Define what access roles should have (policy)
- Let systems enforce policies automatically (orchestration)
- Detect when reality drifts from policy (continuous compliance)
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