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

Feature: Manage Azure AD resources (f.e. Applications) #2474

Open
mwieczorek opened this issue Aug 29, 2022 · 22 comments
Open

Feature: Manage Azure AD resources (f.e. Applications) #2474

mwieczorek opened this issue Aug 29, 2022 · 22 comments
Labels
cx-request Requests from customers received through non-GitHub channels high-priority Issues we intend to prioritize (security, outage, blocking bug) new-feature new-resource Requests for new supported resources

Comments

@mwieczorek
Copy link

This is more a general question:
Is there a plan (or would it be at least considered) to manage Azure AD resources (f.e. Applications) with azure-service-operator?

more context for my question:
As part of exposing services with Gloo Edge, we can enable 'OAuth extension': https://docs.solo.io/gloo-edge/latest/guides/security/auth/extauth/oauth/
To configure that we need Azure AD Application, with its clientId/clientSecret.
For now, it's possible to create AAD App 'outside' of K8s and pass credentials (as k8s secret).

If azure-service-operator provided a way to provision those resources (Application, credentials), it would be easier to automate such deployment scenario.

@theunrepentantgeek
Copy link
Member

We already have a support for a small number of non-ARM resources (e.g. User for MySQL), so I think it's within scope to consider more.

It would be useful to know which specific AAD objects (in addition to Application) that you'd be interested in seeing ASO support.

@mwieczorek
Copy link
Author

Thanks @theunrepentantgeek for the reply.
That's awesome news.
For my use case, I'd need Application and ApplicationCredentials resources. Should I create separate issues for both where we can continue the discussion?

@mwieczorek
Copy link
Author

Going into more details for my use-case:

I was thinking about separate resources for Application and ApplicationCredentials - I won't need multiple creds objects per app, but to not restrict it for others I proposed separate CRDs.

For Application I'd like to be able to set basic properties (f.e. redirectUri, type of tokens it should support, signInAudience, resourceAccess - f.e. to provide standard MS Graph permissions required in oidc flow)

For ApplicationCredentials CRD, I'd need support only for 'secrets' (but of course, I assume certificates and federatedCredentials type of Credentials could also be supported in the future). for generated credentials, I'd like to be able to specify k8s secret details (like name, type - required in my use-case, where I need type: extauth.solo.io/oauth) where the clientSecret from AAD App will be stored

I'd like to have auto-rotation of those secrets in AAD with an update of k8s secret.

I'd like to also be able to store clientId for generated credentials in k8s secret.

Of course, I can gather those details and propose a schema in separate issues. Also, I'm happy to contribute if we agree on it.

@theunrepentantgeek
Copy link
Member

I think we can keep the discussion here for the moment. I'll ensure we discuss this topic at our next weekly sync meeting.

@theunrepentantgeek theunrepentantgeek added this to the v2.0.0-beta.4 milestone Aug 31, 2022
@matthchr matthchr added new-resource Requests for new supported resources and removed needs-triage 🔍 labels Sep 6, 2022
@mwieczorek
Copy link
Author

@theunrepentantgeek - can you share "weekly sync meeting" discussion outcomes?

@theunrepentantgeek
Copy link
Member

Apologies, I should have updated back here after that meeting.

My colleagues agreed that these additional resources would be worth adding to ASO and that my initial triaging of it into the beta.4 milestone was appropriate. (We're currently working on the beta.3 release.)

One of our goals for ASO is to make it easier to deploy things when there are multiple moving parts, so this is in alignment.

The design document in #2489 (written by @matthchr) goes into some of the work we're doing in this space.

(FWIW, there's nothing super secret or particularly interesting about our weekly sync. We look at our project board to discuss both recently-completed and in-progress work, triage new issues, and review old ones.)

@mrmartan
Copy link

FYI there is https://azure.github.io/azure-workload-identity/docs/introduction.html which is capable to provision access tokens via kubernetes ServiceAccounts. It requires an existing AAD app registration. So it seems to me that by combining that with ASO, ASO only needs the capability to create app registrations, etc. that would be then consumed by Azure Workload Identity.

@mwieczorek
Copy link
Author

Thanks @mrmartan
In my use case, I need also App Registration secrets as those are required in configuring external services for OIDC flows.

@theunrepentantgeek - thanks for the update. I understand that bringing AAD resources to ASO needs preparation/design that's easier to do within your team. But if I can help and contribute anyhow - let me know.
Do you have any rough timeline for beta.4 milestone? (of course I fully understand if you don't want to provide any dates, in my case I'll probably create a simple controller tailored just for my use case and then 'migrate' to ASO when it's ready)

@theunrepentantgeek
Copy link
Member

We don't have any firm dates, not even internal ones.

Our intention is to have a release out every couple of months, but we expect beta.3 to be delayed as we're merging a complex change related to Swagger.

Also, the beta.4 milestone currently has way too much in it, so we're going to have to triage. That said, improving our support for AAD in particular has come up multiple times, so I'd expect that to be nearer the head of the list.

@matthchr
Copy link
Member

Need for AAD RoleAssignments has come up recently as well.

Terraform supports this: https://registry.terraform.io/providers/hashicorp/azuread/latest/docs/resources/directory_role

There's a Go SDK to do this in the msgraph-sdk-go

@abebars
Copy link

abebars commented Feb 16, 2023

@theunrepentantgeek I just saw that Beta4 was out, but I can't find the new resource for the application there. Any update on the timeline?

@theunrepentantgeek
Copy link
Member

We've triaged this into our schedule for v2.1.0 which will be following our upcoming v2.0.0 GA release.

@theunrepentantgeek theunrepentantgeek modified the milestones: v2.3.0, v2.2.0 May 31, 2023
@matthchr matthchr modified the milestones: v2.2.0, v2.3.0 Jul 6, 2023
@matthchr matthchr modified the milestones: v2.4.0, v2.3.0 Jul 24, 2023
@danielkimuipath
Copy link

Hi, is there any update on this? Also, is this feature going to handle the Graph permission assignment as well? We'd like to grant graph permission to enterprise applications using ASO, but I am not sure if there will be a feature that supports the scenario. thanks!

@matthchr
Copy link
Member

matthchr commented Jun 13, 2024

I just had another customer ask me about this, it seems like a common ask we should be resourcing. Pulling it into 2.9.0 to force a discussion about if/how we can do this.

@matthchr matthchr added this to the v2.9.0 milestone Jun 13, 2024
@matthchr matthchr removed this from the v2.9.0 milestone Jul 1, 2024
@matthchr matthchr added this to the v2.10.0 milestone Jul 17, 2024
@matthchr
Copy link
Member

re-added needs triage, let's discuss where we can fit this in or at least what a design might be.

@matthchr
Copy link
Member

We'll need to decide what resources we want to support. Terraform has a good list here: https://registry.terraform.io/providers/hashicorp/azuread/latest/docs/resources/application

Do we do groups? Do we just do applications? What types of applications do we support - for example the most interesting is probably something like SNI, but that also may be the most complicated to set up.

@matthchr matthchr added high-priority Issues we intend to prioritize (security, outage, blocking bug) and removed needs-triage 🔍 labels Jul 29, 2024
@matthchr matthchr modified the milestones: v2.10.0, v2.11.0 Aug 27, 2024
@matthchr matthchr modified the milestones: v2.11.0, v2.12.0 Oct 28, 2024
@old-guy-coder
Copy link

This is getting quite an urgent requirement for us, we are constantly hitting the 2000 Role Assignment per subscription limit and this would help us to mitigate that in a big way by allowing use to assign managed identities to groups that have the role assignment (f.e. we could reduce 28+ role assignments in one environment down to 1 role assignment). We are already going through an creating custom roles to reduce the assignments but this is leaving us with custom roles that have broader permissions and goes against the principals of least privilege.

Any chances that this could get bumped to an earlier milestone since already labelled as high-priority?

@theunrepentantgeek theunrepentantgeek modified the milestones: v2.12.0, v2.13.0 Nov 18, 2024
@theunrepentantgeek theunrepentantgeek added needs-triage 🔍 cx-request Requests from customers received through non-GitHub channels labels Nov 20, 2024
@theunrepentantgeek theunrepentantgeek modified the milestones: v2.13.0, v2.12.0 Nov 20, 2024
@theunrepentantgeek
Copy link
Member

Currently tagged for v2.12 (February 2025), we should try to make a priority of this.

@matthchr
Copy link
Member

Cataloging the set of resources that have been requested, from what I can tell:

This isn't going to happen for 2.12, as much of the development time for that release has passed while we were away due to holidays/vacations/etc.

We're moving this to 2.13 but acknowledging that there is a lot of interest in this, and we're committing to get at least some of the above resources in for that release. The more the better, but if we can blaze the trail to do at least some (maybe Groups first?) it puts us in a much better position to get them all done.

@matthchr matthchr modified the milestones: v2.12.0, v2.13.0 Jan 21, 2025
@theunrepentantgeek theunrepentantgeek moved this from Backlog to Up Next in Azure Service Operator Roadmap Feb 10, 2025
@theunrepentantgeek theunrepentantgeek removed this from the v2.13.0 milestone Feb 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cx-request Requests from customers received through non-GitHub channels high-priority Issues we intend to prioritize (security, outage, blocking bug) new-feature new-resource Requests for new supported resources
Projects
Development

No branches or pull requests

8 participants