diff --git a/config/permissions/akP-traefik-admin.yaml b/config/permissions/akP-traefik-admin.yaml new file mode 100644 index 0000000..280ce75 --- /dev/null +++ b/config/permissions/akP-traefik-admin.yaml @@ -0,0 +1,3 @@ +# Permission group akP-traefik-admin (name = filename). Grants admin +# access to traefik: bound to the traefik application, gating the dashboards. +application: traefik diff --git a/config/providers_oauth2/traefik.yaml b/config/providers_oauth2/traefik.yaml new file mode 100644 index 0000000..878146c --- /dev/null +++ b/config/providers_oauth2/traefik.yaml @@ -0,0 +1,23 @@ +# OAuth2/OIDC provider + application for the traefik dashboards +# (traefik-internal / traefik-external on k8s.syd1). An oauth2-proxy in front +# of each dashboard performs the OIDC login; access is gated on the user's +# hierarchical ak_groups claim (akP-traefik-admin). +# client_secret is read from Vault (seeded out of band), never committed. +name: traefik +authorization_flow: default-provider-authorization-implicit-consent +invalidation_flow: default-provider-invalidation-flow +client_type: confidential +client_id: traefik +launch_url: https://traefik-internal.k8s.syd1.au.unkin.net/ +client_secret_vault: + mount: kv + path: kubernetes/namespace/traefik-system/default/oauth-credentials +scope_mappings: + - goauthentik.io/providers/oauth2/scope-openid + - goauthentik.io/providers/oauth2/scope-email + - goauthentik.io/providers/oauth2/scope-profile +redirect_uris: + - matching_mode: strict + url: https://traefik-internal.k8s.syd1.au.unkin.net/oauth2/callback + - matching_mode: strict + url: https://traefik-external.k8s.syd1.au.unkin.net/oauth2/callback diff --git a/config/roles/akR-global-admin.yaml b/config/roles/akR-global-admin.yaml index 2a85d6c..43c2d49 100644 --- a/config/roles/akR-global-admin.yaml +++ b/config/roles/akR-global-admin.yaml @@ -5,6 +5,7 @@ permissions: - akP-rancher-admin - akP-litellm-admin - akP-jellyfin-admin + - akP-traefik-admin - akP-logviewer-admin # arrstack has no admin tier (it is a proxy front door); grant global admins # the front door plus every per-app entitlement so they reach all media apps.