Skip to content

Workload configuration

The flat configuration hub remains the compatibility route. This page is the canonical source-checked field reference for its family, including nested tables and list rows.

Paths in the tables are relative to [workload] and its nested headings. Each row gives the serde type and source default or unset meaning; issuer material stays in protected files. Check parsing and workload cross-field rules with gdsgate doctor --config <PATH> --json, then follow the registration and PKI guide.

[workload]

Used by: Authority.

Workload identity: which platform issuers may bootstrap a machine identity and how their token claims are templated into SPIFFE IDs. Off by default (trust_domain empty). See Concepts → Workload identity and Integrations → Workload identity.

Key Type Default Purpose
trust_domain string unset SPIFFE trust domain of this cluster (lowercase [a-z0-9._-]). Every workload is named spiffe://<trust_domain>/<slug>/<path>. Empty disables workload identity.
cert_ttl_secs u64 900 Validity of an issued workload certificate. Short by design: the workload re-bootstraps or renews to stay fresh, so there is no long-lived credential.

A provision-token workload needs no issuer entry, since an operator mints its proof with gdsgate authority create-token --role workload. A platform issuer is one [[workload.issuers]] table:

Key Type Default Purpose
slug string unset Short unique label ([A-Za-z0-9._-]), forced as the first SPIFFE path segment so two issuers' workloads can never collide by name.
issuer string unset Issuer URL, the iss claim of this platform's tokens, for example a GitLab instance URL.
audience string unset, required Expected token aud, the gateway's own origin (for example https://gate.example.com). It is what stops a token minted for the platform's default audience from being exchangeable for a gdsgate certificate by whoever it was shown to; Authority refuses to start on an entry without it.
path_template string unset SPIFFE path rendered from token claims, for example project/{project_path}/ref/{ref}. Substituted values are limited to [A-Za-z0-9._-]; a value carrying /, a dot segment, or an empty value refuses issuance rather than being escaped.
groups array of string [] Cedar groups granted to this issuer's workloads (Connector in Group::"<group>"). Groups come from this mapping only, never from raw token claims.
owner_claim string unset Claim naming the human the workload acts for (for example GitLab user_login); when present the owner is User::"<value>".
owner_service string unset Static service-account owner used when owner_claim is unset or absent from the proof; the owner becomes Service::"<value>".
single_use_jti bool true Refuse a second exchange of the same proof token. On by default; opt out only for a platform whose retry semantics legitimately re-present one token.

Discovery and JWKS fetches for a workload issuer reuse the [oidc] HTTP settings (request_timeout_secs, allow_insecure_http, jwks_refresh_secs) and the [oidc].id_token_signing_algs whitelist.

[workload]
trust_domain  = "gds.example"
cert_ttl_secs = 900

[[workload.issuers]]
slug          = "gitlab"
issuer        = "https://gitlab.example"
audience      = "https://gate.example.com"
path_template = "project/{project_path}/ref/{ref}"
groups        = ["ci"]
owner_claim   = "user_login"

Revocation needs the receipt key

gdsgate authority revoke-workload seals a tamper-evident receipt with the same HMAC key the per-node registry uses. Set [audit].revocation_key_path and run gdsgate authority init-revocation-key, or revocation fails closed.