{
 "slug": "approval-quality-framework",
 "topic_id": "TOPIC-217",
 "cluster": "Enterprise IGA, Access Certification & Identity Lifecycle",
 "tier": "Tier A",
 "title": "Just-in-time privilege: the approval that takes four seconds and grants four hours",
 "summary": "An engineer requests elevation; an approver taps approve on a phone notification showing a role name. Four hours of privileged access follow, and the approval record is indistinguishable from a considered decision.",
 "lede": "Zero standing privilege was the right architectural move. It replaced permanent entitlements with time-boxed grants, and it relocated the control to an approval step that approves almost everything in under five seconds.",
 "date": "2025-01-15",
 "category": "Compliance",
 "author_id": "august-moravec-diallo",
 "tags": [
  "just in time access",
  "PAM",
  "privilege elevation",
  "approval fatigue",
  "zero standing privilege",
  "metrics"
 ],
 "image_title": "Approval Quality Framework",
 "schema": "Article",
 "key_takeaways": [
  "JIT approval is optimised for speed because slow approvals block work. Notifications render minimal context, and approval rates near 100% make the control decorative.",
  "Approval rate alone is a weak signal — most requests are legitimate. Pair it with latency and context sufficiency.",
  "Render binding keeps the speed engineers need while making the approval a signed act over what was actually granted."
 ],
 "body": [
  {
   "type": "h2",
   "text": "The base rate that makes this hard to reason about"
  },
  {
   "type": "diagram",
   "kind": "compare",
   "alt": "What the approver reads and what the grant covers",
   "caption": [],
   "nodes": "The approval is about a sentence. The grant is about a role.",
   "left": {
    "title": "The approver sees",
    "items": [
     "A colleague's name",
     "A stated reason",
     "A duration",
     "Approve / Deny"
    ]
   },
   "right": {
    "title": "The grant covers",
    "items": [
     "Every operation in the role",
     "Including unrelated ones",
     "For the full window",
     "No link to the stated reason"
    ]
   }
  },
  {
   "type": "p",
   "html": "Start with the honest complication. The overwhelming majority of privilege elevation requests are legitimate. An engineer needs production access to diagnose an incident; that is the job."
  },
  {
   "type": "p",
   "html": "So a high approval rate is expected and is not, on its own, evidence of a problem. This is where naive metrics go wrong: an organisation with a 99% approval rate may have excellent judgement applied to a population that is 99% legitimate."
  },
  {
   "type": "p",
   "html": "What distinguishes the two cases is not the rate. It is whether the approver had enough information to distinguish, and whether the record shows what they had."
  },
  {
   "type": "h2",
   "text": "Three metrics, used together"
  },
  {
   "type": "table",
   "head": [
    "Metric",
    "What it measures",
    "What it cannot show alone"
   ],
   "rows": [
    [
     "Approval rate",
     "Share of requests approved",
     "Whether approval was considered"
    ],
    [
     "Approval latency",
     "Median seconds from request to decision",
     "Whether the decision needed longer"
    ],
    [
     "Context sufficiency",
     "Whether the approver was shown scope, duration and justification",
     "Whether they read it"
    ]
   ]
  },
  {
   "type": "p",
   "html": "Together they are informative. An approval rate of 99%, a median latency of 3 seconds, and a notification rendering only a role name is a control that is not operating. The same rate with a 40-second median and full context is a control operating on a legitimate population."
  },
  {
   "type": "h2",
   "text": "What a push notification actually renders"
  },
  {
   "type": "p",
   "html": "Typical JIT approval notification content, on a phone lock screen:"
  },
  {
   "type": "code",
   "text": "  [Platform]\n  Access request: prod-db-admin\n  Requested by: j.okoro\n  [Approve]  [Deny]"
  },
  {
   "type": "p",
   "html": "Absent: what prod-db-admin permits, how long the grant lasts, what the justification says, whether this requester has held it before, and what else they currently hold."
  },
  {
   "type": "p",
   "html": "An approver acting on that notification is not making an uninformed decision through carelessness. They are making the only decision the interface permits."
  },
  {
   "type": "h2",
   "text": "What render binding adds"
  },
  {
   "type": "p",
   "html": "Put the material facts in the signed statement, and therefore in the notification."
  },
  {
   "type": "code",
   "text": "{\n  \"type\": \"manav-stmt/1\",\n  \"action\": \"privilege_elevation_approval\",\n  \"render\": [\n    \"Requester: [name, team]\",\n    \"Role: [name] — [what it permits, business language]\",\n    \"Systems: [in scope]\",\n    \"Duration: [hours]  Expires: [time]\",\n    \"Justification: [text as written]\",\n    \"Prior grants (30d): [count]\"\n  ],\n  \"approver\": \"[credential assertion]\"\n}"
  },
  {
   "type": "p",
   "html": "The prior-grants line is the cheapest high-value addition. An approver seeing that this is the requester's eleventh elevation this month makes a different decision than one seeing no history, and the data already exists."
  },
  {
   "type": "h2",
   "text": "The latency budget"
  },
  {
   "type": "p",
   "html": "There is a real tension and it should not be papered over. Slow approvals during an incident cost real minutes at the worst possible time."
  },
  {
   "type": "p",
   "html": "The resolution is to separate incident and routine paths. Incident elevation runs under a pre-authorised standing delegation with a short expiry and automatic notification to the approver — approval after the fact, recorded. Routine elevation goes through the approval path with full context."
  },
  {
   "type": "p",
   "html": "That way the control never stands between an engineer and a production outage, and the routine path — which is the bulk of volume — gets the attention it should have."
  },
  {
   "type": "h2",
   "text": "What to measure first"
  },
  {
   "type": "ol",
   "items": [
    "Median approval latency, by approver. Approvers with sub-two-second medians are responding reflexively, and that is a workload signal rather than a character judgement.",
    "Approval rate by requester, looking for requesters whose elevation frequency is an outlier for their role.",
    "Context rendered: audit what your notification actually displays. Most teams have never looked at it on a phone.",
    "Share of elevations used. A grant approved and never exercised is a request that did not need approving, and it is pure noise in the approver's queue."
   ]
  },
  {
   "type": "p",
   "html": "That last metric is frequently the biggest win available. Reducing unnecessary requests improves approval quality more than any interface change, because it restores the approver's attention budget."
  },
  {
   "type": "h2",
   "text": "A quality framework for elevation approvals"
  },
  {
   "type": "table",
   "caption": "Four dimensions, each measurable",
   "head": [
    "Dimension",
    "Poor",
    "Good"
   ],
   "rows": [
    [
     "Information",
     "Name and free-text reason",
     "Operations the role permits, recent use, peer baseline"
    ],
    [
     "Specificity",
     "Whole role",
     "The operations the stated purpose needs"
    ],
    [
     "Duration",
     "Default window",
     "The shortest window that works"
    ],
    [
     "<strong style=\"font-weight:600\">Evidence</strong>",
     "<strong style=\"font-weight:600\">A workflow record</strong>",
     "<strong style=\"font-weight:600\">A signature over what was granted</strong>"
    ]
   ]
  },
  {
   "type": "h2",
   "text": "Objections and honest limits"
  },
  {
   "type": "p",
   "html": "<strong style=\"font-weight:600\">“Approvers know their teams.”</strong> Which is why they approve quickly, and why the control adds little. Familiarity is what makes the approval fast and what makes it uninformative."
  },
  {
   "type": "p",
   "html": "<strong style=\"font-weight:600\">“Narrowing the role is a large project.”</strong> It is. The cheaper intermediate step is to gate the small number of destructive operations inside the role, which leaves the role as it is and removes most of the exposure."
  }
 ],
 "faq": [
  {
   "q": "Is a high approval rate a problem?",
   "a": "Not on its own. Most requests are legitimate. It becomes a signal when paired with very low latency and minimal rendered context."
  },
  {
   "q": "Will this slow down incident response?",
   "a": "Not if incident elevation runs under a pre-authorised standing delegation with after-the-fact notification. The approval path applies to routine requests."
  },
  {
   "q": "Does this replace PAM?",
   "a": "No. It changes what the approval step produces — a signed act over rendered scope rather than a tap on a role name."
  },
  {
   "q": "What is the single cheapest improvement?",
   "a": "Add prior-grant count to the notification. The data exists, it changes decisions, and it requires no new infrastructure."
  },
  {
   "q": "Why do approvers approve so fast?",
   "a": "Because the requester is a known colleague and the reason is plausible. Familiarity makes the approval quick and uninformative."
  },
  {
   "q": "What should the approver be shown?",
   "a": "What the role actually permits, the requester's recent elevation history, and a peer baseline — not a role name."
  },
  {
   "q": "What is the cheap intermediate step?",
   "a": "Gating the handful of destructive operations inside the window, rather than redesigning roles."
  }
 ],
 "sources": [
  {
   "t": "FTC — business guidance on marketplaces and consumer protection",
   "u": "https://www.ftc.gov/business-guidance"
  },
  {
   "t": "Published research on approval and multi-factor fatigue in security workflows."
  },
  {
   "t": "Incident analyses involving misuse of legitimately elevated privileges."
  },
  {
   "t": "Zero standing privilege architectural guidance."
  },
  {
   "t": "AWS — temporary security credentials",
   "u": "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html"
  },
  {
   "t": "NIST SP 800-53 Rev. 5 — access enforcement",
   "u": "https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final"
  }
 ],
 "related": [
  {
   "slug": "sod-exception-evidence",
   "title": "Segregation of duties exceptions",
   "category": "Developer"
  },
  {
   "slug": "provable-break-glass",
   "title": "Break-glass in the enterprise",
   "category": "Compliance"
  },
  {
   "slug": "certification-evidence-standard",
   "title": "The rubber stamp is the product",
   "category": "Developer"
  }
 ],
 "image": "https://cdn.twc.sh/images/igcache/Approval%20Quality%20Framework/1500_900/blog.jpg",
 "wordcount": 891,
 "url": "/blog/approval-quality-framework.html",
 "reading_time": "4 min read",
 "seo_title": "Just-in-time privilege: four seconds, four hours",
 "meta_description": "An engineer requests elevation; an approver taps approve on a phone notification showing a role name.",
 "hub": {
  "slug": "topics/access-governance",
  "title": "Access governance and certification"
 },
 "answer": "Four hours of unrestricted privilege, usually. Just-in-time elevation presents an approver with a request and a reason, and they approve in seconds because the reason is plausible and the requester is a colleague. The grant that follows covers the entire role, not the stated purpose.",
 "answer_q": "What does a four-second approval actually authorise?",
 "glossary": [
  {
   "term": "Just-in-time elevation",
   "def": "Granting privilege temporarily on request rather than holding it permanently."
  },
  {
   "term": "Standing privilege",
   "def": "Permanently held elevated access — the problem JIT was designed to remove."
  },
  {
   "term": "Purpose binding",
   "def": "Tying a grant to the stated reason, which no common implementation does."
  }
 ],
 "checklist": {
  "title": "Improving elevation approvals",
  "id": "elevation",
  "desc": "Four steps.",
  "steps": [
   {
    "name": "Show the approver what the role permits.",
    "text": "Not the role name."
   },
   {
    "name": "Show recent elevation history for the requester.",
    "text": "Frequency is context."
   },
   {
    "name": "Default to the shortest workable duration.",
    "text": "Not the maximum."
   },
   {
    "name": "Gate destructive operations inside the window.",
    "text": "Which removes most exposure without redesigning roles."
   }
  ]
 },
 "cta": {
  "title": "Where this fits in Manav",
  "html": "Manav turns an access or elevation decision into an artefact: what the approver was shown, who they were, what authority they held, signed and verifiable without your systems.",
  "href": "../docs.html",
  "label": "See approval receipts"
 }
}