From 0bdd1bc68fb8ba6d13fd3cc064e948ac05db5465 Mon Sep 17 00:00:00 2001 From: Radoslav Dimitrov Date: Mon, 19 Jul 2021 16:00:43 +0300 Subject: [PATCH 1/5] Add documentation for configuring Supervisor with Dex and Github The following guide describes the process of configuring Supervisor with Dex and identify users through their Github account. Issue #415 Signed-off-by: Radoslav Dimitrov --- .../howto/configure-supervisor-with-dex.md | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 site/content/docs/howto/configure-supervisor-with-dex.md diff --git a/site/content/docs/howto/configure-supervisor-with-dex.md b/site/content/docs/howto/configure-supervisor-with-dex.md new file mode 100644 index 00000000..3c88fb78 --- /dev/null +++ b/site/content/docs/howto/configure-supervisor-with-dex.md @@ -0,0 +1,132 @@ +--- +title: Configure the Pinniped Supervisor to use Dex with Github as an OIDC provider +description: Set up the Pinniped Supervisor to use Dex login. +cascade: + layout: docs +menu: + docs: + name: Configure Supervisor With Dex OIDC + weight: 80 + parent: howtos +--- + +The Supervisor is an [OpenID Connect (OIDC)](https://openid.net/connect/) issuer that supports connecting a single +"upstream" identity provider to many "downstream" cluster clients. + +This guide shows you how to configure the Supervisor so that users can authenticate to their Kubernetes +cluster using Dex and Github. + +## Prerequisites + +This how-to guide assumes that you have already [installed the Pinniped Supervisor]({{< ref "install-supervisor" >}}) with working ingress, +and that you have [configured a FederationDomain to issue tokens for your downstream clusters]({{< ref "configure-supervisor" >}}). + +## Configure Dex to use Github as an external identity provider + +Dex is an OIDC issuer that supports various identity providers through connectors, i.e. LDAP, Github, Gitlab, Google, SAML and much more. Take a look at its [documentation](https://dexidp.io/docs/connectors/) to understand how to configure such connector in Dex. + +In this example, we'll show how to use Dex to identify users through their GitHub account. + +First, we need to go to your Github account settings and [create an OAuth app](https://github.com/settings/applications/new) by populating the following rows - + +- Application name - `Dex application` +- Homepage URL - `https://` +- Authorization callback URL - `https:///callback` // this is where Github will redirect you to once your app has authorized + +Once completed, copy your `Client ID` and `Client secret` (generate one if there's none) as those two will be needed to configure a Github connector in Dex. + +To setup one, edit the configuration used by Dex by adding the following - + +```bash +... +connectors: +- type: github + id: github + name: GitHub + config: + clientID: $GITHUB_CLIENT_ID + clientSecret: $GITHUB_CLIENT_SECRET + redirectURI: https:///callback +... +``` + +## Register an application in Dex + +Follow the instructions for [registering an application in Dex](https://dexidp.io/docs/using-dex/#configuring-your-app) and create a static client application, in our case the client happens be the Supervisor. Note that the "openid" scope is always included, but you can always request additional scopes that you can then pass to your Kubernetes cluster, such as "groups" for example. + +To create a static client application, edit the configuration used by Dex (can be a file or a ConfigMap) by adding the following - + +```bash +... +staticClients: +- id: pinniped-supervisor + secret: pinniped-supervisor-secret + name: 'Pinniped Supervisor client' + redirectURIs: + - 'http:///callback' +... +``` + +## Configure the Supervisor + +Create an [OIDCIdentityProvider](https://github.com/vmware-tanzu/pinniped/blob/main/generated/1.20/README.adoc#oidcidentityprovider) resource in the same namespace as the Supervisor. + +For example, the following OIDCIdentityProvider and the corresponding Secret use Dex's `email` claim as the Kubernetes username: + +```yaml +apiVersion: idp.supervisor.pinniped.dev/v1alpha1 +kind: OIDCIdentityProvider +metadata: + namespace: pinniped-supervisor + name: dex +spec: + # Specify the upstream issuer URL (no trailing slash). + issuer: https:// + + # Request any scopes other than "openid" for claims besides + # the default claims in your token. The "openid" scope is always + # included. + authorizationConfig: + additionalScopes: [groups, email] + + # Specify how Dex claims are mapped to Kubernetes identities. + claims: + # Specify the name of the claim in your Dex ID token that will be mapped + # to the "username" claim in downstream tokens minted by the Supervisor. + username: email + + # Specify the name of the claim in your Dex ID token that represents the groups + # that the user belongs to. This matches what you specified above + # with the Groups claim filter. + groups: groups + + # Specify the name of the Kubernetes Secret that contains your Dex + # application's client credentials (created below). + client: + secretName: dex-client-credentials +--- +apiVersion: v1 +kind: Secret +metadata: + namespace: pinniped-supervisor + name: dex-client-credentials +type: secrets.pinniped.dev/oidc-client +stringData: + # The "Client ID" that you set in Dex. For example, in our case this is "pinniped-supervisor" + clientID: "" + + # The "Client secret" that you set in Dex. For example, in our case this is "pinniped-supervisor-secret" + clientSecret: "" +``` + +Once your OIDCIdentityProvider resource has been created, you can validate your configuration by running: + +```bash +kubectl describe OIDCIdentityProvider -n pinniped-supervisor dex +``` + +Look at the `status` field. If it was configured correctly, you should see `phase: Ready`. + +## Next steps + +Now that you have configured the Supervisor to use Dex, you will want to [configure the Concierge to validate JWTs issued by the Supervisor]({{< ref "configure-concierge-supervisor-jwt" >}}). From f6273b06040c67857746642fdac072ab84eb16c0 Mon Sep 17 00:00:00 2001 From: Radoslav Dimitrov Date: Tue, 20 Jul 2021 13:44:12 +0300 Subject: [PATCH 2/5] Update the Prerequisites section and add a note about the groups scope Add Dex to the prerequisites and add a note that to query for the groups scope the user must set the organizations Dex should search against. Otherwise the groups claim would be empty. This is because of the format group claims are represented, i.e. "org:team". Signed-off-by: Radoslav Dimitrov --- site/content/docs/howto/configure-supervisor-with-dex.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/site/content/docs/howto/configure-supervisor-with-dex.md b/site/content/docs/howto/configure-supervisor-with-dex.md index 3c88fb78..db44d20e 100644 --- a/site/content/docs/howto/configure-supervisor-with-dex.md +++ b/site/content/docs/howto/configure-supervisor-with-dex.md @@ -21,6 +21,8 @@ cluster using Dex and Github. This how-to guide assumes that you have already [installed the Pinniped Supervisor]({{< ref "install-supervisor" >}}) with working ingress, and that you have [configured a FederationDomain to issue tokens for your downstream clusters]({{< ref "configure-supervisor" >}}). +You'd also have to have an instance of Dex up and running, i.e. accessible at `https://`. You can refer to the [Getting started with Dex](https://dexidp.io/docs/getting-started/) guidelines for more information on how to deploy it. + ## Configure Dex to use Github as an external identity provider Dex is an OIDC issuer that supports various identity providers through connectors, i.e. LDAP, Github, Gitlab, Google, SAML and much more. Take a look at its [documentation](https://dexidp.io/docs/connectors/) to understand how to configure such connector in Dex. @@ -98,6 +100,10 @@ spec: # Specify the name of the claim in your Dex ID token that represents the groups # that the user belongs to. This matches what you specified above # with the Groups claim filter. + # Note that the group claims from Github are in the format of "org:team". + # To query for the group scope, you should set the organization you want Dex to + # search against in its configuration, otherwise your group claim would be empty. + # An example config can be found at - https://dexidp.io/docs/connectors/github/#configuration groups: groups # Specify the name of the Kubernetes Secret that contains your Dex From fec59eb1bf4fe9dacaa0036249b3d79061afb5b6 Mon Sep 17 00:00:00 2001 From: Nanci Lancaster Date: Tue, 20 Jul 2021 17:37:04 -0500 Subject: [PATCH 3/5] Merge pull request #731 from microwavables/main Removed Andrew Keesler, Pablo Schumaker from site, moved them to emeritus status on maintainers file, --- MAINTAINERS.md | 11 ++++++++--- site/themes/pinniped/layouts/partials/team.html | 11 ++--------- .../pinniped/static/img/Anjali-Telang.png | Bin 0 -> 28144 bytes .../pinniped/static/img/andrew-keesler.png | Bin 28728 -> 0 bytes .../pinniped/static/img/pablo-schuhmacher.png | Bin 30250 -> 0 bytes 5 files changed, 10 insertions(+), 12 deletions(-) create mode 100644 site/themes/pinniped/static/img/Anjali-Telang.png delete mode 100644 site/themes/pinniped/static/img/andrew-keesler.png delete mode 100644 site/themes/pinniped/static/img/pablo-schuhmacher.png diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 2cfa632e..438e2ddb 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -4,16 +4,21 @@ This is the current list of maintainers for the Pinniped project. | Maintainer | GitHub ID | Affiliation | | --------------- | --------- | ----------- | -| Andrew Keesler | [ankeesler](https://github.com/ankeesler) | [VMware](https://www.github.com/vmware/) | | Margo Crawford | [margocrawf](https://github.com/margocrawf) | [VMware](https://www.github.com/vmware/) | | Matt Moyer | [mattmoyer](https://github.com/mattmoyer) | [VMware](https://www.github.com/vmware/) | | Mo Khan | [enj](https://github.com/enj) | [VMware](https://www.github.com/vmware/) | -| Pablo Schuhmacher | [pabloschuhmacher](https://github.com/pabloschuhmacher) | [VMware](https://www.github.com/vmware/) | +| Anjali Telang | [anjaltelang](https://github.com/anjaltelang) | [VMware](https://www.github.com/vmware/) | | Ryan Richard | [cfryanr](https://github.com/cfryanr) | [VMware](https://www.github.com/vmware/) | +## Emeritus Maintainers + +* Andrew Keesler, [ankeesler](https://github.com/ankeesler) +* Pablo Schuhmacher, [pabloschuhmacher](https://github.com/pabloschuhmacher) + ## Pinniped Contributors & Stakeholders | Feature Area | Lead | | ----------------------------- | :---------------------: | | Technical Lead | Matt Moyer (mattmoyer) | -| Product Management | Pablo Schuhmacher (pabloschuhmacher) | +| Product Management | Anjali Telang (anjaltelang) | +| Community Management | Nanci Lancaster (microwavables) | diff --git a/site/themes/pinniped/layouts/partials/team.html b/site/themes/pinniped/layouts/partials/team.html index a7ee4661..ec20a869 100644 --- a/site/themes/pinniped/layouts/partials/team.html +++ b/site/themes/pinniped/layouts/partials/team.html @@ -2,13 +2,6 @@

The Pinniped Project Team:

-
-
-
-

Andrew Keesler

-

Engineer

-
-
@@ -38,9 +31,9 @@
-
+
-

Pablo Schuhmacher

+

Anjali Telang

Product Manager

diff --git a/site/themes/pinniped/static/img/Anjali-Telang.png b/site/themes/pinniped/static/img/Anjali-Telang.png new file mode 100644 index 0000000000000000000000000000000000000000..23a21a864b28f91942510f50cdf85420a8b35623 GIT binary patch literal 28144 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 B>L&mI From ae72d30cecee4507f9f7ef1359c7175fc5f83fba Mon Sep 17 00:00:00 2001 From: Matt Moyer Date: Wed, 21 Jul 2021 09:17:24 -0500 Subject: [PATCH 4/5] Switch to GHCR tools images for local tests, with `imagePullPolicy: IfNotPresent`. This is more consistent with our CI environment. Signed-off-by: Matt Moyer --- test/deploy/tools/cert-issuer.yaml | 2 ++ test/deploy/tools/dex.yaml | 1 + test/deploy/tools/ldap.yaml | 1 + test/deploy/tools/proxy.yaml | 2 ++ test/deploy/tools/values.yaml | 10 +++++----- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/test/deploy/tools/cert-issuer.yaml b/test/deploy/tools/cert-issuer.yaml index 5fa4c40a..120da099 100644 --- a/test/deploy/tools/cert-issuer.yaml +++ b/test/deploy/tools/cert-issuer.yaml @@ -54,6 +54,7 @@ spec: initContainers: - name: generate-certs image: #@ data.values.cfssl_image + imagePullPolicy: IfNotPresent command: ["/bin/bash"] args: - -c @@ -111,6 +112,7 @@ spec: containers: - name: save-certs image: #@ data.values.kubectl_image + imagePullPolicy: IfNotPresent command: ["/bin/bash"] args: - -c diff --git a/test/deploy/tools/dex.yaml b/test/deploy/tools/dex.yaml index 39c3f886..9a7615ae 100644 --- a/test/deploy/tools/dex.yaml +++ b/test/deploy/tools/dex.yaml @@ -69,6 +69,7 @@ spec: containers: - name: dex image: #@ data.values.dex_image + imagePullPolicy: IfNotPresent command: - /usr/local/bin/dex - serve diff --git a/test/deploy/tools/ldap.yaml b/test/deploy/tools/ldap.yaml index b11095e1..831dd6e2 100644 --- a/test/deploy/tools/ldap.yaml +++ b/test/deploy/tools/ldap.yaml @@ -210,6 +210,7 @@ spec: #! LDAP_SERVER_CONFIG_BEFORE_CUSTOM_LDIF_DIR and LDAP_SERVER_CONFIG_AFTER_CUSTOM_LDIF_DIR options. #! See https://github.com/pinniped-ci-bot/bitnami-docker-openldap/tree/pinniped image: #@ data.values.ldap_image + imagePullPolicy: IfNotPresent ports: - name: ldap containerPort: 1389 diff --git a/test/deploy/tools/proxy.yaml b/test/deploy/tools/proxy.yaml index c3913510..38cdc88e 100644 --- a/test/deploy/tools/proxy.yaml +++ b/test/deploy/tools/proxy.yaml @@ -26,6 +26,7 @@ spec: containers: - name: proxy image: #@ data.values.proxy_image + imagePullPolicy: IfNotPresent ports: - name: http containerPort: 3128 @@ -48,6 +49,7 @@ spec: failureThreshold: 2 - name: accesslogs image: #@ data.values.proxy_image + imagePullPolicy: IfNotPresent command: - "/bin/sh" - "-c" diff --git a/test/deploy/tools/values.yaml b/test/deploy/tools/values.yaml index 49a227d2..201dd00f 100644 --- a/test/deploy/tools/values.yaml +++ b/test/deploy/tools/values.yaml @@ -27,8 +27,8 @@ pinny_bcrypt_passwd_hash: pinny_ldap_password: #! Images for each of the deployed test components. -dex_image: ghcr.io/dexidp/dex:v2.27.0 -ldap_image: projects.registry.vmware.com/pinniped/test-ldap:latest -proxy_image: projects.registry.vmware.com/pinniped/test-forward-proxy:latest -cfssl_image: cfssl/cfssl:1.5.0 -kubectl_image: bitnami/kubectl:latest +dex_image: ghcr.io/pinniped-ci-bot/test-dex:latest +ldap_image: ghcr.io/pinniped-ci-bot/test-ldap:latest +proxy_image: ghcr.io/pinniped-ci-bot/test-forward-proxy:latest +cfssl_image: ghcr.io/pinniped-ci-bot/test-cfssl:latest +kubectl_image: ghcr.io/pinniped-ci-bot/test-kubectl:latest From ee30b7811789abbc7f6f3865f01a4821ac4e0b18 Mon Sep 17 00:00:00 2001 From: Matt Moyer Date: Thu, 22 Jul 2021 10:30:45 -0500 Subject: [PATCH 5/5] Update ROADMAP.md Bump "Wider Concierge cluster support" to August. --- ROADMAP.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ROADMAP.md b/ROADMAP.md index ad92177f..0ac4d8f9 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -38,7 +38,7 @@ Theme|Description|Timeline| |--|--|--| |Remote OIDC login support|Add support for logging in from remote hosts without web browsers in the Pinniped CLI and Supervisor|Jul 2021| |AD Support|Extends upstream IDP protocols|Jul 2021| -|Wider Concierge cluster support|Support for more cluster types in the Concierge|Jul 2021| +|Wider Concierge cluster support|Support for more cluster types in the Concierge|Aug 2021| |Multiple IDP support|Support multiple IDPs configured on a single Supervisor|Exploring/Ongoing| |Identity transforms|Support prefixing, filtering, or performing coarse-grained checks on upstream users and groups|Exploring/Ongoing| |Extended IDP support|Support more types of identity providers on the Supervisor|Exploring/Ongoing|