stackabletech / stackabletech/issues

Make authentication less dependent on cluster wide objects

Open
#854 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
2
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Description

Part of https://github.com/stackabletech/issues/issues/807

Authentication in SDP involves managing AuthenticationClass and SecretClass objects, among other things.

These are cluster wide objects that can usually only be created by cluster administators.

Users must reference secret/authentication classes in product manifests and are therefore dependent RBAC permissions that are not available to them on most organizational policies.

To resolve this dependency, we propose two backward compatible changes that, taken togehther would make it sufficient to implement authentication with namespaced objects only.

The changes:

  1. The first change is to add a new field to AuthenticationClass manifests. The field would be a reference to a Secret (namespaced) that can be used instead of the reference to the existing SecretClasses (cluster wide).

Example:

kind: AuthenticationClass
spec:
  provider:
    ldap:
      hostname: my.ldap.server 
      port: 389 
      searchBase: ou=users,dc=example,dc=org 
      bindCredentials:
        secretClass: openldap-bind-credentials
        # OR # <<< NEW COMPLEX ENUM
        secretName: openldap-bind-credentials # <<<< NEW FIELD
  1. The second change is to allow product manifests to inline authentication manifests instead of referncing cluster wide objects.
apiVersion: trino.stackable.tech/v1alpha1
kind: TrinoCluster
metadata:
  name: simple-trino
spec:
  clusterConfig:
    authentication:
      - authenticationClass: simple-trino-users
      - authenticationClass: my-openldap
      # OR <<< NEW COMPLEX ENUM
      - experimentalInlinedAuthenticationClass: # or maybe inlinedAuthenticationClass
          provider:
            static:
              userCredentialsSecret:
                name: trino-users
      - experimentalInlinedAuthenticationClass:
          provider:
            ldap: # ...

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the related issue 807, then review the AuthenticationClass and SecretClass manifest concepts and the TrinoCluster authentication examples in this issue. Map the affected product manifests and decide how both namespaced Secret references and inline authentication manifests can be added backward compatibly; done means the proposed authentication flows no longer require cluster-wide objects.

Written by the indexing model from the issue text.

Assessment

Tech stack
kubernetes
Domain
authentication
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.