Identity and access

A contractor needs one application for six weeks

A build-tooling specialist has been engaged for six weeks to fix a pipeline nobody in-house has time for. She needs one internal console and the artefacts behind it, on her own firm's laptop, starting Monday. The engagement is real, the sponsor is a named engineering manager, and the work is urgent. The path of least resistance is well worn: raise a ticket, get a directory account and a remote-access VPN profile, and add a note to the sponsor's calendar to have it removed at the end. That path works on Monday and keeps working long after the engagement stops. The decision is not whether to grant access. It is what shape the grant takes, and what state the organisation is left in on day forty-three.

6 decisions 6 actors 6 risks remain

Who is here

The people and machines in this situation

A control that only works when nobody legitimate is inconvenienced is not a control, so everyone with real work to do is listed first, by name.

In the situation

Everyone whose legitimate work this design has to keep working.

Build-tooling contractor
A legitimate third-party specialist who needs one console and the artefacts behind it for a fixed six weeks.
Engineering manager sponsoring the work
Owns the engagement, its scope and its end date, and is accountable for the grant existing at all.
Service desk engineer
Fulfils the request under a delivery target measured in hours, using whichever pattern is fastest to execute.
Identity administrator
Owns the joiner, mover and leaver process, which was designed around employees who have a payroll record and a leaving date.
Auditor
Will ask in three months who had access to that console, on what authority, and when it ended.

Working against it

Present in the same situation, and not on the organisation's side. Named here rather than left implied.

Attacker holding her credentials Stance Adversarial
Obtains the contractor's working credentials from an unrelated compromise and tries them against whatever they still unlock.

The whole request, at once

What happens, drawn

The figure's ordered walkthrough is the same sequence as the decisions below — step 1 is the first decision, and the rail on the right moves both together.

Architecture diagram

One grant, one application, one end date

A contractor on an unmanaged laptop is brokered into a single internal console under a grant derived from the engagement record and carrying an expiry. The alternative network route is shown alongside it, and the attacker view traces stolen credentials down both paths to show where each ends.

Step 1 / 6Record who vouches for her

Architectural planes

Annotations

The same architecture, read top to bottom

  1. Contractor's own environment
    THIRD PARTYOperated by another organisation under its own terms

    Build-tooling contractor · Contractor's laptop · Attacker holding her credentials

    • PersonBuild-tooling contractorSix-week engagement, named sponsor
    • DeviceContractor's laptopUnmanaged, owned by her firm
    • AdversaryAttacker holding her credentials

    Reaches this boundary

    • BlockedAttacker holding her credentials stopped at Access brokerRefused: expired grant, unknown device
    • BlockedContractor's laptop stopped at Session and data controlsCopy out of the isolated session refused

    Within this boundary

    • RequestBuild-tooling contractor to Contractor's laptopStarts work on her own laptop
  2. Access broker service
    MANAGEDOperated or administered on the enterprise's behalf

    Grant and policy control · Session inspection

    • Grant and policy control
      MANAGEDOperated or administered on the enterprise's behalf

      Access broker · Policy engine

      • API or gatewayAccess brokerOne named application per grant
      • Policy decisionPolicy engineAllow, step up, restrict or expire
    • Session inspection
      MANAGEDOperated or administered on the enterprise's behalf

      Session and data controls

      • Security controlSession and data controls
        • Isolated browser session
        • Data loss prevention
        • Cloud access security broker
        • Copy and upload rules

    Reaches this boundary

    • ContextEngagement record to Policy engineSponsor, scope and end date
    • ContextIdentity provider to Policy engineGuest identity and its expiry
    • RequestContractor's laptop to Access brokerClientless session to the broker
    • ContextContractor's laptop to Policy engineDevice posture: asserted, not measured
    • AttackAttacker holding her credentials to Access brokerThe same credentials tried at the broker

    Within this boundary

    • RequestAccess broker to Policy engineRequest presented for a decision
    • RequestPolicy engine to Session and data controlsVerdict and the controls it requires
    • ContextPolicy engine to Access brokerGrant expires at the end of day 42
  3. Enterprise control plane
    INTERNALOperated by the enterprise itself

    Engagement record · Identity provider · Security operations

    • Data storeEngagement recordSponsor, scope and end date
    • Identity providerIdentity providerGuest identity with an expiry
    • Security controlSecurity operationsEvidence for the access review

    Reaches this boundary

    • ContextBuild-tooling contractor to Identity providerSign-in and a second factor
    • TelemetryAccess broker to Security operationsSession and grant events
    • TelemetryPolicy engine to Security operationsEvery verdict and the expiry behind it
    • TelemetrySession and data controls to Security operationsInspection and data-handling events
  4. Corporate network
    INTERNALOperated by the enterprise itself

    Remote-access VPN · Finance system

    • API or gatewayRemote-access VPNThe route that was not taken
    • ApplicationFinance systemNever in scope for this engagement
    • Build tooling estate
      INTERNALOperated by the enterprise itself

      Build pipeline console · Build artefacts

      • ApplicationBuild pipeline consoleThe one application in scope
      • Data storeBuild artefacts

    Reaches this boundary

    • RequestAccess broker to Build pipeline consoleBrokered session to one console
    • RequestContractor's laptop to Remote-access VPNThe easy answer, an account and a route
    • AttackAttacker holding her credentials to Remote-access VPNStolen credentials used on a VPN account

    Within this boundary

    • RequestBuild pipeline console to Build artefactsConsole reads build artefacts
    • AttackRemote-access VPN to Finance systemLateral movement to whatever routing reaches
  5. Contractor's cloud tenant
    THIRD PARTYOperated by another organisation under its own terms

    Contractor's cloud storage

    • ApplicationContractor's cloud storageHer firm's tenant, not inspectable

    Reaches this boundary

    • RequestSession and data controls to Contractor's cloud storageInspected uploads to her own tenant
    • AttackContractor's laptop to Contractor's cloud storageArtefacts copied out of the session

Legend

Participants
  • PersonSomeone making a request, and the identity they assertCircle with a person mark
  • DeviceAn endpoint the request is made from, with its own postureRounded rectangle with an inset panel
  • ApplicationAn application that serves or holds dataRounded rectangle with a panel stacked behind it
  • Identity providerThe authority that asserts who is askingHexagon marked ID
  • API or gatewayA network endpoint that terminates or forwards connectionsCapsule marked API
  • Data storeWhere data restsCylinder
  • Security controlA protective control, and the control plane's own observationRounded octagon with a check mark
  • AdversaryA hostile party attempting somethingDiamond marked with an exclamation mark
  • Policy decisionWhere policy is evaluated and one verdict is reachedDiamond with a split-path mark on its trailing point
Relationships
  • RequestTraffic asking to reach a destinationSolid line. Filled arrowhead.
  • TelemetryEvents reported onward for observation — observation, not controlDotted line. Small open arrowhead.
  • ContextA signal that informs a decision without carrying the request itselfDash-dot line. Open chevron.
  • AttackAn attempt made by an adversaryShort-dashed heavy line. Barbed open arrowhead.
  • BlockedAn attempt terminated by the control the line starts fromHeavy line that stops short of its target. Perpendicular bar, and deliberately no arrowhead: the attempt did not arrive.
Boundaries
  • Internal boundaryOperated by the enterprise itselfSolid outline. Badge reads INTERNAL.
  • Managed boundaryOperated or administered on the enterprise's behalfDashed outline with a subtle wash. Badge reads MANAGED.
  • Third party boundaryOperated by another organisation under its own termsDash-dot outline. Badge reads THIRD PARTY.

Text alternative

The request, step by step
  1. Record who vouches for her

    The engagement record holds the sponsor, the scope and the end date, and the guest identity is created from it rather than beside it. She authenticates as herself with a second factor. There is now one place that answers who authorised this access and when it should stop.

    • Context: Engagement record to Policy engine, “Sponsor, scope and end date”
    • Context: Identity provider to Policy engine, “Guest identity and its expiry”
    • Context: Build-tooling contractor to Identity provider, “Sign-in and a second factor”

    Emphasised at this step: Identity provider.

  2. Grant the minimum, and name it

    She starts work on her own laptop and reaches the broker without a client, and the broker presents the request for a decision. The grant names one console rather than the environment it lives in, so a genuine scope change has to be asked for instead of arriving free.

    • Request: Build-tooling contractor to Contractor's laptop, “Starts work on her own laptop”
    • Request: Contractor's laptop to Access broker, “Clientless session to the broker”
    • Request: Access broker to Policy engine, “Request presented for a decision”

    Emphasised at this step: Access broker.

  3. Take the device claim for what it is

    Her laptop reports posture that the enterprise cannot verify, so the claim is recorded as an assertion and the verdict changes what the session may do rather than pretending the device is trusted. The work happens inside an isolated, inspected session.

    • Context: Contractor's laptop to Policy engine, “Device posture: asserted, not measured”
    • Request: Policy engine to Session and data controls, “Verdict and the controls it requires”

    Emphasised at this step: Session and data controls.

  4. Broker the session instead of routing it

    The broker connects outward to the named console, which then reads its own artefacts. No network route is created, so reachability never becomes transitive and nothing else on the estate is one connection away.

    • Request: Access broker to Build pipeline console, “Brokered session to one console”
    • Request: Build pipeline console to Build artefacts, “Console reads build artefacts”

    Emphasised at this step: Build pipeline console.

  5. Govern what may leave

    Uploads to her own firm's cloud tenant are inspected against the same data rules, because a contractor keeping notes in her own environment is normal behaviour and the point at which enterprise artefacts leave every control the enterprise operates.

    • Request: Session and data controls to Contractor's cloud storage, “Inspected uploads to her own tenant”

    Emphasised at this step: Contractor's cloud storage.

  6. Let the end date do the revoking

    The grant carries a hard expiry, so on day forty-three the same session stops authorising without anybody filing a removal ticket, and the events that prove when it stopped are already with security operations for the access review.

    • Context: Policy engine to Access broker, “Grant expires at the end of day 42”
    • Telemetry: Access broker to Security operations, “Session and grant events”
    • Telemetry: Policy engine to Security operations, “Every verdict and the expiry behind it”
    • Telemetry: Session and data controls to Security operations, “Inspection and data-handling events”

    Emphasised at this step: Security operations.

Attempts shown, and where each one stops
  • Attacker holding her credentials attempts:

    • Attack: Attacker holding her credentials to Remote-access VPN, “Stolen credentials used on a VPN account”
    • Attack: Attacker holding her credentials to Access broker, “The same credentials tried at the broker”
    • Terminated here by Access broker — “Refused: expired grant, unknown device”. The line stops short and takes a bar, not an arrowhead.
  • Remote-access VPN attempts:

    • Attack: Remote-access VPN to Finance system, “Lateral movement to whatever routing reaches”

    Nothing in this diagram terminates these attempts. That is deliberate rather than an omission: no control shown here can prevent them, so every one of these lines carries an arrowhead and none carries a bar.

  • Contractor's laptop attempts:

    • Attack: Contractor's laptop to Contractor's cloud storage, “Artefacts copied out of the session”
    • Terminated here by Session and data controls — “Copy out of the isolated session refused”. The line stops short and takes a bar, not an arrowhead.
Also shown, outside the walkthrough
  • Request: Contractor's laptop to Remote-access VPN, “The easy answer, an account and a route”
Annotations
  1. What the fast answer would have granted

    Relationship — Request: Contractor's laptop to Remote-access VPN, “The easy answer, an account and a route”

    This is the path of least resistance, drawn so its cost is visible. It answers a routing question, and routing is transitive: once a session is placed on the network, reachability follows topology rather than the engagement scope. Carrying traffic is what the service is for; deciding whether the traffic should exist is a different job.

  2. Why nothing terminates this line

    Relationship — Attack: Remote-access VPN to Finance system, “Lateral movement to whatever routing reaches”

    No control sits between the network route and a system the contractor was never scoped for, which is what makes this the natural attack in a network-shaped grant. The absence of a terminator here is the finding, not an omission in the drawing.

  3. The same credentials, two months later

    Relationship — Blocked: Attacker holding her credentials stopped at Access broker, “Refused: expired grant, unknown device”

    The credentials are genuine, so authentication is not what ends this attempt. It ends because the grant behind them has an end date that has passed and the device presenting them is unknown. A grant with no expiry would have left this line reaching its destination.

  4. Expiry ends authorisation, not existence

    Relationship — Context: Policy engine to Access broker, “Grant expires at the end of day 42”

    The access stops working because a date passed rather than because somebody remembered. That inverts the default in the right direction, and it is not cleanup: the guest identity, its group memberships and whatever records the console created all survive until a lifecycle job removes them.

  5. The refusal that will be argued about

    Relationship — Blocked: Contractor's laptop stopped at Session and data controls, “Copy out of the isolated session refused”

    This attempt ends at the control rather than at the laptop, and it is the one the contractor will raise. Keeping the artefacts inside the session is the compensating measure for a device nobody can measure, and it costs her the tooling she normally works with.

  6. What the boundary badge is claiming

    Boundary “Contractor's own environment” (third party)

    The enclosure states that this environment is operated by somebody else, under their patching, their monitoring and their contract. That is not an accusation and it does not stop work happening there. It does mean every posture claim crossing this boundary is an assertion, and assertions are recorded rather than believed.

  7. The unit of access is an application

    Component “Access broker”

    A grant here names a console, not a subnet, so the blast radius of the engagement is the thing the engagement was for. The price is an inventory somebody has to maintain and a broker on the critical path of a contractor billing by the hour.

  8. One authoritative record, or none

    Component “Engagement record”

    A ticket records that a request was fulfilled; it does not record who remains accountable afterwards. If the ticket, the directory and the supplier contract each hold a version of the scope and the end date, none of them is authoritative and the access review has nothing to check against.

Before the acronyms arrive

The five terms this situation teaches

Nobody arrives at a situation knowing which product category answers it. Each of these is exercised by a decision below, and the numbers say which — so a term can be read now, or met in the story and looked up then.

The spine

Six decisions, in the order they arrive

Each one is a section of its own and a step on the rail. None of them has a costless answer, so each says what was decided and what that cost.

Decision 1

Who vouches for this person?

The contractor has no payroll record and no leaving date. What does the access service treat as the authority for her existence?

Employee identity arrives with a lifecycle attached: a start date, a manager, a leaving process that fires whether or not anyone remembers it. A contractor has none of that unless someone builds it. The usual substitute is a ticket, which records that a request was fulfilled but not who remains accountable for the grant afterwards. The alternative is to make the engagement itself the authoritative record, holding the sponsor, the scope and the end date, and to have the identity for the contractor derive from it rather than sit beside it in a spreadsheet. That only works if there is one agreed source; if the ticket, the directory and the supplier contract each hold a version, none of them is authoritative.

What was decided, and what it cost

A named sponsor and an end date are recorded on the engagement and the guest identity is created from that record, at the cost of a step nobody previously had to complete before Monday.

Decision 2

What is the minimum she actually needs?

Should the grant name the console she needs, or the environment it happens to live in?

Scoping to the environment is faster to write and never needs revisiting, which is exactly why it is chosen. It also means the grant covers every other thing that shares that environment, including systems the contractor has no idea exist. Scoping to the single console requires somebody to know what the work involves and to name it, and it will be wrong at least once: on day four she needs a second tool to read logs, and the change is a request rather than something already implied. That friction is the mechanism working, but it is still friction, and pretending otherwise is how least privilege gets abandoned in month two.

What was decided, and what it cost

The grant names one console and the artefacts behind it, accepting that a genuine scope change now needs an explicit request instead of arriving free.

Decision 3

On whose device, and what can be proven about it?

Her laptop belongs to her firm and cannot be enrolled in the enterprise's management. Does that make the request unanswerable?

Demanding a managed device means shipping and later recovering hardware, which for six weeks costs more than the engagement in effort and usually ends with an unrecovered laptop. Accepting the contractor's own machine means device posture is asserted rather than measured: the supplier says the disk is encrypted and patching is current, and there is no signal that confirms it. The way out is to stop treating the device as trustworthy and change what the session can do instead, keeping the work inside a controlled session so that what reaches the endpoint is pixels rather than artefacts. That has a real cost in usability and in the tooling the contractor is used to.

What was decided, and what it cost

Access is delivered through an isolated, inspected session on her own laptop, with posture recorded as an assertion and treated as one, and a slower working experience accepted as the price.

Decision 4

How does she reach it: a network route or a brokered session?

A VPN profile takes minutes and works for everything. What does that convenience actually grant?

A remote-access VPN answers a routing question, and routing is transitive. Once the session is placed on the network, reachability follows the network topology rather than the engagement scope, so the finance system she has never heard of is one connection away from a laptop the enterprise does not manage. Nothing about that is a flaw in the VPN; carrying traffic is what it is for, and deciding whether the traffic should exist is a different job that has to be done somewhere else. Brokering the session per application moves the decision to that other place, at the cost of an inventory of applications and a broker on the critical path of the contractor's day.

What was decided, and what it cost

The VPN profile is not created and the session is brokered to the named console instead, which means the broker's availability becomes the contractor's availability.

Decision 5

What may leave the application?

She can legitimately read the artefacts. Should she be able to put a copy in her own firm's cloud storage?

A contractor working across several clients keeps her notes and her tooling in her own environment, and doing so is normal professional behaviour rather than an attack. It is also the point at which enterprise artefacts leave every control the enterprise operates, into a tenant it cannot inspect, subpoena or wipe. Governing that means the service has to see traffic to cloud services and apply data rules to it, which works for the services it can observe and terminates. It does nothing about the copy she types into her own notes, and saying so is more useful than implying the control is complete.

What was decided, and what it cost

Uploads from the session to cloud services are inspected against data rules and copying out of the isolated session is refused, while the team records in writing that transcription is not covered.

Decision 6

For how long, and what happens on day forty-three?

The engagement ends on day forty-two. What ends the access if nobody remembers to?

Every removal that depends on a person remembering fails eventually, and it fails silently, which is the worst combination. An expiry attached to the grant inverts the default: the access stops working because its end date passed, and continuing requires a renewal that a named sponsor has to ask for. This is where the honest limit sits. Expiry ends the authorisation, not the account. The guest identity, its group memberships, its audit trail and whatever local records the console created still exist until a lifecycle job removes them, so an organisation that has expiry but no cleanup has moved the problem rather than solved it.

What was decided, and what it cost

The grant carries a hard end date and a renewal that only the sponsor can request, and the team accepts that the dormant guest identity survives until the lifecycle job clears it.

How it ended

The outcome

The contractor started on Monday through a brokered, isolated session to one console, on her own laptop, with a grant that expired on day forty-two. She asked for a second tool on day four and got it in an hour, as an explicit change with the sponsor's name on it. On day forty-three the session she had used for six weeks simply stopped authorising, without anybody filing a removal ticket. When her credentials appeared in an unrelated compromise two months later, the attempt against the broker terminated against an expired grant and an unknown device. The same credentials on a VPN profile would have put an unmanaged laptop on the network, where reachability follows topology and the finance system is one connection away.

Still exposed

What this does not fix

Six things are still exposed after everything above. The content model requires this list on every scenario, because an architecture write-up that ends clean is the one thing a reader should not believe.

  • The guest account still exists until someone runs the expiry job
  • Device posture on her laptop was asserted by her firm and never measured
  • Nothing prevents her transcribing what she can legitimately read on screen
  • The console's own permissions still grant more than the engagement needed
  • A renewal will be approved faster than the first grant, and by fewer people
  • The broker is now on the critical path for a contractor billing by the hour

Reading it back

What generalises

The request in this scenario is reasonable and the work is real, which is what makes it a useful test. Nothing here is prevented by being suspicious of the contractor. The failure mode arrives later, from a grant shaped for the convenience of the person fulfilling it on a Monday morning.

Two things get decided in that first hour, usually without anyone noticing they were decisions. The first is the unit of access. A network route is quick to issue and never needs revisiting, because it covers everything that shares the topology, including systems the contractor could not name. An application-shaped grant covers the work and nothing else, and it will be wrong at least once, which is the mechanism functioning rather than failing. The second is the end condition. A calendar reminder and a note in a ticket are both promises that a human will act, and promises of that kind fail silently, months after the person who made them changed teams.

Attaching the end date to the grant is the part worth taking away, because it changes what happens by default. Access that expires does not depend on anybody remembering, and continuing it requires a named sponsor to ask again, which is a much better conversation than a quarterly review trying to work out who a dormant account belonged to. It is also not the whole job, and it is worth being precise about that: an expiry ends authorisation, and the account, its group memberships and its traces persist until something deliberately removes them.

The unmanaged device is the honest compromise in the design. Shipping and recovering hardware for six weeks costs more than the engagement, so the posture claim comes from her firm and there is no signal that confirms it. The response is not to pretend the claim is a measurement but to spend less on trusting the endpoint: keep the artefacts inside a controlled session, inspect what leaves, and accept that a determined professional can still transcribe what she is legitimately allowed to read. That residue is not a gap in the architecture. It is the part of the problem that access control was never going to answer, and the contract and the working relationship carry it instead.

Sources