[keycloak-dev] File-based Vault implementation

Marek Posolda mposolda at redhat.com
Wed Aug 14 16:37:25 EDT 2019


On 14. 08. 19 12:08, Stian Thorgersen wrote:
> A client secret for a new OIDC client will not be stored in the vault 
> regardless. That would be something that we plan to encrypt in the 
> database.
Ok, I see now.
>
> Look at the use-case of an LDAP bind password for instance. The value 
> should be added directly to the vault, not through the Keycloak admin 
> console. If that's Kube it's Kube secrets using kubectl. If that's 
> HashiCorp vaut it's done with the CLI/GUI provided by that vault.

I see the point for LDAP bind password. For client secrets it is 
different due the use-cases like OIDC client registration. But since 
those are encrypted, we should be fine. Thanks for the clarification.

Marek

>
> On Wed, 14 Aug 2019 at 11:54, Marek Posolda <mposolda at redhat.com 
> <mailto:mposolda at redhat.com>> wrote:
>
>     On 14. 08. 19 11:21, Stian Thorgersen wrote:
>     > The issue we're primarily trying to solve here is that people
>     where not
>     > happy to find the LDAP bind password and SMTP password in
>     clear-text in the
>     > database. That's basically the most important thing we're trying
>     to solve
>     > now. So let's not go overboard here.
>     >
>     > Some pointers from me:
>     >
>     > For file based provider do multiple file approach only. That is
>     what we
>     > need for Kube and OpenShift.
>     >
>     > Do not worry about the secrets being clear-text in memory. The
>     best we can
>     > do here is reduce the window/chance and can't prevent it
>     completely. There
>     > is no need to add options as that just makes it more complex and
>     adds test
>     > cases.
>     >
>     > This will be used for SMTP password, LPAP bind and client
>     secrets for
>     > identity providers. That's it really for now. Realm keys are a
>     separate
>     > thing and already have support to implement custom stuff here
>     (such as
>     > loading keys from a vault, we already support keystore, or even
>     using an
>     > external HSM to prevent Keycloak ever having access to private
>     keys). For
>     > SMTP password and LDAP those needs to be cached in memory
>     regardless due to
>     > connection pooling so trying to be clever and not caching in the
>     vault
>     > provider won't mean the secrets are not available in clear text
>     in memory.
>     > For client secrets for identity providers actually those that
>     are paranoid
>     > shouldn't use client secrets, but rather use keys or certs for
>     enhanced
>     > security.
>     >
>     > We will not use Elytron SPIs internally in Keycloak. However, we
>     may if
>     > there is many vault providers available provide an vault
>     provider that can
>     > delegate to Elytron.
>     >
>     > I do not actually foresee that we will ever need write access to
>     the vault.
>     > As this is supposed to be used to inject secrets into Keycloak and I
>     > believe most proper vaults will have proper tools that admins
>     are used to
>     > that allows them to manage secrets and they wouldn't use
>     Keycloak admin
>     > console to add secrets to the vault regardless.
>
>     IMO having writable vault can be beneficial. It would mean that new
>     secrets can be written to the vault OOTB without any further actions
>     required from admin. For example when you register new OIDC
>     client, the
>     client secret won't be automatically written to the DB, but
>     instead the
>     file will be created by the file-vault and just the reference to the
>     vault will be written to the DB. So no further action will be
>     required
>     by admin and DB will never contain any secrets at any point of time,
>     which is good thing.
>
>     I understand that people may want to have their own vault
>     implementation
>     and manage secrets themselves, so the Vault SPI would need to have
>     a way
>     to specify whether vault is writable or read-only.
>
>     Marek
>
>     >
>     > In the future we plan to add another capability that allows us
>     to encrypt
>     > secrets at rest. That will enable encrypting secrets into the
>     database.
>     > It's primary purpose will be to encrypt user secrets, client
>     secrets,
>     > external tokens, etc. that are stored in the database.
>     >
>     >
>     >
>     > On Tue, 13 Aug 2019 at 16:02, Hynek Mlnarik <hmlnarik at redhat.com
>     <mailto:hmlnarik at redhat.com>> wrote:
>     >
>     >> HashiCorp might be the next one if there is enough interest in it.
>     >>
>     >> At this point, we need to have something simple and useful in
>     place so that
>     >> we can also test with it. This is the purpose of Kubernetes /
>     file-based
>     >> plaintext vault. There could be space for one more OOTB
>     implementation like
>     >> HashiCorp. Feel free to comment on pros/cons just the same as
>     we have with
>     >> Elytron Vault earlier in this thread.
>     >>
>     >> --Hynek
>     >>
>     >> On Tue, Aug 13, 2019 at 3:00 PM Pedro Igor Silva
>     <psilva at redhat.com <mailto:psilva at redhat.com>>
>     >> wrote:
>     >>
>     >>> On Mon, Aug 12, 2019 at 11:43 PM Sebastian Laskawiec <
>     >> slaskawi at redhat.com <mailto:slaskawi at redhat.com>>
>     >>> wrote:
>     >>>
>     >>>> Writing anything by a running Pod is very tricky. In theory
>     you could
>     >>> use a
>     >>>> Persistent Volume but this doesn't work with Secrets very
>     well. So at
>     >>> least
>     >>>> in Kubernetes/OpenShift scenario, having a read-only vault and
>     >> delegating
>     >>>> manipulating vault's secrets to the environment is the most
>     natural way
>     >>> to
>     >>>> tackle this.
>     >>>>
>     >>> It seems that a lot of people is using the Vault by HashiCorp
>     to manage
>     >>> k8s/app sensitive data such as credentials. How useful a
>     file-based vault
>     >>> would be if you are already using HashiCorp ?
>     >>>
>     >>> I think there is an ongoing work in Quarkus to support
>     HashiCorp's Vault.
>     >>> Maybe it is worthy to consider it or maybe wait for KC.Next :)
>     >>> _______________________________________________
>     >>> keycloak-dev mailing list
>     >>> keycloak-dev at lists.jboss.org <mailto:keycloak-dev at lists.jboss.org>
>     >>> https://lists.jboss.org/mailman/listinfo/keycloak-dev
>     >>>
>     >> _______________________________________________
>     >> keycloak-dev mailing list
>     >> keycloak-dev at lists.jboss.org <mailto:keycloak-dev at lists.jboss.org>
>     >> https://lists.jboss.org/mailman/listinfo/keycloak-dev
>     >>
>     > _______________________________________________
>     > keycloak-dev mailing list
>     > keycloak-dev at lists.jboss.org <mailto:keycloak-dev at lists.jboss.org>
>     > https://lists.jboss.org/mailman/listinfo/keycloak-dev
>
>



More information about the keycloak-dev mailing list