Just to update - still working on it. Get to work only on and off on it :( On Thu, Aug 8, 2019 at 4:05 PM Maulin Vasavada <maulin.vasav...@gmail.com> wrote:
> Hi Harsha > > Let me try to write samples and will let you know. > > Thanks > Maulin > > On Thu, Aug 8, 2019 at 4:00 PM Harsha Ch <harsha...@gmail.com> wrote: > >> Hi Maulin, >> With java security providers can be as custom you would like it >> to >> be. If you only want to to implement a custom way of loading the >> keystore and truststore and not implement any protocol/encryption handling >> you can leave them empty and no need to implement. >> Have you looked into the links I pasted before? >> >> https://github.com/spiffe/spiffe-example/blob/master/java-spiffe/spiffe-security-provider/src/main/java/spiffe/api/provider/SpiffeKeyStore.java >> >> https://github.com/spiffe/spiffe-example/blob/master/java-spiffe/spiffe-security-provider/src/main/java/spiffe/api/provider/SpiffeTrustManager.java >> >> https://github.com/spiffe/spiffe-example/blob/master/java-spiffe/spiffe-security-provider/src/main/java/spiffe/api/provider/SpiffeProvider.java >> >> Can you please tell me which methods are too complex in above to implement >> or unnecessary? You are changing anything in SSL/TLS implementations >> provided by >> >> All of the implementations delegating the checks to the default >> implementation anyway. >> Spire agent is an example, its nothing but a GRPC server listening on a >> unix domain socket . Above code is making a RPC call to the local daemon >> to >> get the certificate and keys. The mechanics are pretty much same as what >> you are asking for. >> >> Thanks, >> Harsha >> >> On Thu, Aug 8, 2019 at 3:47 PM Maulin Vasavada <maulin.vasav...@gmail.com >> > >> wrote: >> >> > Imagine a scenario like - We know we have a custom KMS and as a Kafka >> owner >> > we want to comply to using that KMS source to load keys/certs. As a >> Kafka >> > owner we know how to integrate with KMS but doesn't necessarily have to >> > know anything about cipher suites, algorithms, and SSL/TLS >> implementation. >> > Going the Provider way requires to know lot more than we should, isn't >> it? >> > Not that we would have concern/shy-away knowing those details - but if >> we >> > don't have to - why should we? >> > >> > On Thu, Aug 8, 2019 at 3:23 PM Maulin Vasavada < >> maulin.vasav...@gmail.com> >> > wrote: >> > >> > > Hi Harsha >> > > >> > > We don't have spire (or similar) agents and we do not have keys/certs >> > > locally on any brokers. To elaborate more on my previous email, >> > > >> > > I agree that Java security Providers are used in much broader sense - >> to >> > > have a particular implementation of an algorithm, use specific cipher >> > > suites for SSL , OR in our current team's case have a particular way >> to >> > > leverage pre-generated SSL sessions. However, the scope of our KIP >> (486) >> > is >> > > much restricted than that. We merely intend to provide a custom >> > > keystore/truststore for our SSL connections and not really worry about >> > > underlying specific SSL/TLS implementation. This simplifies it a lot >> for >> > > us to keep the concerns separate and clear. >> > > >> > > I feel our approach is more complimentary such that it allows for >> using >> > > keystores of choice while retaining the flexibility to use any >> > > underlying/available Provider for actually making the SSL call. >> > > >> > > We agree with KIP-492's approach based on Providers (and Java's >> > > recommendation), but also strongly believe that our approach can >> > compliment >> > > it very effectively for reasons explained above. >> > > >> > > Thanks >> > > Maulin >> > > >> > > On Thu, Aug 8, 2019 at 3:05 PM Harsha Chintalapani <ka...@harsha.io> >> > > wrote: >> > > >> > >> Hi Maulin, >> > >> >> > >> On Thu, Aug 08, 2019 at 2:04 PM, Maulin Vasavada < >> > >> maulin.vasav...@gmail.com> >> > >> wrote: >> > >> >> > >> > Hi Harsha >> > >> > >> > >> > The reason we rejected the SslProvider route is that - we only >> needed >> > a >> > >> > custom way to load keys/certs. Not touch any policy that existing >> > >> Providers >> > >> > govern like SunJSSE Provider. >> > >> > >> > >> >> > >> We have exactly the same requirements to load certs and keys through >> > spire >> > >> agent. We used security.provider to do that exactly. I am not sure >> why >> > you >> > >> would be modifying any policies provided by default SunJSSE provider. >> > Can >> > >> you give me an example of having custom provider that will override >> an >> > >> existing policy in SunJSSE provider. >> > >> >> > >> As pointed out earlier, this kip >> > >> >> > >> >> > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-492%3A+Add+java+security+providers+in+Kafka+Security+config >> > >> allows >> > >> you to load security.provider through config. >> > >> Take a look at the examples I gave before >> > >> >> > >> >> > >> https://github.com/spiffe/spiffe-example/blob/master/java-spiffe/spiffe-security-provider/src/main/java/spiffe/api/provider/SpiffeProvider.java >> > >> It registers KeyManagerFactory and TrustManagerFactory and Keystore >> > >> algorithm. >> > >> Implement your custom way of loading Keystore in here >> > >> >> > >> >> > >> https://github.com/spiffe/spiffe-example/blob/master/java-spiffe/spiffe-security-provider/src/main/java/spiffe/api/provider/SpiffeKeyStore.java >> > >> >> > >> and Trust manager like here >> > >> >> > >> >> > >> https://github.com/spiffe/spiffe-example/blob/master/java-spiffe/spiffe-security-provider/src/main/java/spiffe/api/provider/SpiffeTrustManager.java >> > >> >> > >> In your Kafka client you can set the security.provider to your >> custom >> > >> implementation and with this fix >> > >> https://issues.apache.org/jira/browse/KAFKA-8191 you can set >> > >> keyManagerAlgorigthm and trustManagerAlgorithm configs. >> > >> >> > >> All of this is in your clients and broker side and do not need to >> touch >> > >> any >> > >> policy changes at JVM level. You'll register the providers in the >> > priority >> > >> order and can still have SunJSSE provider and have your custom >> provider >> > to >> > >> implement the key and trust managers. >> > >> >> > >> >> > >> >> > >> The ask here is different than KIP-492. We don't have any need to >> > >> > modify/specify the algorithm parameter. Does that make sense? >> > >> > >> > >> >> > >> The ask in KIP is introducing new interfaces where the KIP's >> > >> goal/motivation can be achieved through the security.provider and we >> > >> worked >> > >> on similar goal without touching any Keystore or Truststore >> interfaces. >> > >> My advise is against changing or introducing new interfaces when it >> can >> > >> work through security.provider. >> > >> >> > >> Thanks, >> > >> Harsha >> > >> >> > >> >> > >> Thanks >> > >> > Maulin >> > >> > >> > >> > On Thu, Aug 8, 2019 at 7:48 AM Harsha Chintalapani < >> ka...@harsha.io> >> > >> > wrote: >> > >> > >> > >> > In your KIP you added security. provider as rejected alternative >> and >> > >> > specified "its not the correct way". Do you mind explaining why its >> > >> not? I >> > >> > didn't find any evidence in Java docs to say so. Contrary to your >> > >> statement >> > >> > it does say in the java docs >> > >> > " However, please note that a provider can be used to implement any >> > >> > security service in Java that uses a pluggable architecture with a >> > >> choice >> > >> > of implementations that fit underneath." >> > >> > >> > >> > Java Security Providers have been used by other projects to provide >> > such >> > >> > integration . I am not sure if you looked into Spiffe project to >> > >> > efficiently distribute certificates but here is an example of Java >> > >> provider >> > >> > >> > >> > https://github.com/spiffe/spiffe-example/blob/master/java-spiffe/ >> > >> > >> > >> >> > >> spiffe-security-provider/src/main/java/spiffe/api/provider/SpiffeProvider. >> > >> > java which >> > >> > obtains certificates from local daemons. >> > >> > These integrations are being used in Tomcat, Jetty etc.. We are >> also >> > >> using >> > >> > Security provider to do the same in our Kafka clusters. So unless I >> > see >> > >> > more evidence why security.provider doesn't work for you adding new >> > >> > interfaces while there exists more cleaner way of achieving the >> goals >> > of >> > >> > this KIP is unnecessary and breaks the well known security >> interfaces >> > >> > provided by Java itself. >> > >> > >> > >> > Thanks, >> > >> > Harsha >> > >> > >> > >> > On Thu, Aug 08, 2019 at 6:54 AM, Harsha Chintalapani < >> ka...@harsha.io >> > > >> > >> > wrote: >> > >> > >> > >> > Hi Maulin, >> > >> > Not sure if you looked at my previous replies. This >> > >> > >> > >> > changes >> > >> > >> > >> > are not required as there is already security Provider to do what >> you >> > >> are >> > >> > proposing. This KIP >> > https://cwiki.apache.org/confluence/display/KAFKA/ >> > >> > KIP-492%3A+Add+java+security+providers+in+Kafka+Security+config >> also >> > >> > addresses easy registration of such providers. >> > >> > >> > >> > Thanks, >> > >> > Harsha >> > >> > >> > >> > On Wed, Aug 07, 2019 at 11:31 PM, Maulin Vasavada >> > >> <maulin.vasavada@gmail. >> > >> > com> wrote: >> > >> > >> > >> > Bump! Can somebody please review this? >> > >> > >> > >> > On Tue, Jul 16, 2019 at 1:51 PM Maulin Vasavada < >> > >> > >> > >> > maulin.vasav...@gmail.com> >> > >> > >> > >> > wrote: >> > >> > >> > >> > Bump! Can somebody please review this? >> > >> > >> > >> > >> > >> >> > > >> > >> >