I have updated the KIP based on the discussion in the KIP meeting today.

Comments and feedback are welcome.

On Wed, Feb 3, 2016 at 7:20 PM, Rajini Sivaram <rajinisiva...@googlemail.com
> wrote:

> Hi Harsha,
>
> Thank you for the review. Can you clarify - I think you are saying that
> the client should send its mechanism over the wire to the server. Is that
> correct? The exchange is slightly different in the KIP (the PR matches the
> KIP) from the one you described to enable interoperability with 0.9.0.0.
>
>
> On Wed, Feb 3, 2016 at 1:56 PM, Harsha <m...@harsha.io> wrote:
>
>> Rajini,
>>            I looked at the PR you have. I think its better with your
>>            earlier approach rather than extending the protocol.
>> What I was thinking initially is, Broker has a config option of say
>> sasl.mechanism = GSSAPI, PLAIN
>> and the client can have similar config of sasl.mechanism=PLAIN. Client
>> can send its sasl mechanism before the handshake starts and if the
>> broker accepts that particular mechanism than it can go ahead with
>> handshake otherwise return a error saying that the mechanism not
>> allowed.
>>
>> Thanks,
>> Harsha
>>
>> On Wed, Feb 3, 2016, at 04:58 AM, Rajini Sivaram wrote:
>> > A slightly different approach for supporting different SASL mechanisms
>> > within a broker is to allow the same "*security protocol*" to be used on
>> > different ports with different configuration options. An advantage of
>> > this
>> > approach is that it extends the configurability of not just SASL, but
>> any
>> > protocol. For instance, it would enable the use of SSL with mutual
>> client
>> > authentication on one port or different certificate chains on another.
>> > And
>> > it avoids the need for SASL mechanism negotiation.
>> >
>> > Kafka would have the same "*security protocols" *defined as today, but
>> > with
>> > (a single) configurable SASL mechanism. To have different configurations
>> > of
>> > a protocol within a broker, users can define new protocol names which
>> are
>> > configured versions of existing protocols, perhaps using just
>> > configuration
>> > entries and no additional code.
>> >
>> > For example:
>> >
>> > A single mechanism broker would be configured as:
>> >
>> > listeners=SASL_SSL://:9092
>> > sasl.mechanism=GSSAPI
>> > sasl.kerberos.class.name=kafka
>> > ...
>> >
>> >
>> > And a multi-mechanism broker would be configured as:
>> >
>> > listeners=gssapi://:9092,plain://:9093,custom://:9094
>> > gssapi.security.protocol=SASL_SSL
>> > gssapi.sasl.mechanism=GSSAPI
>> > gssapi.sasl.kerberos.class.name=kafka
>> > ...
>> > plain.security.protocol=SASL_SSL
>> > plain.sasl.mechanism=PLAIN
>> > ..
>> > custom.security.protocol=SASL_PLAINTEXT
>> > custom.sasl.mechanism=CUSTOM
>> > custom.sasl.callback.handler.class=example.CustomCallbackHandler
>> >
>> >
>> >
>> > This is still a big change because it affects the currently fixed
>> > enumeration of security protocol definitions, but one that is perhaps
>> > more
>> > flexible than defining every new SASL mechanism as a new security
>> > protocol.
>> >
>> > Thoughts?
>> >
>> >
>> > On Tue, Feb 2, 2016 at 12:20 PM, Rajini Sivaram <
>> > rajinisiva...@googlemail.com> wrote:
>> >
>> > > As Ismael has said, we do not have a requirement to support multiple
>> > > protocols in a broker. But I agree with Jun's observation that some
>> > > companies might want to support a different authentication mechanism
>> for
>> > > internal users or partners. For instance, we do use two different
>> > > authentication mechanisms, it just so happens that we are able to use
>> > > certificate-based authentication for internal users, and hence don't
>> > > require multiple SASL mechanisms in a broker.
>> > >
>> > > As Tao has pointed out, mechanism negotiation is a common usage
>> pattern.
>> > > Many existing protocols that support SASL do already use this
>> pattern. AMQP
>> > > (
>> > >
>> http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-security-v1.0-os.html#type-sasl-mechanisms
>> ),
>> > > which, as a messaging protocol maybe closer to Kafka in use cases than
>> > > Zookeeper, is an example. Other examples where the client negotiates
>> or
>> > > sends SASL mechanism to server include ACAP that is used as an
>> example in
>> > > the SASL RFCs, POP3, LDAP, SMTP etc. This is not to say that Kafka
>> > > shouldn't use a different type of mechanism selection that fits
>> better with
>> > > the existing Kafka design. Just that negotiation is a common pattern
>> and
>> > > since we typically turn on javax.net.debug to debug TLS negotiation
>> issues,
>> > > having to use Kafka logging to debug SASL negotiation issues is not
>> that
>> > > dissimilar.
>> > >
>> > >
>> > > On Tue, Feb 2, 2016 at 6:12 AM, tao xiao <xiaotao...@gmail.com>
>> wrote:
>> > >
>> > >> I am the author of KIP-44. I hope my use case will add some values
>> to this
>> > >> discussion. The reason I raised KIP44 is that I want to be able to
>> > >> implement a custom security protocol that can fulfill the need of my
>> > >> company. As pointed out by Ismael KIP-43 now supports a pluggable
>> way to
>> > >> inject custom security provider to SASL I think it is enough to
>> cover the
>> > >> use case I have and address the concerns raised in KIP-44.
>> > >>
>> > >> For multiple security protocols support simultaneously it is not
>> needed in
>> > >> my use case and I don't foresee it is needed in the future but as i
>> said
>> > >> this is my use case only there may be other use cases that need it.
>> But if
>> > >> we want to support it in the future I prefer to get it right at the
>> first
>> > >> place given the fact that security protocol is an ENUM and if we
>> stick to
>> > >> that implementation it is very hard to extend in the future when we
>> decide
>> > >> multiple security protocols is needed.
>> > >>
>> > >> Protocol negotiation is a very common usage pattern in security
>> domain. As
>> > >> suggested in Java SASL doc
>> > >>
>> > >>
>> http://docs.oracle.com/javase/7/docs/technotes/guides/security/sasl/sasl-refguide.html
>> > >> client
>> > >> first sends out a packet to server and server responds with a list of
>> > >> mechanisms it supports. This is very similar to SSL/TLS negotiation.
>> > >>
>> > >> On Tue, 2 Feb 2016 at 06:39 Ismael Juma <ism...@juma.me.uk> wrote:
>> > >>
>> > >> > On Mon, Feb 1, 2016 at 7:04 PM, Gwen Shapira <g...@confluent.io>
>> wrote:
>> > >> >
>> > >> > > Looking at "existing solutions", it looks like Zookeeper allows
>> > >> plugging
>> > >> > in
>> > >> > > any SASL mechanism, but the server will only support one
>> mechanism at
>> > >> a
>> > >> > > time.
>> > >> > >
>> > >> >
>> > >> > This was the original proposal from Rajini as that is enough for
>> their
>> > >> > needs.
>> > >> >
>> > >> >
>> > >> > > If this is good enough for our use-case (do we actually need to
>> > >> support
>> > >> > > multiple mechanisms at once?), it will simplify life a lot for
>> us (
>> > >> > >
>> > >>
>> https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zookeeper+and+SASL
>> > >> > )
>> > >> > >
>> > >> >
>> > >> > The current thinking is that it would be useful to support
>> multiple SASL
>> > >> > mechanisms simultaneously. In the KIP meeting, Jun mentioned that
>> > >> companies
>> > >> > sometimes support additional authentication mechanisms for
>> partners, for
>> > >> > example. It does make things more complex, as you say, so we need
>> to be
>> > >> > sure the complexity is worth it.
>> > >> >
>> > >> > Two more points:
>> > >> >
>> > >> > 1. It has been suggested that custom security protocol support is
>> > >> needed by
>> > >> > some (KIP-44). Rajini enhanced KIP-43 so that a SASL mechanism
>> with a
>> > >> > custom provider can be used for this purpose instead. Given this,
>> it
>> > >> seems
>> > >> > a bit inconsistent and restrictive not to allow multiple SASL
>> mechanisms
>> > >> > simultaneously (we do allow SSL and SASL authentication
>> simultaneously,
>> > >> > after all).
>> > >> >
>> > >> > 2. The other option would be to support a single SASL mechanism
>> > >> > simultaneously to start with and then extend this to multiple
>> mechanisms
>> > >> > simultaneously later (if and when needed). It seems like it would
>> be
>> > >> harder
>> > >> > to support the latter in the future if we go down this route, but
>> maybe
>> > >> > there are ways around this.
>> > >> >
>> > >> > Thoughts?
>> > >> >
>> > >> > Ismael
>> > >> >
>> > >>
>> > >
>> > >
>> > >
>> > > --
>> > > Regards,
>> > >
>> > > Rajini
>> > >
>> >
>> >
>> >
>> > --
>> > Regards,
>> >
>> > Rajini
>>
>
>
>
> --
> Regards,
>
> Rajini
>



-- 
Regards,

Rajini

Reply via email to