← Workflows

阅读中文版本

Privileged Access Review Workflow

Inventory every privileged account and grant, verify continued business need with owners, and revoke the excess with an auditable trail.

intermediate~35 minsecurity-auditaccess-controlcompliance

Objective

Reduce standing privileged access to only what current roles require, verified by owner attestations and enforced by automated revocation.

Environment

  • Access to IAM, database grants, and sudoers across the estate
  • A mapping from systems to owning teams
  • An approval workflow for exceptions

Steps

1. Inventory all privileged principals

Enumerate every admin-level account, role assumption, database superuser grant, and sudo rule across systems into one list.

Expected state: A single inventory exists with principal, system, grant, and last-used date.

2. Join with employment and role data

Enrich the inventory with current role, team, and employment status, flagging departed employees and role changes that outdate the grant.

Expected state: Orphaned and outdated grants are flagged mechanically rather than by memory.

3. Collect owner attestations

For each remaining grant, require the owning team to attest business need with a renewal expiry, defaulting to revoke when unattested.

Expected state: Every surviving grant carries a named attestation and an expiry date.

4. Revoke with verification

Remove unattested and flagged grants in batches, verifying afterward that legitimate access still works and nothing broke silently.

Expected state: Revocation batches complete with a post-check of critical access paths.

5. Shift standing access to just-in-time

For grants that survived review, evaluate JIT elevation (break-glass with approval and time box) so the next review starts from a smaller baseline.

Expected state: A measurable share of admin access is now temporary rather than standing.

Expected outcome

Privileged access reduced to attested, expiring grants with departed-user cleanup automated and a shrinking standing baseline.

Verification

The inventory delta shows flagged grants revoked; a test of break-glass elevation grants and expires correctly; departed users hold zero grants within a day of termination.

Cleanup

Retain attestation and revocation records for audit cycles.

Privilege accretes; reviews must decay it

Every project grants admin access that nobody remembers to remove. An inventory joined with employment data, attestations with expiry, and default-revoke for silence turns privilege from ratchet into cycle.

inventory: 312 privileged principals across 9 systems
join with HR/role data:
  departed, grant active          7   -> auto-revoke
  role changed, grant outdated    23  -> flag
  active + plausible             282  -> attest
attestation round (2 weeks, 2 reminders):
  attested w/ expiry    196  (mean expiry 90d)
  unattested            86   -> REVOKE (default)
revocation batch 1 (IAM):
  41 grants removed, critical paths re-tested OK
JIT migration: db superuser x 12 -> break-glass (4h window)

Silence means revoke

The failure mode of access reviews is unanswered attestation requests: the deadline passes, nobody answers, and the grant survives by inertia. Defaulting unanswered to revoke (with a documented exception path) makes the review’s inertia work for security instead of against it.

Last-used data does the arguing

A grant unused for 180 days argues for its own removal better than any policy memo. Including last-used in the inventory converts review meetings from debates into confirmations, and unused-but-critical grants (break-glass) get flagged for JIT conversion rather than silent deletion.