Skip to content

Reduce System Account Coupling #260

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

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft

Reduce System Account Coupling #260

wants to merge 1 commit into from

Conversation

spjmurray
Copy link
Contributor

@spjmurray spjmurray commented May 15, 2025

We define a single system account role that is used by (at present) the Kubernetes and Compute services. This has a few drawbacks: first you have to modify identity to enable new functionality in either of those services, and secondly you may inadvertently give away permissions that aren't strictly necessary.

What this does is allows each service to define a SystemAccount resource in their own Helm chart, linked to their own role. It also means 3rd party services can define all their own stuff in situ without having to tell the Identity service about itself, or know where the Identity service lives in order to install custom roles.

Security wise, anyone who can create a certificate, role and system account can then issue a token to do what they want, so I guess limiting who can do those operations brings security, or perhaps having a PSK to validate the resource is trusted via the PSK. Prior to this a user would have to issue a certificate, create a role (or just reference the uber user one - perhaps we should grant this implicitly via a magical *.* ACL) and modify the identity deployment. So perhaps backward a little bit, but it does offer operational and development benefits.

@spjmurray spjmurray requested a review from squaremo May 15, 2025 13:47
@spjmurray
Copy link
Contributor Author

See what you make of this... sister pulls exist in nscaledev/uni-kubernetes#244 and nscaledev/uni-compute#62

We define a single system account role that is used by (at present) the
Kubernetes and Compute services.  This has a few drawbacks: first you
have to modify identity to enable new functionality in either of those
services, and secondly you may inadvertently give away permissions that
aren't strictly necessary.

What this does is allows each service to define a SystemAccount resource
in their own Helm chart, linked to their own role.  It also means 3rd
party services can define all their own stuff in situ without having to
tell the Identity service about itself, or know where the Identity
service lives in order to install custom roles.

Security wise, anyone who can create a certificate, role and system
account can then issue a token to do what they want, so I guess limiting
who can do those operations brings security, or perhaps having a PSK to
validate the resource is trusted via the PSK.  Prior to this a user would
have to issue a certificate, create a role (or just reference the uber
user one - perhaps we should grant this implicitly via a magical *.* ACL)
and modify the identity deployment.  So perhaps backward a little bit,
but it does offer operational and development benefits.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant