<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Just-in-Time Access on Matt Goodrich</title><link>https://mattgoodrich.com/tags/just-in-time-access/</link><description>Recent content in Just-in-Time Access on Matt Goodrich</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Wed, 10 Jun 2026 00:01:00 -0700</lastBuildDate><atom:link href="https://mattgoodrich.com/tags/just-in-time-access/index.xml" rel="self" type="application/rss+xml"/><item><title>The Broker Is the Choke Point</title><link>https://mattgoodrich.com/posts/authorization-broker-models/</link><pubDate>Wed, 10 Jun 2026 00:01:00 -0700</pubDate><guid>https://mattgoodrich.com/posts/authorization-broker-models/</guid><description>&lt;img src="https://mattgoodrich.com/posts/authorization-broker-models/header.png" alt="Featured image of post The Broker Is the Choke Point" />&lt;p>&amp;ldquo;No standing access&amp;rdquo; is the goal everyone agrees on and almost nobody can explain the mechanics of. If the on-call engineer does not have permanent production access, how do they get in at 3am when the database is down? If the deploy pipeline does not hold long-lived cloud keys, what does it present? The honest answer is that &amp;ldquo;no standing access&amp;rdquo; is something you build, and the thing you build is a broker.&lt;/p>
&lt;h2 id="what-a-broker-actually-does">What a Broker Actually Does
&lt;/h2>&lt;p>An authorization broker sits between the people and workloads that need access and the resources they need it to. Instead of granting standing access to the resource, you grant access to the broker, and the broker issues short-lived, scoped, audited credentials on demand. &lt;a class="link" href="https://goteleport.com/" target="_blank" rel="noopener"
>Teleport&lt;/a>, &lt;a class="link" href="https://github.com/hashicorp/boundary" target="_blank" rel="noopener"
>HashiCorp Boundary&lt;/a>, &lt;a class="link" href="https://www.strongdm.com/" target="_blank" rel="noopener"
>StrongDM&lt;/a>, and at the cloud-native end &lt;a class="link" href="https://aws.amazon.com/iam/identity-center/" target="_blank" rel="noopener"
>AWS IAM Identity Center&lt;/a> are all variations on this. Several of them are open source or free to self-host: Teleport ships an open-source community edition; Boundary and &lt;a class="link" href="https://github.com/hashicorp/vault" target="_blank" rel="noopener"
>HashiCorp Vault&lt;/a> are free and self-hostable, with Boundary brokering the sessions and Vault the short-lived credentials behind them; and &lt;a class="link" href="https://github.com/jumpserver/jumpserver" target="_blank" rel="noopener"
>JumpServer&lt;/a> is a fully open-source bastion and PAM.&lt;/p>
&lt;p>The shape is always the same: request, policy check, short-lived grant, full audit, automatic expiry. The engineer asks for production database access. The broker checks policy (are they on call, is there an incident, is there approval), issues a credential good for an hour, records the session, and expires the grant when the window closes. The resource never had a standing door for that engineer. The broker opened one, watched it, and closed it.&lt;/p>
&lt;p>&lt;img src="https://mattgoodrich.com/posts/authorization-broker-models/diagram-broker-lifecycle.png"
width="1568"
height="1038"
srcset="https://mattgoodrich.com/posts/authorization-broker-models/diagram-broker-lifecycle_hu14349072403518792192.png 480w, https://mattgoodrich.com/posts/authorization-broker-models/diagram-broker-lifecycle_hu2521718983921593479.png 1024w"
loading="lazy"
alt="The Broker Access Lifecycle With Approval: a Requester Asks With Justification, the Broker Runs a Policy Check and, When a Request Needs Human Approval, Routes It to an Approver in Slack or Email, Then Issues a Short-Lived Scoped Credential That Is Logged, Used Within a Recorded Session, and Expires With No Standing Door"
class="gallery-image"
data-flex-grow="151"
data-flex-basis="362px"
>&lt;/p>
&lt;h2 id="what-the-broker-buys-you">What the Broker Buys You
&lt;/h2>&lt;p>The value is concentration. Audit, policy, session recording, credential lifetime, and revocation all live in one place instead of being reimplemented at every resource. Without a broker, &amp;ldquo;expire this access&amp;rdquo; means doing it correctly in your database, your Kubernetes cluster, your cloud console, and your internal tools, each with its own model. With a broker, expiry is the broker&amp;rsquo;s job, applied uniformly across all of them.&lt;/p>
&lt;p>This is the precondition the &lt;a class="link" href="https://mattgoodrich.com/posts/telemetry-driven-access-reviews/" >telemetry-driven access-review model&lt;/a> depends on. You cannot run on short-lived access unless something issues and expires it, and the broker is that something. It is also where you get the one thing standing access can never give you: a clean answer to &amp;ldquo;who had access to this, when, and why.&amp;rdquo; Because every grant flowed through the broker, the answer is a query, not an archaeology project.&lt;/p>
&lt;h2 id="when-you-dont-need-one">When You Don&amp;rsquo;t Need One
&lt;/h2>&lt;p>A broker is infrastructure, and infrastructure has a cost. There are cases where it is overhead.&lt;/p>
&lt;p>If you are entirely in one cloud, that cloud&amp;rsquo;s native tools may already give you most of a broker. AWS IAM Identity Center with short-session roles, GCP IAM with short-lived credentials, Azure PIM for just-in-time elevation: inside a single provider you can get request, scope, and expiry without a separate product. The broker is worth running when you span things native IAM does not cover together: databases, Kubernetes, SSH, internal apps, more than one cloud. The more heterogeneous the resources, the more a single choke point is worth. In a homogeneous single-cloud shop, a dedicated broker can be a box you run for benefits you already had.&lt;/p>
&lt;p>There is also a case the broker should not touch at all: workloads. The pattern is built around an interactive request, where a person asks, a policy check runs, and a short-lived credential comes back. Service-to-service access does not work that way. A workload that needs to reach a database should present its own identity and get short-lived credentials directly, which is &lt;a class="link" href="https://mattgoodrich.com/posts/when-you-can-use-workload-identity/" >workload identity&lt;/a>, not a brokered session. Routing machine-to-machine traffic through a human-shaped broker adds latency, a runtime dependency, and a queue in front of something that should be a direct, identity-based call. Brokers mediate human access to systems. Workload identity mediates system access to systems. Keep the two apart.&lt;/p>
&lt;p>Scale is the other limit. At small scale the broker is the expensive rung: a few engineers, a couple of systems, and a password manager with MFA and careful IAM will out-deliver a broker you have to run, patch, and integrate. The broker earns its place when the number of operators times the number of heterogeneous systems makes per-system access management the real cost. Below that line it is infrastructure looking for a problem.&lt;/p>
&lt;h2 id="the-broker-is-also-a-risk">The Broker Is Also a Risk
&lt;/h2>&lt;p>The choke point cuts both ways. A broker that every access flows through is a single point of failure and a high-value target.&lt;/p>
&lt;p>If it is down, nobody gets in, so it needs its own carefully designed break-glass path. If it is compromised, the attacker is standing at the one place that can mint access to everything, so it has to be the most hardened system you run. The broker does not remove the risk of standing access. It concentrates that risk into one well-watched place, which is a far better posture than risk smeared across every resource. But it is a concentration, and you have to treat it like one: hardened, monitored, and never the thing you forgot to patch.&lt;/p>
&lt;h2 id="build-the-door-then-remove-the-others">Build the Door, Then Remove the Others
&lt;/h2>&lt;p>&amp;ldquo;No standing access&amp;rdquo; is a property of a system that has somewhere to route access through. You do not get there by deleting permissions and hoping. You get there by building the broker first, proving people can still do their jobs through it, and then removing the standing doors one resource at a time.&lt;/p>
&lt;p>The goal is zero standing access: people can still get in, but every grant is requested, scoped, and gone on a timer. Build the door that does that, and you can finally close the rest.&lt;/p></description></item></channel></rss>