Machine Identity

Workload Identity

Workload identity is the practice of giving non-human compute (containers, VMs, Lambdas, CI jobs, Kubernetes pods) cryptographic, short-lived identities — instead of long-lived secrets — so they can authenticate to APIs and each other.

Last reviewed 5/30/2026

Key points

  • Eliminates static cloud credentials in env vars, .env files, and CI secrets.
  • Foundations: SPIFFE (the spec), SPIRE (the reference implementation), AWS IRSA, GCP Workload Identity, Azure Workload Identity, GitHub OIDC.
  • Workloads get short-lived JWTs or X.509 SVIDs (SPIFFE IDs) and exchange them for cloud / API credentials via STS.
  • Foundation of Zero Trust for services — replaces network-perimeter trust with identity-bound trust.
  • Adjacent to NHI governance: workload identity is the issuance side, NHI tools (Astrix, Oasis, Entro, Clutch) govern the inventory and lifecycle.

What is workload identity?

Workload identity is the model where non-human compute — containers, pods, Lambdas, VMs, CI jobs, agents — gets a cryptographic, short-lived identity issued by a trusted authority, and uses that identity to authenticate to APIs, clouds, and other workloads. It's the answer to the question that's haunted DevOps for a decade: "How do my services authenticate without long-lived API keys lying around?"

How it works (three common shapes)

1. Cloud-native (IRSA / GCP WI / Azure WI)

A Kubernetes pod is associated with a cloud IAM role. The pod presents its service-account token (a JWT signed by the Kubernetes API server) to the cloud's STS, which validates it against an OIDC trust and returns short-lived cloud credentials.

2. SPIFFE / SPIRE

A workload presents an attestation (kernel attributes, AWS instance metadata, K8s pod info) to SPIRE. SPIRE issues an SVID — a JWT or X.509 cert containing a SPIFFE ID like spiffe://acme.com/ns/prod/sa/payments. Other workloads accept that SVID over mTLS.

3. GitHub Actions / CI OIDC

A workflow asks GitHub for an OIDC token, which it presents to AWS / GCP / Azure / Vault. The cloud trusts GitHub's OIDC issuer and exchanges it for short-lived credentials. No static cloud keys live in repo secrets.

When buyers care

  • You've had a key leak. Long-lived AWS / Stripe / Slack keys leaking to GitHub / S3 / pastebin is one of the top initial-access vectors in cloud breaches.
  • You need to inventory non-human identities. NHI tooling starts with workload identity as the issuance model.
  • You're adopting service mesh — Istio, Linkerd, Consul Connect default to workload identity via mTLS.
  • You're moving CI off static keys — GitHub OIDC + cloud trust is the canonical fix.

Editorial note

Workload identity is the foundational pattern for modern infrastructure security. If you still have long-lived AWS keys in env vars, replacing them with IRSA / GitHub OIDC / SPIFFE is one of the highest-ROI security projects you can run.

Standards & references