Skip to content
Agent Identity

CNCF · date: see source

Secure Production Identity Framework For Everyone

SPIFFE (CNCF); SVIDs via SPIRE

Related protocolVendor / protocol (not an RFC)IdentityFoundationField guide

If the agent is deployed as a service, SPIFFE is how you stop putting API keys in env vars. It does not, by itself, express 'this call is on behalf of Alice'.

At a glance

Problem
Workloads need automatically provisioned, short-lived cryptographic identities without bootstrap secrets, attested from platform properties (Kubernetes service account, Unix process, …).
Identity / authn / authz
Workload identity and authentication (X.509-SVID mTLS, JWT-SVID). Authorization is OPA/policy/OAuth on top.

Actors

  • SPIRE server
  • SPIRE agent
  • Workload
  • Relying workload

01

The gap for agents

Workloads need automatically provisioned, short-lived cryptographic identities without bootstrap secrets, attested from platform properties (Kubernetes service account, Unix process, …). If the agent is deployed as a service, SPIFFE is how you stop putting API keys in env vars. It does not, by itself, express 'this call is on behalf of Alice'.

02

Actors and trust boundaries

SPIRE server is the identity issuer for a trust domain. SPIRE agents attest workloads and issue SVIDs via the Workload API (often a Unix socket). Trust bundles distribute federation. JWT-SVIDs are bearer-ish unless combined with extra PoP — prefer X.509 mTLS or WPT-style proofs for agents.

03

Mechanics

Not an IETF RFC. CNCF. SPIFFE ID: spiffe://<trust-domain>/<path> — a WIMSE-conforming identifier. X.509-SVID for mTLS; JWT-SVID for app-layer. Rotation replaces revocation as the primary control. Federation via trust bundles, not OAuth DCR.

SPIFFE IDfrom spec
Quoted shape: spiffe://<trust-domain>/<path> — a WIMSE-conforming identifier.
X.509-SVID / JWT-SVIDfrom spec
Quoted credential types. Short-lived; rotation replaces revocation.

04

Step-by-step flows

Flow 1

SPIRE issues an SVID

  1. 1

    SPIRE agent attests the workload via platform selectors.

  2. 2

    Workload API (Unix socket) returns X.509-SVID or JWT-SVID plus trust bundle.

  3. 3

    Workload uses X.509 for mTLS to a tool, or presents JWT-SVID with additional PoP if app-layer.

  4. 4

    If also acting for a user, obtain an OAuth token separately and send both.

05

Identity vs authentication vs authorization

Workload identity and authentication. Authorization is OPA/policy/OAuth on top. User identity is not in the SVID.

06

How it composes

07

What bites agent implementers

  • JWT-SVID as a standing Bearer

    Treat it like a stolen-able token unless you add PoP. Prefer mTLS.

  • No user in the ID

    A stolen user OAuth token presented by a different binary is a different incident — keep workload identity even when you have OAuth.

08

Stability — what you can ship

CNCF protocol, production-proven, not an RFC. https://spiffe.io/ WIMSE is the IETF track for multi-system pieces.

Catalog claims (short form)

SPIFFE ID
spiffe://<trust-domain>/<path> — a WIMSE-conforming identifier.
X.509-SVID / JWT-SVID
The actual credentials. Short-lived; rotation replaces revocation.

Implementer notes

Not an IETF RFC. Production-proven. WIMSE is the IETF effort to generalize multi-system aspects. JWT-SVIDs are bearer-ish unless combined with extra PoP — prefer X.509 mTLS or WPT-style proofs for agents.

Relationship to others

Primary sources

  • spiffe.iohttps://spiffe.io/
  • SVIDshttps://spiffe.io/docs/latest/deploying/svids/