---ci--- project: orca phase: 27 milestone: v0.12 status: execute ---/ci--- docs/threat-model.md (STRIDE + OS surface + residual risks), docs/oidc.md (bundled Dex + BYO + claim mapping + offline), docs/webauthn.md (passkeys + RP ID + bootstrap sequence), docs/security-runbook.md (seal/unseal + rotation + incident response).
1.1 KiB
OIDC Configuration (v0.12)
Bundled Dex (default)
orca auth init-idp --rp-id <cluster-domain> bootstraps a local Dex
on the lead, fronted by Traefik (step-ca cert). The WebAuthn connector
provides password-free passkey registration + login.
BYO External IdP
Set oidc.issuer in config to repoint to Keycloak/Authentik/Google/etc.
The bundled Dex is bypassed; the external IdP's authenticators are used.
Claim-to-Namespace Mapping
OIDC sub (subject) maps to an ACL entry. Groups (groups claim) map
to group-based grants. orca acl grant <ns> --oidc-sub <sub> --perm read
or orca acl grant <ns> --oidc-group <group> --perm admin.
Offline / Air-Gapped
Run the bundled Dex on the lead (offline). For the single-operator fully-offline case, skip OIDC and rely on mTLS-only machine identity (no human authn needed; the operator holds the pre-staged SSH key + mTLS cert; no password, no token).
Credentials Storage
~/.orca/credentials.json (0600). Short-lived ID token (1h) + refresh.
The IdP issues tokens; Orca only stores them. No long-lived
Orca-issued tokens (R-021).