From b5d4aced41b9220d87633c5237f950b220ddd3c8 Mon Sep 17 00:00:00 2001 From: Csaba Engedi Date: Sun, 19 Feb 2023 21:54:23 +0100 Subject: [PATCH] feat(traefik-forward-auth): add traefik-forward-auth (#6965) * Initial commit for traefik-forward-auth * Add providers, change variable naming * Change chart version * Add container SHA, add secrets as env * feat(traefik-forward-auth): add traefik-fwd-auth * Follow prettier in docs, adding default values * Follow prettier in docs and Chart.yaml --- .../traefik-forward-auth/.helmignore | 30 ++ .../incubator/traefik-forward-auth/Chart.yaml | 35 ++ .../incubator/traefik-forward-auth/README.md | 26 ++ .../traefik-forward-auth/docs/how-to.md | 71 +++ .../docs/img/auth-options.png | Bin 0 -> 40734 bytes .../docs/img/cookie-options.png | Bin 0 -> 8229 bytes .../docs/img/google-options.png | Bin 0 -> 9337 bytes .../docs/img/ingress-middleware.png | Bin 0 -> 5400 bytes .../docs/img/traefik-forwarded-headers.png | Bin 0 -> 11353 bytes .../docs/img/traefik-middleware.png | Bin 0 -> 28529 bytes .../incubator/traefik-forward-auth/icon.png | Bin 0 -> 19284 bytes .../traefik-forward-auth/questions.yaml | 409 ++++++++++++++++++ .../traefik-forward-auth/templates/_args.tpl | 34 ++ .../templates/_secret.tpl | 57 +++ .../templates/common.yaml | 13 + .../traefik-forward-auth/values.yaml | 62 +++ 16 files changed, 737 insertions(+) create mode 100644 charts/incubator/traefik-forward-auth/.helmignore create mode 100644 charts/incubator/traefik-forward-auth/Chart.yaml create mode 100644 charts/incubator/traefik-forward-auth/README.md create mode 100644 charts/incubator/traefik-forward-auth/docs/how-to.md create mode 100644 charts/incubator/traefik-forward-auth/docs/img/auth-options.png create mode 100644 charts/incubator/traefik-forward-auth/docs/img/cookie-options.png create mode 100644 charts/incubator/traefik-forward-auth/docs/img/google-options.png create mode 100644 charts/incubator/traefik-forward-auth/docs/img/ingress-middleware.png create mode 100644 charts/incubator/traefik-forward-auth/docs/img/traefik-forwarded-headers.png create mode 100644 charts/incubator/traefik-forward-auth/docs/img/traefik-middleware.png create mode 100644 charts/incubator/traefik-forward-auth/icon.png create mode 100644 charts/incubator/traefik-forward-auth/questions.yaml create mode 100644 charts/incubator/traefik-forward-auth/templates/_args.tpl create mode 100644 charts/incubator/traefik-forward-auth/templates/_secret.tpl create mode 100644 charts/incubator/traefik-forward-auth/templates/common.yaml create mode 100644 charts/incubator/traefik-forward-auth/values.yaml diff --git a/charts/incubator/traefik-forward-auth/.helmignore b/charts/incubator/traefik-forward-auth/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/charts/incubator/traefik-forward-auth/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/charts/incubator/traefik-forward-auth/Chart.yaml b/charts/incubator/traefik-forward-auth/Chart.yaml new file mode 100644 index 00000000000..cde57c01e63 --- /dev/null +++ b/charts/incubator/traefik-forward-auth/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: traefik-forward-auth +version: 0.1.0 +appVersion: "2.2.0" +description: A minimal forward authentication service that provides OAuth/SSO login and authentication for the traefik reverse proxy/load balancer. An example for a typical setup is included in the source (docs/how-to.md). +type: application +deprecated: false +home: https://github.com/truecharts/charts/tree/master/charts/incubator/traefik-forward-auth +icon: https://raw.githubusercontent.com/truecharts/charts/master/incubator/traefik-forward-auth/icon.png?raw=true +keywords: + - traefik-forward-auth + - traefik + - forward-auth + - auth + - ingress + - middleware +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/traefik-forward-auth + - https://github.com/thomseddon/traefik-forward-auth +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: + 11.1.2 + # condition: +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - network + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/charts/incubator/traefik-forward-auth/README.md b/charts/incubator/traefik-forward-auth/README.md new file mode 100644 index 00000000000..9b45abe7b30 --- /dev/null +++ b/charts/incubator/traefik-forward-auth/README.md @@ -0,0 +1,26 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/charts/incubator/traefik-forward-auth/docs/how-to.md b/charts/incubator/traefik-forward-auth/docs/how-to.md new file mode 100644 index 00000000000..c6099299e06 --- /dev/null +++ b/charts/incubator/traefik-forward-auth/docs/how-to.md @@ -0,0 +1,71 @@ +# traefik-forward-auth + +This app makes it possible to have a layer of security in front of your publicly exposed apps. +It supports Google, OIDC, and generic OAuth2. +Please read the [GitHub README of the original project](https://github.com/thomseddon/traefik-forward-auth) for your +authentication options. + +Note: generally, phone apps do not support redirection during their authentication flow, so this middleware is more suitable for +protecting portals that you would access through a browser. + +## A standard setup (auth host mode) + +This method will add a middleware to the traefik instance with Google authentication which then you can apply on any apps +with either subdomain or path prefix Ingress rules. +The example domain will be `https://example.com` which should be substituted to your externally accessible domain name. + +### Setting up traefik-forward-auth + +Assuming you have set up the `Client ID for Web application` in the developer console and set the `Authorized redirect URIs` to +`https://auth.example.com/_oauth`, start installing traefik-forward-auth: + +- Set a `Secret` (it's mandatory, but can be any string of your choosing). +- Set `Auth host` to `auth.example.com`. +- Add your email to `Whitelist`. + +![auth-options](img/auth-options.png) + +- Add your root domain to `Cookie options`. + +![cookie-options](img/cookie-options.png) + +- Set the `Client ID` and `Client Secret` to the ones presented on the developer console. `Prompt` can be left empty. + +![google-options](img/google-options.png) + +- Set up Ingress for the app as `auth.example.com` as usual. +- That's it, since this is a stateless program, it doesn't need any special permissions or storage. + +### Creating the middleware on traefik + +The traefik instance has to be made aware of the forward authentication. Edit your traefik installation: + +- Go to `websecure` entrypoint and enable `Accept forwarded headers`. +- Add your default gateway (internal router IP) to `Trusted IPs` if using hairpin NAT. If you are using DNS override for your + domain name, you can probably skip this step. + +![traefik-forwarded-headers](img/traefik-forwarded-headers.png) + +- Go to `Middlewares` and add a `forward-auth` one. +- Name it (use a short one if planning to add to many apps). +- Add `https://auth.example.com/_oauth` as address. This will redirect initial requests to the traefik-forward-auth container. +- Check `trustForwardHeader`. +- Add `X-Forwarded-User` to `authResponseHeaders`. + +![traefik-middleware](img/traefik-middleware.png) + +### Applying the middleware on apps + +To actually use the forward authentication, you have to add it to either a chain or by itself to existing app Ingresses. + +![ingress-middleware](img/ingress-middleware.png) + +### Per-app whitelist + +In case you need per-app whitelists, you have two options: set up multiple instances of traefik-forward-auth (cumbersome) or +use custom rules. Consult the readme of the original project how to set them. + +### Testing + +Opening your URL should result in being redirected to Google authentication. Subsequent checks if the auth is working can be +made by opening an incognito window. diff --git a/charts/incubator/traefik-forward-auth/docs/img/auth-options.png b/charts/incubator/traefik-forward-auth/docs/img/auth-options.png new file mode 100644 index 0000000000000000000000000000000000000000..0b813327ae838b72c6127021a0e4743910a78530 GIT binary patch literal 40734 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 C14MrS literal 0 HcmV?d00001 diff --git a/charts/incubator/traefik-forward-auth/docs/img/google-options.png b/charts/incubator/traefik-forward-auth/docs/img/google-options.png new file mode 100644 index 0000000000000000000000000000000000000000..9449505707cb03a71e606cec39ea597a158db024 GIT binary patch literal 9337 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 literal 0 HcmV?d00001 diff --git a/charts/incubator/traefik-forward-auth/docs/img/ingress-middleware.png b/charts/incubator/traefik-forward-auth/docs/img/ingress-middleware.png new file mode 100644 index 0000000000000000000000000000000000000000..aa9c2d76c7c18b05594357aa7ca382dd9201f7da GIT binary patch literal 5400 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 l7`8`l0^4mD+4u1XCLb@{p^mRHY+-}zhb4E41+ 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

|QxL1Q3&uf6(*4{Y!>AXa1WO=l`-N`u~?V#0{2C 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.= format. + schema: + type: list + default: [] + items: + - variable: rule + label: Rule + schema: + type: string + required: true + - variable: logoutRedirect + label: Logout redirect + description: URL to redirect to following logout. + schema: + type: string + - variable: tfaCookieOptions + group: App Configuration + label: Cookie Options + schema: + type: dict + attrs: + - variable: cookieDomain + label: Cookie domain hosts + schema: + type: list + default: [] + items: + - variable: cookieDomainHost + label: Host + schema: + type: string + required: true + - variable: cookieName + label: Cookie name + schema: + type: string + default: "_forward_auth" + - variable: csrfCookieName + label: CSRF cookie name + schema: + type: string + default: "_forward_auth_csrf" + - variable: lifetime + label: Lifetime + description: Lifetime in seconds. + schema: + type: int + default: 43200 + - variable: insecureCookie + label: Use insecure cookies + schema: + type: boolean + default: false + - variable: tfaGoogleOptions + group: App Configuration + label: Google Provider + schema: + type: dict + attrs: + - variable: clientId + label: Client ID + schema: + type: string + private: true + - variable: clientSecret + label: Client Secret + schema: + type: string + private: true + - variable: prompt + label: Prompt + description: Space separated list of OpenID prompt options. + schema: + type: string + - variable: tfaOidcOptions + group: App Configuration + label: OIDC Provider + schema: + type: dict + attrs: + - variable: issuerUrl + label: Issuer URL + schema: + type: string + - variable: clientId + label: Client ID + schema: + type: string + private: true + - variable: clientSecret + label: Client Secret + schema: + type: string + private: true + - variable: resource + label: Resource + description: Optional resource indicator. + schema: + type: string + - variable: tfaOauthOptions + group: App Configuration + label: Generic OAuth2 Provider + schema: + type: dict + attrs: + - variable: authUrl + label: Auth/Login URL + schema: + type: string + - variable: tokenUrl + label: Token URL + schema: + type: string + - variable: userUrl + label: User URL + description: URL used to retrieve user info. + schema: + type: string + - variable: clientId + label: Client ID + schema: + type: string + private: true + - variable: clientSecret + label: Client Secret + schema: + type: string + private: true + - variable: scopes + label: Scopes + schema: + type: string + default: profile, email + - variable: tokenStyle + label: Token style + description: How token is presented when querying the User URL + schema: + type: string + default: header + enum: + - value: header + description: Header + - value: query + description: Query + - variable: resource + label: Resource + description: Optional resource indicator. + schema: + type: string +# Include{fixedEnv} +# Include{containerConfig} +# Include{serviceRoot} + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: +# Include{serviceSelector} + - variable: main + label: "Main Service Port Configuration" + schema: + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 4181 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 4181 +# Include{serviceExpertRoot} + default: false +# Include{serviceExpert} +# Include{serviceList} +# Include{ingressRoot} + - variable: main + label: "Main Ingress" + schema: + type: dict + attrs: +# Include{ingressDefault} +# Include{ingressTLS} +# Include{ingressTraefik} +# Include{ingressExpert} +# Include{ingressList} + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true +# Include{securityContextAdvanced} +# Include{podSecurityContextRoot} + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 +# Include{podSecurityContextAdvanced} +# Include{resources} +# Include{advanced} +# Include{addons} +# Include{codeserver} +# Include{promtail} +# Include{netshoot} +# Include{vpn} diff --git a/charts/incubator/traefik-forward-auth/templates/_args.tpl b/charts/incubator/traefik-forward-auth/templates/_args.tpl new file mode 100644 index 00000000000..e75a8fd6f60 --- /dev/null +++ b/charts/incubator/traefik-forward-auth/templates/_args.tpl @@ -0,0 +1,34 @@ +{{- define "tfa.args" -}} +args: + - --log-level={{ .Values.tfaAppOptions.logLevel }} + - --log-format={{ .Values.tfaAppOptions.logFormat }} + {{- if .Values.tfaAuthOptions.authHost }} + - --auth-host={{ .Values.tfaAuthOptions.authHost }} + {{- end }} + {{- range .Values.tfaCookieOptions.cookieDomain }} + - --cookie-domain={{ . }} + {{- end }} + {{- if .Values.tfaCookieOptions.insecureCookie }} + - --insecure-cookie + {{- end }} + - --cookie-name={{ .Values.tfaCookieOptions.cookieName }} + - --csrf-cookie-name={{ .Values.tfaCookieOptions.csrfCookieName }} + - --default-action={{ .Values.tfaAuthOptions.defaultAction }} + - --default-provider={{ .Values.tfaAuthOptions.defaultProvider }} + {{- range .Values.tfaAuthOptions.domain }} + - --domain={{ . }} + {{- end }} + - --lifetime={{ .Values.tfaCookieOptions.lifetime }} + {{- if .Values.tfaAuthOptions.logoutRedirect }} + - --logout-redirect={{ .Values.tfaAuthOptions.logoutRedirect }} + {{- end }} + - --url-path={{ .Values.tfaAuthOptions.urlPath }} + - --secret={{ .Values.tfaAppOptions.secret }} + {{- range .Values.tfaAuthOptions.whitelist }} + - --whitelist={{ . }} + {{- end }} + - --port={{ .Values.tfaAppOptions.port }} + {{- range .Values.tfaAuthOptions.rules }} + - --{{ . }} + {{- end }} +{{- end -}} diff --git a/charts/incubator/traefik-forward-auth/templates/_secret.tpl b/charts/incubator/traefik-forward-auth/templates/_secret.tpl new file mode 100644 index 00000000000..d950139c6d8 --- /dev/null +++ b/charts/incubator/traefik-forward-auth/templates/_secret.tpl @@ -0,0 +1,57 @@ +{{/* Define the secret */}} +{{- define "tfa.secret" -}} + +{{- $googleSecretName := printf "%s-google-secret" (include "tc.common.names.fullname" .) }} +{{- $oidcSecretName := printf "%s-oidc-secret" (include "tc.common.names.fullname" .) }} +{{- $oauthSecretName := printf "%s-oauth2-secret" (include "tc.common.names.fullname" .) }} + +--- + +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: {{ $googleSecretName }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} +data: + PROVIDERS_GOOGLE_CLIENT_ID: {{ .Values.tfaGoogleOptions.clientId | trimAll "\"" | b64enc }} + PROVIDERS_GOOGLE_CLIENT_SECRET: {{ .Values.tfaGoogleOptions.clientSecret | trimAll "\"" | b64enc }} + PROVIDERS_GOOGLE_PROMPT: {{ .Values.tfaGoogleOptions.prompt | trimAll "\"" | b64enc }} + +--- + +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: {{ $oidcSecretName }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} +data: + PROVIDERS_OIDC_ISSUER_URL: {{ .Values.tfaOidcOptions.issuerUrl | trimAll "\"" | b64enc }} + PROVIDERS_OIDC_CLIENT_ID: {{ .Values.tfaOidcOptions.clientId | trimAll "\"" | b64enc }} + PROVIDERS_OIDC_CLIENT_SECRET: {{ .Values.tfaOidcOptions.clientSecret | trimAll "\"" | b64enc }} + PROVIDERS_OIDC_RESOURCE: {{ .Values.tfaOidcOptions.resource | trimAll "\"" | b64enc }} + +--- + +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: {{ $oauthSecretName }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} +data: + PROVIDERS_GENERIC_OAUTH_AUTH_URL: {{ .Values.tfaOauthOptions.authUrl | trimAll "\"" | b64enc }} + PROVIDERS_GENERIC_OAUTH_TOKEN_URL: {{ .Values.tfaOauthOptions.tokenUrl | trimAll "\"" | b64enc }} + PROVIDERS_GENERIC_OAUTH_USER_URL: {{ .Values.tfaOauthOptions.userUrl | trimAll "\"" | b64enc }} + PROVIDERS_GENERIC_OAUTH_CLIENT_ID: {{ .Values.tfaOauthOptions.clientId | trimAll "\"" | b64enc }} + PROVIDERS_GENERIC_OAUTH_CLIENT_SECRET: {{ .Values.tfaOauthOptions.clientSecret | trimAll "\"" | b64enc }} + PROVIDERS_GENERIC_OAUTH_TOKEN_STYLE: {{ .Values.tfaOauthOptions.tokenStyle | trimAll "\"" | b64enc }} + PROVIDERS_GENERIC_OAUTH_RESOURCE: {{ .Values.tfaOauthOptions.resource | trimAll "\"" | b64enc }} + +--- + +{{- end }} diff --git a/charts/incubator/traefik-forward-auth/templates/common.yaml b/charts/incubator/traefik-forward-auth/templates/common.yaml new file mode 100644 index 00000000000..dd59166b203 --- /dev/null +++ b/charts/incubator/traefik-forward-auth/templates/common.yaml @@ -0,0 +1,13 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{/* Render secret */}} +{{- include "tfa.secret" . }} + +{{- $tplArgs := (include "tfa.args" . | fromYaml) }} +{{- $_ := set .Values "tplArgs" $tplArgs -}} +{{- $args := concat .Values.args .Values.tplArgs.args }} +{{- $_ := set .Values "args" $args -}} + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} diff --git a/charts/incubator/traefik-forward-auth/values.yaml b/charts/incubator/traefik-forward-auth/values.yaml new file mode 100644 index 00000000000..498d6dd70e9 --- /dev/null +++ b/charts/incubator/traefik-forward-auth/values.yaml @@ -0,0 +1,62 @@ +image: + repository: tccr.io/truecharts/traefik-forward-auth + pullPolicy: IfNotPresent + tag: latest@sha256:edd7eb812cb38e59d32b5a00398b57a78506db2390cbe295f5df590a38a5d44e + +envFrom: + - secretRef: + name: '{{ include "tc.common.names.fullname" . }}-google-secret' + - secretRef: + name: '{{ include "tc.common.names.fullname" . }}-oidc-secret' + - secretRef: + name: '{{ include "tc.common.names.fullname" . }}-oauth2-secret' + +service: + main: + ports: + main: + targetPort: 4181 + port: 4181 + +tfaAppOptions: + secret: something-random + port: 4181 + logLevel: warn + logFormat: text + +tfaAuthOptions: + authHost: + urlPath: /_oauth + defaultAction: auth + defaultProvider: google + domain: [] + whitelist: [] + rules: [] + +tfaCookieOptions: + cookieDomain: [] + cookieName: _forward_auth + csrfCookieName: _forward_auth_csrf + lifetime: 43200 + insecureCookie: false + +tfaGoogleOptions: + clientId: "changeme" + clientSecret: "changeme" + prompt: "changeme" + +tfaOidcOptions: + issuerUrl: "changeme" + clientId: "changeme" + clientSecret: "changeme" + resource: "changeme" + +tfaOauthOptions: + authUrl: "changeme" + tokenUrl: "changeme" + userUrl: "changeme" + clientId: "changeme" + clientSecret: "changeme" + scopes: "changeme" + tokenStyle: header + resource: "changeme"