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: privileged annotations and labels for API providers #2123

Open
1 task
maleck13 opened this issue Oct 4, 2022 · 3 comments
Open
1 task

feature: privileged annotations and labels for API providers #2123

maleck13 opened this issue Oct 4, 2022 · 3 comments
Labels
kind/feature Categorizes issue or PR as related to a new feature.

Comments

@maleck13
Copy link

maleck13 commented Oct 4, 2022

Feature Description

Priority Low
APIExports allow us to express permissions over exported API resources, however it can be the case that the provider of the API also leverages labels and annotations as part of providing the API and places those on the claimed objects. It would be useful to be able to declare a set of annotations and labels that may be applied to a resource claimed via the permission claim that cannot be modified by the end user while the APIBinding is in place.

One concern with this is ensuring it is a scalable solution.

Proposed Solution

As part of an APIExport, I declare a set of annotations/labels that I am going to use on claimed resources that an end user cannot modify (may want to allow deletion but nothing else).

Alternative Solutions

No response

Want to contribute?

  • I would like to work on this issue.

Additional Context

No response

@maleck13 maleck13 added the kind/feature Categorizes issue or PR as related to a new feature. label Oct 4, 2022
@sttts
Copy link
Member

sttts commented Oct 4, 2022

this reminds me of the upstream discussion about finegrained metadata field permissions, e.g. to add finalizers. cc @s-urbaniak

@stevekuznetsov
Copy link
Contributor

@maleck13 is it important to allow users to mutate the rest of these objects, but not some particular annotation? Can a more coarse-grained implementation where the provider (and only the provider) is able to mutate any part of the object suffice?

@maleck13
Copy link
Author

maleck13 commented Oct 5, 2022

It is important users can mutate the rest of the object. The best example I have actually comes from KCP. There are several currently experimental annotations used by the syncer when supporting TMC that reflect status and a transformed spec.
"experimental.spec-diff.workload.kcp.dev/" etc this should be tightly controlled and I believe they will be, but it is likely that API Providers will also have important annotations they they want to use to "enhance" an existing API such as ingress etc but want some of these values to be protected and only settable by the controller providing the API.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature Categorizes issue or PR as related to a new feature.
Projects
Status: New
Development

No branches or pull requests

3 participants