Lion Cipher Lab

Give your services cryptographic identities with SPIFFE and SPIRE (workload identity, no shared secrets)

Why it matters

Think about how one piece of software proves who it is to another today. A billing service that needs to call the payments API, a batch job that reads from the database, a microservice that talks to five other microservices -- overwhelmingly they authenticate with a LONG-LIVED SHARED SECRET: an API key, a password, or a token that a human generated once and pasted into a config file, an environment variable, a Kubernetes Secret, or a CI/CD variable. That model is quietly broken. The secret is long-lived, so it is worth stealing; it is copied into many places, so it leaks (into git history,…

What you'll learn

Steps in this lab

  1. The problem: services still authenticate with shared secrets
  2. The idea: give each workload a cryptographic identity instead
  3. The four SPIFFE words: SPIFFE ID, SVID, trust domain, Workload API
  4. How SPIRE issues identity: server, agent, and two kinds of attestation
  5. Get SPIRE onto your machine (free, local)
  6. Start the SPIRE Server (your certificate authority)
  7. Node attestation: generate a join token and start the agent
  8. Bind an identity to a real process: create a registration entry
  9. Fetch the SVID over the Workload API and see it appear
  10. Read the SVID with openssl: prove it is short-lived
  11. Judgment: when workload identity is worth it, and when it is overkill
  12. Do it better: SPIRE into mTLS and a service mesh, then clean up

Open the full interactive lab →