Every serious answer to "how should agents authenticate?" eventually lands on SPIFFE, so here is the working minimum.
SPIFFE gives every workload a verifiable identity document (an SVID) tied to a URI like spiffe://trust-domain/ns/prod/agent/invoice-reviewer. The document is short-lived, automatically rotated, and cryptographically verifiable against the trust domain's bundle. No secret to leak, no key to rotate by hand, no shared credential to make agents indistinguishable from each other.
Three properties matter for agents specifically. First, identity per workload, not per team or per environment; so "which agent did this" has an answer. Second, mutual verification: the tool verifies the agent and the agent verifies the tool, which kills a whole class of spoofing. Third, federation Identities issued in your cluster can be trusted by AWS or Azure without copying secrets across the boundary.
What SPIFFE does not give you: authorisation. An SVID says who is calling; it says nothing about what they may do. Policy is a separate layer, and identity without authorisation is meaningless. Authorisation without identity is impossible, which is why this comes first.
I spent seven years on cert-manager watching teams hand-roll worse versions of this with long-lived certificates and spreadsheet rotation schedules. The standard exists, so use it.
How Dapr builds universal application identity on SPIFFE, including the cloud federation: https://www.diagrid.io/blog/universal-application-identity-with-dapr

Top comments (0)