Illustrative sample: This guide demonstrates the Technical Library structure. It is not a record of a completed deployment, and its example values must be reviewed before use in a real environment.
Outcome
The target design gives each approved workload a short-lived SPIFFE Verifiable Identity Document (SVID). Applications authenticate with workload identity instead of sharing long-lived credentials. For this example, Kubernetes is the workload platform and SPIRE provides the SPIFFE control plane.
Scope and assumptions
- One Kubernetes cluster is used to prove the design before any wider rollout.
example.internalis a placeholder trust domain.- Node and workload attestation policies are treated as security controls and receive the same review as network or authorization policy.
- Federation, multi-cluster failover, and production sizing are deliberately outside this sample.
Identity model
SPIRE Server
| attests node and distributes trust bundle
v
SPIRE Agent
| attests workload and exposes Workload API
v
Application -> short-lived SVID -> peer authorization policyUse a predictable identity scheme. A representative identity is:
spiffe://example.internal/ns/<namespace>/sa/<service-account>Namespace and service-account selectors are easier to review than identities derived from ephemeral pod names. They still require controls that prevent an untrusted actor from creating or reusing a privileged service account.
Implementation sequence
- Define the trust domain. Document ownership, naming, recovery, bundle distribution, and whether another trust domain will be federated later.
- Deploy the SPIRE server. Start with durable state, restricted administrative access, and a documented signing-key protection strategy.
- Deploy one agent per eligible node. Configure node attestation and deny registration from nodes that cannot present the required evidence.
- Register a narrow pilot workload. Bind the identity to a dedicated namespace and service account; avoid broad selectors.
- Integrate the application. Consume the Workload API directly or use an approved proxy integration, then authorize the exact SPIFFE IDs expected by each service.
- Instrument rotation and failures. Alert on issuance errors, expiring trust material, rejected attestations, and authorization failures.
The policy below is a design sketch rather than deployable configuration:
trustDomain: example.internal
workload:
namespace: ai-platform
serviceAccount: inference-api
spiffeID: spiffe://example.internal/ns/ai-platform/sa/inference-api
authorization:
allowedPeers:
- spiffe://example.internal/ns/ai-platform/sa/gatewayValidation plan
A real implementation should retain evidence for each check; this sample does not claim that the checks have been run.
- The approved workload receives an SVID and renews it without a restart.
- A pod using a different service account cannot obtain the approved identity.
- The service rejects a valid SVID whose SPIFFE ID is not authorized.
- Loss and restoration of the agent or server has a documented application impact and recovery path.
- Trust-bundle and signing-key rotation succeed in a non-production exercise.
Operational and security considerations
Keep issuance and authorization separate: possession of a valid identity does not imply access to every service. Limit the selectors that can mint privileged identities, monitor control-plane changes, and design a break-glass recovery path that does not introduce permanent shared credentials.
For a broader example of platform trust boundaries, see the Self-Hosted AI Platform Architecture. The Homelab AI Platform shows how a guide can be connected to a project case study.