Skip to content

Verifier

A Verifier defines how daemons prove their identity when connecting to the Riptides control plane. Each Verifier targets a specific authentication mechanism and can filter incoming daemons by required metadata and automatically assign workload identities.

  • API Group: auth.riptides.io
  • Version: v1alpha1
  • Kind: Verifier
  • Plural: verifiers

The spec must include exactly one of the following authentication method fields. Optionally, requiredMetadata and workloadIDTemplate can be set alongside any method.

  • Type: object

Verifies daemons using the AWS EC2 Instance Identity Document. The daemon presents a signed document from the EC2 metadata service, and the control plane validates the signature against AWS public certificates. No additional configuration is required on the object itself — use requiredMetadata to restrict which AWS accounts, regions, or instance types are accepted.

  • Type: object

Verifies daemons using a Google Cloud Instance Identity Token (a JWT signed by Google).

FieldTypeRequiredDescription
audiencestringNoExpected audience claim in the token
jwksURLstringNoCustom JWKS URL for token verification
jwksCacheTTLstringNoCache duration for JWKS keys (e.g., 300s)
iatLeewaystringNoAllowed clock skew for the iat claim (e.g., 60s)
  • Type: object

Verifies daemons using a pre-shared JoinToken. Useful for initial setup, development, or environments where platform-native identity is unavailable. No additional fields — the token itself is defined in a separate JoinToken resource.

  • Type: object

Verifies daemons using a Kubernetes Service Account Token.

FieldTypeRequiredDescription
clusterIDstringYesIdentifier for the Kubernetes cluster
jwksSourceobjectYesSource of JWKS for token validation. One of inline (string) or remote ({url, minRefreshInterval})
audiencestringNoExpected audience claim
iatLeewaystringNoAllowed clock skew for iat (e.g., 60s)
  • Type: object

Verifies daemons by X.509 certificate proof of possession.

FieldTypeRequiredDescription
caCertificatePEMstringYesPEM-encoded CA certificate used to validate the daemon’s certificate
  • Type: object

Verifies daemons by SSH certificate proof of possession.

FieldTypeRequiredDescription
authorizedCAarray of stringYesList of authorized CA public keys
  • Type: object

Verifies daemons using a GitHub Actions OIDC token. The runner fetches the token from the Actions token endpoint (ACTIONS_ID_TOKEN_REQUEST_URL) and the control plane validates it against GitHub’s public JWKS.

FieldTypeRequiredDescription
repositoryOwnerstringYesGitHub organisation or user that owns the repository. Tokens from any other owner are rejected.
repositorystringNoFull repository name (e.g. your-org/my-repo). Restricts to a single repository.
environmentstringNoGitHub deployment environment name. Restricts to workflows running in that environment.
refstringNoGit ref (e.g. refs/heads/main). Restricts to a specific branch or tag.
audiencestringNoExpected audience claim in the token (default: riptides)
jwksURLstringNoCustom JWKS URL (default: https://token.actions.githubusercontent.com/.well-known/jwks)
jwksCacheTTLstringNoCache duration for JWKS keys (e.g. 300s)
iatLeewaystringNoAllowed clock skew for the iat claim (e.g. 60s)
  • Type: object

Verifies daemons using a generic JWT.

FieldTypeRequiredDescription
issuerstringYesExpected token issuer
audiencestringNoExpected audience claim
jwksSourceobjectNoJWKS source: inline (string) or remote ({url, minRefreshInterval})
metadataMapmap[string]stringNoMapping of JWT claims to daemon metadata keys
iatLeewaystringNoAllowed clock skew (e.g., 60s)
  • Type: array of objects (free-form key-value pairs)
  • Required: No

Restricts which daemons this verifier will accept. Each entry is a key-value pair that must match the daemon’s metadata derived from its authentication proof. For example, an AWSIID verifier can require a specific AWS account ID.

Common keys by verifier type:

VerifierKeyDescription
AWSIIDawsiid:account:idAWS account ID
AWSIIDawsiid:regionAWS region
GCPIITgcpiit:project:idGCP project ID
GCPIITgcpiit:zoneGCP zone
GitHubActionsgithubactions:repository:ownerGitHub org or user
GitHubActionsgithubactions:repository:full_nameFull repo name (org/repo)
GitHubActionsgithubactions:workflowWorkflow name
GitHubActionsgithubactions:environmentDeployment environment
GitHubActionsgithubactions:refGit ref
  • Type: string
  • Required: No

A Go template string used to automatically generate the workloadID for daemons that match this verifier. Template variables are populated from the daemon’s authentication metadata.

FieldTypeDescription
statestringOne of Unspecified, Available, Failed
messagestringHuman-readable status message (set on failure)

Accepts daemons from a specific AWS account:

apiVersion: auth.riptides.io/v1alpha1
kind: Verifier
metadata:
name: awsiid
namespace: riptides-system
spec:
AWSIID: {}
requiredMetadata:
- awsiid:account:id: "123456789012"

Accepts daemons from a specific GCP project:

apiVersion: auth.riptides.io/v1alpha1
kind: Verifier
metadata:
name: gcpiit
namespace: riptides-system
spec:
GCPIIT:
audience: gcp-iit
requiredMetadata:
- gcpiit:project:id: my-gcp-project-123456

Accepts runners from a specific GitHub organisation, restricted to the main branch:

apiVersion: auth.riptides.io/v1alpha1
kind: Verifier
metadata:
name: github-actions
namespace: riptides-system
spec:
GitHubActions:
repositoryOwner: your-org
ref: refs/heads/main
audience: riptides

Accepts daemons that present a valid pre-shared token (useful for development):

apiVersion: auth.riptides.io/v1alpha1
kind: Verifier
metadata:
name: jointoken
namespace: riptides-system
spec:
joinToken: {}
  • Daemon — daemons authenticate through verifiers
  • JoinToken — defines pre-shared tokens used with the joinToken verifier type