Skip to main content

WIT-SVID Configuration

WIT-SVID issuance is configured as a peer to X.509 and JWT inside your SVIDIssuancePolicy managed configuration. Add a wit block under policy.

section: SVIDIssuancePolicy
schema: v1
spec:
policy:
pathTemplate: "/workload/{{linux.binary.name}}"
wit:
ttl: 1h
# Optional claim templates merged into the WIT, using the same
# {{attribute.ref}} syntax as JWT-SVID additional claims.
additionalClaims:
team: "{{linux.user.name}}"

Apply it with spirlctl:

spirlctl config set cluster --id <cluster-id> svid-issuance-policy.yaml

Or with Terraform:

resource "spirl_cluster_config" "svid_issuance_policy" {
cluster_id = spirl_cluster.my_cluster.id
sections = {
SVIDIssuancePolicy = <<-YAML
section: SVIDIssuancePolicy
schema: v1
spec:
policy:
pathTemplate: "/workload/{{linux.binary.name}}"
wit:
ttl: 1h
additionalClaims:
team: "{{linux.user.name}}"
YAML
}
}

WIT policy fields

FieldRequiredNotes
ttlNoWIT-SVID lifetime. Minimum 1 hour, maximum 7 days. Defaults to 24 hours when omitted.
additionalClaimsNoExtra claims merged into the WIT. This uses the same {{attribute.ref}} templating as JWT-SVID additional claims.

Reserved claims

Custom additionalClaims cannot override the server-managed claims. These names are rejected at configuration time: iss, sub, aud, exp, nbf, iat, jti, and cnf.

Two of these matter especially for WIT-SVIDs: cnf carries the proof-of-possession binding and may never be operator-supplied, and aud is prohibited on a WIT-SVID entirely.

To apply different WIT settings to specific workloads within the same cluster, use per-workload overrides.

Next, fetch a WIT-SVID from your workload.