This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
devopscritical PriorityID: kyverno-ephemeral-spiffe-spire-admission-standard

Kyverno Ephemeral SPIFFE/SPIRE Workload Attestation Admission Standard

Enforces zero-trust ephemeral workload identities across Kubernetes clusters by binding SPIFFE/SPIRE workload attestation requirements directly into admission control. Rejects static cloud credentials, database tokens, and long-lived ServiceAccount secrets in favor of short-lived X.509 and JWT SVIDs issued via SPIFFE Workload API CSI driver sockets. Guarantees immutable attestation selectors and cryptographic identity provenance across all container deployments.

Prohibited Anti-Pattern: Bypassing SPIFFE CSI Driver Sockets in Favor of Long-Lived Static Secrets and Ambient ServiceAccount Tokens

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Kyverno Ephemeral SPIFFE/SPIRE Workload Attestation Admission Standard - Enforces zero-trust ephemeral workload identities across Kubernetes clusters by binding SPIFFE/SPIRE workload attestation requirements directly into admission control. Rejects static cloud credentials, database tokens, and long-lived ServiceAccount secrets in favor of short-lived X.509 and JWT SVIDs issued via SPIFFE Workload API CSI driver sockets. Guarantees immutable attestation selectors and cryptographic identity provenance across all container deployments.
globs: deployments/**/*.yaml, k8s/**/*.yaml, infra/**/*.yaml, policies/**/*.yaml, helm/**/*.yaml
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/kyverno-ephemeral-spiffe-spire-admission-standard"
---

# Kyverno Ephemeral SPIFFE/SPIRE Workload Attestation Admission Standard

> **Severity**: CRITICAL | **Category**: devops
> **Anti-Pattern Warning**: Bypassing SPIFFE CSI Driver Sockets in Favor of Long-Lived Static Secrets and Ambient ServiceAccount Tokens

## System Constraints
You are a Principal DevOps Security Architect enforcing the Kyverno Ephemeral SPIFFE/SPIRE Workload Attestation Admission Standard. You must strictly forbid static long-lived credentials, static cloud keys, and ambient cluster tokens. Require Kyverno mutation and validation policies to inject and verify SPIFFE Workload API CSI volumes, disable default ServiceAccount token mounting, and bind workload selectors to verifiable cryptographic identities.

## Strict Guidelines
- Engineers MUST ALWAYS enforce Kyverno ClusterPolicies with 'validationFailureAction: Enforce' to prevent un-attested workloads from entering the cluster.
- Engineers MUST configure Pod specifications to set 'automountServiceAccountToken: false' to eliminate ambient Kubernetes API token theft.
- Admission policies MUST mutate Pod specifications to mount the ephemeral SPIFFE CSI driver volume ('csi: driver: csi.spiffe.io') bound to the local SPIRE agent UNIX domain socket.
- Engineers MUST NOT pass static cloud credentials (such as AWS_ACCESS_KEY_ID, GOOGLE_APPLICATION_CREDENTIALS, or VAULT_TOKEN) via environment variables or static Kubernetes Secret mounts.
- Workload identities MUST be attested via immutable pod labels and service account attributes that map deterministically to SPIRE registration entries.
- Pods MUST configure securityContext readOnlyRootFilesystem: true and non-root execution permissions to prevent runtime tampering with SPIFFE Workload API socket endpoints.

## Bad vs Good Implementations
### Kyverno Admission Control: Rejecting Static Secrets and Enforcing SPIFFE CSI Socket Injection

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: The deployment uses static environment credentials and hardcoded tokens that can leak via logs or pod inspects. It fails to disable automountServiceAccountToken and does not integrate the ephemeral SPIFFE/SPIRE Workload API socket.
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: payment-service
  namespace: payments
spec:
  replicas: 3
  template:
    spec:
      containers:
        - name: app
          image: payment-service:v2.1.0
          env:
            - name: AWS_SECRET_ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: static-aws-creds
                  key: secret_key
            - name: VAULT_TOKEN
              value: "s.23908f0293j2039jd0239j02"
          # FLAW: Automounts cluster token, uses long-lived static secrets,
          # lacks SPIFFE CSI Workload API socket integration.
```

#### Production Standard (Correct)
> **Standard**: This Kyverno policy halts admission of any pod with automountServiceAccountToken enabled or containing static cloud credentials. It injects the SPIFFE CSI Workload API driver socket dynamically, ensuring that workloads rely entirely on short-lived, cryptographically attested X.509 SVIDs.
```yaml
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: enforce-spiffe-ephemeral-attestation
  annotations:
    policies.kyverno.io/title: Enforce SPIFFE/SPIRE Ephemeral Identity
    policies.kyverno.io/severity: critical
spec:
  validationFailureAction: Enforce
  background: true
  rules:
    - name: reject-static-credentials
      match:
        any:
          - resources:
              kinds:
                - Pod
      validate:
        message: "Static credentials and long-lived tokens are prohibited. Workloads must use SPIFFE/SPIRE."
        pattern:
          spec:
            automountServiceAccountToken: false
            =(containers):
              - =(env):
                  - name: "!AWS_SECRET_ACCESS_KEY"
                  - name: "!VAULT_TOKEN"
    - name: mutate-spiffe-csi-socket
      match:
        any:
          - resources:
              kinds:
                - Pod
              namespaces:
                - production
                - payments
      mutate:
        patchStrategicMerge:
          spec:
            volumes:
              - name: spiffe-workload-api
                csi:
                  driver: "csi.spiffe.io"
                  readOnly: true
            containers:
              - name: "*"
                volumeMounts:
                  - name: spiffe-workload-api
                    mountPath: /spiffe-workload-api
                    readOnly: true
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Recommended Agent Skills (askills.dev)

Ready-to-use executable skill functions tailored to this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Kyverno Ephemeral SPIFFE/SPIRE Workload Attestation Admission Standard

Kyverno Ephemeral SPIFFE/SPIRE Workload Attestation Admission Standard defines an industrial-grade behavioral standard for devops engineering. Enforces zero-trust ephemeral workload identities across Kubernetes clusters by binding SPIFFE/SPIRE workload attestation requirements directly into admission control. Rejects static cloud credentials, database tokens, and long-lived ServiceAccount secrets in favor of short-lived X.509 and JWT SVIDs issued via SPIFFE Workload API CSI driver sockets. Guarantees immutable attestation selectors and cryptographic identity provenance across all container deployments. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Bypassing SPIFFE CSI Driver Sockets in Favor of Long-Lived Static Secrets and Ambient ServiceAccount Tokens Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftBypassing SPIFFE CSI Driver Sockets in Favor of Long-Lived Static Secrets and Ambient ServiceAccount TokensCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS enforce Kyverno ClusterPolicies with 'validationFailureAction

Engineers MUST ALWAYS enforce Kyverno ClusterPolicies with 'validationFailureAction: Enforce' to prevent un-attested workloads from entering the cluster.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST configure Pod specifications to set 'automountServiceAccountToken

Engineers MUST configure Pod specifications to set 'automountServiceAccountToken: false' to eliminate ambient Kubernetes API token theft.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Admission policies MUST mutate Pod specifications to mount the ephemeral SPIFFE CSI driver volume ('csi

Admission policies MUST mutate Pod specifications to mount the ephemeral SPIFFE CSI driver volume ('csi: driver: csi.spiffe.io') bound to the local SPIRE agent UNIX domain socket.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Engineers MUST NOT pass static cloud credentials (such as AWS_ACCESS_KEY_ID, GOOGLE_APPLICATION_CREDENTIALS, or VAULT_TOKEN) via environment variables or static Kubernetes Secret mounts.

Engineers MUST NOT pass static cloud credentials (such as AWS_ACCESS_KEY_ID, GOOGLE_APPLICATION_CREDENTIALS, or VAULT_TOKEN) via environment variables or static Kubernetes Secret mounts.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Workload identities MUST be attested via immutable pod labels and service account attributes that map deterministically to SPIRE registration entries.

Workload identities MUST be attested via immutable pod labels and service account attributes that map deterministically to SPIRE registration entries.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
6

Pods MUST configure securityContext readOnlyRootFilesystem

Pods MUST configure securityContext readOnlyRootFilesystem: true and non-root execution permissions to prevent runtime tampering with SPIFFE Workload API socket endpoints.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Kyverno Ephemeral SPIFFE/SPIRE Workload Attestation Admission Standard critical for AI coding assistants?

Enforces zero-trust ephemeral workload identities across Kubernetes clusters by binding SPIFFE/SPIRE workload attestation requirements directly into admission control. Rejects static cloud credentials, database tokens, and long-lived ServiceAccount secrets in favor of short-lived X.509 and JWT SVIDs issued via SPIFFE Workload API CSI driver sockets. Guarantees immutable attestation selectors and cryptographic identity provenance across all container deployments. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Bypassing SPIFFE CSI Driver Sockets in Favor of Long-Lived Static Secrets and Ambient ServiceAccount Tokens) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Kyverno