-
-
Notifications
You must be signed in to change notification settings - Fork 15
New AuthenticationClass provider: static #494
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
Comments
This is tricky... Ideally we'd only store the passwords in a hashed form, but that assumes that every service uses the same hashing scheme. Additionally, PBKDFs are nondeterministic and slow, so we'd need a strategy of some kind to figure out when to regenerate downstream credential files... |
Yeah, i think we have multiple products such as Superset admin user that need the credentials in plain text. |
The problem with consistent hashing remains. I see the following (non-exhausting) options:
|
Just to keep it in mind: One result of your refinement could be to just not do it now |
Further refined the ticket, would present it after daily (thus blocking it). |
Presented after daily |
This doesn't need docs because it's only in the framework for now, right? |
I would say this needs docs. We should document |
I've made a ticket stackabletech/documentation#311 |
OpenSearch can use a configuration file with statically defined users, see https://github.com/opensearch-project/security/blob/2.4/config/internal_users.yml:
If the secret for the AuthenticationClass would allow arbitrary metadata per user then the internal users for OpenSearch could also be generated. |
Do you already have a idea how we can represent this in k8s Secrets? |
@sbernauer and I talked about integrating metadata into the secret. We concluded to implement the ticket as it is for now because a custom structure in the secret would be difficult to use and the OpenSearch use case is not urgent. |
Passwords are best stored encrypted, not hashed. Hashing doesn't work for multiple reasons (e.g. salting not possible). This is a solved problem: sealed secrets. The solution is a little bit heavyweight, but I think this could solve your problem ? Either mimic their solution, or use sealed secrets directly ? The controller is available separately from the rest of their stack. Making your controller watch for sealed secrets (label them ?) would do the trick ? |
Hi @Pscheidl thanks for your suggestion! My questions would be, if that aligns with your understanding of the current approach? Do you have any additional requirements or ideas? |
Hello @sbernauer , definitely no additional ideas, if sealed secrets can be used with the current approach, then there's nothing more to wish for 😉 . |
We have multiple products (e.g. Trino) that can take a list of usernames + passwords and authenticate users against that list (see https://trino.io/docs/current/security/password-file.html)
Trino e.g. takes a list of bcrypt passwords.
We need an standardized way to express such list of usernames + passwords. We already have the standardized AuthenticationClass, so we want a new provider 'static'
The only possible problem is that the
AuthenticationClass
is cluster-scoped and Secrets are namespaced.It might be the case that the current solution has the downside that the
userCredentialsSecret
needs to be in the same Namespace as the Product using it (Secrets can't be mounted cross-namespace). A solution could be the cluster-scoped SecretClass but that introduces complexityThe text was updated successfully, but these errors were encountered: