Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support OpenID Connect Tokens for Kube Auth #1767

Open
frodopwns opened this issue Aug 5, 2020 · 46 comments
Open

Support OpenID Connect Tokens for Kube Auth #1767

frodopwns opened this issue Aug 5, 2020 · 46 comments
Assignees
Labels
feature-request Requested Features Feedback General feedback security

Comments

@frodopwns
Copy link

What happened:

Users would like to use the OpenID Connect functionality built into Kubernetes in order to authenticate using OIDC providers. Users are unable to set the parameters outlined in the Kubernetes documentation. https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens

Users submitted feedback seeking resolution:

No updates and the issue was closed.

What you expected to happen:

Issues addressed either by solving the problem or an explanation of why it can't be done or when to expect it.

@ghost ghost added the triage label Aug 5, 2020
@ghost
Copy link

ghost commented Aug 5, 2020

Triage required from @Azure/aks-pm

@TomGeske TomGeske added Feedback General feedback security labels Aug 6, 2020
@ghost ghost removed the triage label Aug 6, 2020
@TomGeske
Copy link

TomGeske commented Aug 6, 2020

You can use AKS-managed AAD https://aka.ms/aks/managed-aad

@reallydontask
Copy link

@TomGeske

You can use AKS-managed AAD https://aka.ms/aks/managed-aad

I am, presumably, on the same boat as @frodopwns, namely not wanting to use AAD but a different OIDC provider, which is what the ticket relates to.

is this possible and if so how?

@TomGeske
Copy link

No, other OIDC provider are not supported at this point.

@TomGeske TomGeske added feature-request Requested Features and removed Top 10 Issue labels Aug 11, 2020
@reallydontask
Copy link

thanks for confirming

@ghost ghost added the action-required label Feb 8, 2021
@ghost
Copy link

ghost commented Feb 13, 2021

Action required from @Azure/aks-pm

@ghost ghost added the Needs Attention 👋 Issues needs attention/assignee/owner label Feb 13, 2021
@cre8minus1
Copy link

@ghost
Copy link

ghost commented Mar 5, 2021

Issue needing attention of @Azure/aks-leads

@villanub
Copy link

This is something we are looking to leverage for managing a large customer base. Any update on plans to support this? EKS has taken the lead and it would be good for AKS to catch up.

@starkers
Copy link

I was thinking about migrating from AWS to Azure and just found out AKS doesn't support something a vanilla k8s cluster does.. Zoinks :/

@miwithro
Copy link
Contributor

miwithro commented Mar 18, 2021

We currently have:
https://docs.microsoft.com/en-us/azure/aks/use-azure-ad-pod-identity

We are developing V2 of the above implementation which is based on OIDC Federation support. Looking at a Private Preview in the end of Q2 2021.

@ghost ghost removed action-required Needs Attention 👋 Issues needs attention/assignee/owner labels Mar 18, 2021
@villanub
Copy link

Feel free to reach out to me to participate in the Private Preview, happy to work on this as it is a critical piece of our requirement for success.

@ryaneorth
Copy link

@miwithro and @villanub - thanks for your update on this new feature, but that doesn't seem to address the original ask raised for this issue. Does AKS plan to support OIDC authentication to the Kubernetes API server (similar to EKS)?

@starkers
Copy link

Yes, we just want to authorise users via an existing OIDC system, nothing fancy.. its vanilla kubernetes

@mtiller
Copy link

mtiller commented Jul 20, 2021

Just to add that for our internal bare metal clusters we already have this. Furthermore, I'd like all of our clusters to be able to use the same OIDC provider. I understand that if all I used was Azure and AAD, then the current functionality would make sense. But for people who run multiple clusters, it would be an absolute nightmare to require users of each cluster to be registered with independent identity providers for each one.

@rmt
Copy link

rmt commented Jul 23, 2021

I'm not convinced that they understand what this ticket is asking for. This is about user identities, not pod or service identities.

In February this year, AWS EKS introduced the much requested feature. EKS allows you to "Associate (an OIDC) Identity Provider" with a cluster. To configure this, you provide an Issuer URL, Client ID, Username claim and Groups claim.

For example, https://oidc.mycompany.com/, myclientID, "username", and "groups". Kubernetes will regularly check https://oidc.mycompany.com/.well-known/openid-configuration, and from then on it will trust the username & groups in any valid JWT tokens from that provider.

The reason that this is important is that many companies manage Kubernetes clusters across multiple datacenters and clouds, and OpenID connect is the standard way to do this, helping to maintain consistent auth & audit trail.

@keymon
Copy link

keymon commented Aug 17, 2021

We would love to have this feature too. EKS has it and it is a game changer, to allow us to better integrate the developer workflows for our services and k8s in the same manner, without having to provide cloud credentials.

@dstockton
Copy link

GKE also has this now - https://cloud.google.com/kubernetes-engine/docs/how-to/oidc

@thomas-maurice
Copy link

Is there any updates on this ? This would be a tremendously useful feature to have.

@HerrmannHinz
Copy link

+1

@UXabre
Copy link

UXabre commented Feb 4, 2022

We also have a use-case for this, as we're using our own IDP, completely separate from AD. It would be great if we could pass a token from our API towards the kubernetes API to create resources (as this seems to be what is supported already by native kubernetes)

@miwithro
Copy link
Contributor

miwithro commented Feb 4, 2022

We have it on our plans to tackle this feature early this quarter. Once we have a firm plan, I will update this issue.

@szymonrychu
Copy link

I'm also stuck with this, other major providers AWS/GCP allow for this to happen. Currently I'm working in multicloud environment and NEED to centralize authorization around kuberneteses.
Is there any workaround for this?

@miwithro
Copy link
Contributor

@xiaowanzizuibang

@UXabre
Copy link

UXabre commented Apr 2, 2022

Hi, I am correct to assume that #2861 is the follow up for this issue as it states to support external IDPs (and seems to be in the commited swimlane 🎉🎉🎉)? Perhaps this current issue can then be closed as it deals with the same topic and it would help people who are "waiting" for this feature to know that it is actually seemingly moving forward?

@CocoWang-wql
Copy link
Contributor

Currently AKS supports Azure AD as the identity provider for authentication. The External identity provider feature is in planning and we would post here once there is any update. #2861

@atiasadir
Copy link

atiasadir commented Apr 12, 2022

We have it on our plans to tackle this feature early this quarter. Once we have a firm plan, I will update this issue.

@miwithro Any update regarding ETA ?

@amirschw

@miwithro
Copy link
Contributor

@atiasadir it is planned for summer.

@Eugst
Copy link

Eugst commented Jul 12, 2022

@miwithro it's a middle of summer! how things are going there? :)

@cre8minus1
Copy link

@miwithro it's a middle of summer! how things are going there? :)

+1 - We are looking to standardize on OIDC across on-prem and cloud, this will really help.

@ashmuck
Copy link

ashmuck commented Oct 18, 2022

Any updates on this?

@jgourmelen
Copy link

Any update ?

@CocoWang-wql
Copy link
Contributor

Can you try to use Pinniped project can meet your requirements? (kindly replace the GKE steps with AKS equivalent steps)
If not, pls feel free to talk about it with me. In case you don't want to expose internal info here, you can open an Azure support ticket and attach the GitHub link, then ask the support engineer to loop me in the cal. Thank you all for your feedback.

@CocoWang-wql
Copy link
Contributor

Link the duplicated issue here which contains the complete conversation. Pls feel free to refer to it.

@szymonrychu
Copy link

@CocoWang-wql so the official answer is that, in Azure it's necessary to implement and maintain solution based on external operator in order to use otherwise kubernetes'es built in functionality?

Does it mean, that Azure will offer refunds for resources lost in the process (CPU, mem, monitoring, man-hours, etc)? I mean- it's an additional cost to handle such external entities in the cluster.

@miwithro
Copy link
Contributor

miwithro commented Feb 9, 2023

@szymonrychu

The Pinniped approach is currently the only option for AKS users who need this functionality.  It requires an extra "agent" on clusters, exactly in the same way as GKE's officially supported solution does.  Since Pinniped is not an officially supported solution, customers are responsible for its maintenance should they choose to use it. Many AKS features require extra pods to run on worker nodes, and, for now, the proposed approach requires that as well.  Customers are always responsible for the billing associated with these nodes.

@szymonrychu
Copy link

@miwithro yup, I can confirm, that GKE's official guide asks to deploy an operator to managed kubernetes so from that standpoint, the solution is not that different. https://cloud.google.com/kubernetes-engine/docs/how-to/oidc

What strikes me most is the difference in approach:

  1. In AWS the functionality is embodied into the management of the EKS and doesn't require anything extra to be deployed (this is something I would expect)
  2. In GKE it's expected to install an operator, but as I understand (e.g. based on name of the CRD), it's Google's "extension" documented, developed, tested and supported for their platform on their platform.
  3. Finally in Azure, it's expected to install 3rd party's solution and be dependent on their support, good will and or payment plan.

I just think, that after all this time waiting it's not the real solution we all been expecting- especially from 2nd biggest cloud provider (or the biggest one- depends on whom you would ask).

@aslamkhan-atlan
Copy link

Is the solution still to use third party?

@CocoWang-wql
Copy link
Contributor

Yep, it's still in the planning.

@PlagueHO
Copy link
Member

Are there any updates on this? It will allow our partners to simplify and improve auth into AKS.

@cailyoung
Copy link

Hi there, with Hashicorp's recent announcement of dynamic credentials for the Kubernetes provider this would be very very useful to have as a feature on our AKS clusters.

@PlagueHO
Copy link
Member

Hi @CocoWang-wql - I'm keen to determine if this is still being planned? It is preventing 3rd party providers from implementing OIDC support for auth to AKS.

@gigabytte
Copy link

This issue is getting very long in the tooth, any updates? Are we to assume this will just work in k8s 1.30 when released for AKS?

@CocoWang-wql
Copy link
Contributor

Yes, we start the design work this month. Hope to deliver it soon.

@Cryptophobia
Copy link

Cryptophobia commented Jun 28, 2024

We waited for four years for this feature. We can wait a little longer!

At this point, it is safe to say that we probably may need to re-evaluate if anyone really needs this feature. In fact, lots of the users here may have decided that it is no longer required for them. Based on waterfall project management, if the water falls for 4 years, the requirements pool has been muddied.

Are you sure you really want to support something that is supposed to be native to Kubernetes clusters? You should know better.

Let's have a public survey at the next AKS conference on who actually needs this.

/close

@keymon
Copy link

keymon commented Jun 28, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request Requested Features Feedback General feedback security
Development

No branches or pull requests