Ismael,

2) I left out MD5 because it is insecure, but thought of keeping SHA-1
since it is supported by most services that support SCRAM today. Since
there is no actual requirement to support SHA-1 and we don't really want to
store credentials in Zookeeper using SHA-1, it makes sense not to support
SHA-1. Will update the KIP. Thanks.

On Thu, Nov 3, 2016 at 1:25 PM, Ismael Juma <isma...@gmail.com> wrote:

> Hi all,
>
> I'm currently with limited internet access so I have not done a proper
> review of the KIP, my apologies. A couple of thoughts:
>
> 1. I agree with Rajini and I don't see the value in bumping the protocol
> version in this case. As Rajini said, the enabled mechanisms are
> independent of the broker version. If and when we have a feature API, we
> can consider exposing it that way.
>
> 2. Do we really want to support sha1? The security of it has been
> questioned and the general recommendation is to avoid it these days.
>
> Ismael
>
> On 3 Nov 2016 6:51 am, "Rajini Sivaram" <rajinisiva...@googlemail.com>
> wrote:
>
> > I don't have a strong objection to bumping up SaslHandshakeRequest
> version,
> > though I am still not convinced of the usefulness. I do agree that KIP-35
> > should be standard way to determine client/broker compatibility. But I am
> > not sure ApiVersionsRequest is a good fit for clients to choose a SASL
> > mechanism.
> >
> >    1. SaslHandshakeRequest is the only way a client can figure out if a
> >    SASL mechanism is actually enabled in the broker. The fact that broker
> >    version n supports SCRAM doesn't imply that a broker of version n
> > actually
> >    has the mechanism enabled. Since enabling a mechanism involves some
> > effort
> >    like installing an authentication server and/or configuring
> credentials,
> >    SASL mechanisms are a feature of a broker installation very unlike
> >    versions.  As you said, "features" would have worked better.
> >    2. New SASL mechanisms can be added to older Kafka broker versions.
> With
> >    some tweaking, the SCRAM implementation from KIP-84 can be enabled in
> a
> >    0.10.0 broker without changing any broker code. KIP-86 would make this
> > even
> >    easier, but it is already possible to add new or custom mechanisms to
> >    existing broker versions. A client using ApiVersionsRequest to choose
> a
> >    SASL mechanism is only checking when a mechanism was included in a
> > broker
> >    release, not the "capability" of a broker to support the mechanism. I
> am
> >    not sure we should encourage clients to choose mechanisms based on
> > versions.
> >    3. Clients need additional configuration based on the chosen
> mechanism.
> >    One of the reasons I couldn't see any value in using
> ApiVersionsRequest
> > in
> >    the Java client was because clients are configured with a single SASL
> >    mechanism and a JAAS configuration corresponding to that mechanism.
> If a
> >    client wants to choose between Kerberos and SCRAM, the client would
> need
> >    keytab/principal for kerberos and username/password for SCRAM. Clients
> > that
> >    possess multiple credentials without knowing what the broker supports
> -
> >    that sounds like a rather unusual scenario.
> >    4. For some mechanisms, clients may want to choose mechanism at
> runtime.
> >    For example, a client is configured with username/ password and wants
> to
> >    choose between SCRAM-SHA-1/SCRAM-SHA-256/PLAIN depending on which
> >    mechanisms are enabled in the broker. To choose between SCRAM-SHA-1
> and
> >    SCRAM-SHA-256, clients have to use SaslHandshakeRequest since they
> were
> >    added in the same version. To choose between PLAIN and SCRAM-SHA-256,
> a
> >    versions based approach would work, but wouldn't it be better for
> > clients
> >    to rely on just SaslHandshakeRequest rather than
> >    ApiVersionsRequest+SaslHandshakeRequest so that the solution works in
> > all
> >    scenarios?
> >
> >
> >
> >
> > On Thu, Nov 3, 2016 at 4:33 AM, Ewen Cheslack-Postava <e...@confluent.io
> >
> > wrote:
> >
> > > I think the bump isn't strictly required, but if the client is KIP-35
> > > aware, it can proactively choose a compatible SASL mechanism based on
> its
> > > initial ApiVersionRequest and avoid an extra connection round trip when
> > > there are client/broker version differences. Without this, a newer
> client
> > > would have to do 2 set of requests since the first SASL mechanism might
> > not
> > > be compatible.
> > >
> > > I don't think this is a deal breaker, but I do think it would be good
> to
> > > just standardize on KIP-35 as the way we figure out client/broker
> > > compatibility. The SASL stuff happened in parallel (maybe before?)
> KIP-35
> > > and ended up with its own mechanism, but I'm in favor of trying to
> > simplify
> > > everything by centralizing those considerations into a single API call.
> > (By
> > > the way, dredging up now ancient history in the KIP-35 discussion, this
> > is
> > > also why "features" vs "API version" is relevant. If we wanted to
> > configure
> > > a newer broker to disable SASL mechanisms we no longer want to allow
> use
> > > of, this isn't really possible to express via API versions unless we
> also
> > > explicitly add an API version that doesn't support that mechanism
> whereas
> > > features would make this easier to toggle on/off. The
> > SaslHandshakeRequest
> > > probably makes it easier to keep thing secure compared to the current
> > state
> > > of ApiVersionRequest).
> > >
> > > -Ewen
> > >
> > > On Tue, Nov 1, 2016 at 2:09 PM, Rajini Sivaram <
> > > rajinisiva...@googlemail.com
> > > > wrote:
> > >
> > > > Gwen,
> > > >
> > > > I had thought the same too and hence I am assuming that Java clients
> > > could
> > > > simply use SaslHandshakeRequest. SaslHandshakeRequest returns the
> list
> > of
> > > > mechanisms enabled in the broker. I think Jun's point was that by
> > > > incrementing the version of SaslHandshakeRequest, clients can use
> > > > ApiVersionsRequest to figure out the mechanisms the broker is capable
> > of
> > > > supporting and use that information to choose a mechanism to send in
> > > > SaslHandshakeRequest. Not sure how useful this actually is, so will
> > wait
> > > > for Jun's response.
> > > >
> > > >
> > > >
> > > > On Tue, Nov 1, 2016 at 8:18 PM, Gwen Shapira <g...@confluent.io>
> > wrote:
> > > >
> > > > > Wait, I thought SaslHandshakeResponse includes a list of mechanisms
> > > > > supported, so I'm not sure why we need to bump the version?
> > > > >
> > > > > I expect clients will send SaslHandshakeRequest_V0, see which
> > > mechanisms
> > > > > are supported and make a call based on that? Which means KIP-35 is
> > not
> > > > > required in that case? Am I missing something?
> > > > >
> > > > > On Tue, Nov 1, 2016 at 1:07 PM, Rajini Sivaram <
> > > > > rajinisiva...@googlemail.com
> > > > > > wrote:
> > > > >
> > > > > > Jun,
> > > > > >
> > > > > > I have added the following text to the KIP. Does this match your
> > > > > > expectation?
> > > > > >
> > > > > > *SaslHandshakeRequest version will be increased from 0 to 1 so
> that
> > > > > clients
> > > > > > can determine if the broker is capable of supporting SCRAM
> > mechanisms
> > > > > using
> > > > > > ApiVersionsRequest. Java clients will not be updated to use
> > > > > > ApiVersionsRequest to choose SASL mechanism under this KIP. Java
> > > > clients
> > > > > > will continue to use their configured SASL mechanism and will
> fail
> > > > > > connection if the requested mechanism is not enabled in the
> > broker.*
> > > > > >
> > > > > > Thank you,
> > > > > >
> > > > > > Rajini
> > > > > >
> > > > > > On Tue, Nov 1, 2016 at 4:54 PM, Jun Rao <j...@confluent.io>
> wrote:
> > > > > >
> > > > > > > Hi, Rajini,
> > > > > > >
> > > > > > > One more thing. It seems that we should bump up the version of
> > > > > > > SaslHandshakeRequest? This way, the client can figure out which
> > > SASL
> > > > > > > mechanisms the broker is capable of supporting through
> > > > > ApiVersionRequest.
> > > > > > > We discussed this briefly as part of KIP-43.
> > > > > > >
> > > > > > > Thanks,
> > > > > > >
> > > > > > > Jun
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On Tue, Nov 1, 2016 at 7:41 AM, Rajini Sivaram <
> > > > > > > rajinisiva...@googlemail.com
> > > > > > > > wrote:
> > > > > > >
> > > > > > > > If there are no more comments, I will start vote on this KIP
> > > later
> > > > > this
> > > > > > > > week. In the meantime, please feel free to post any feedback
> or
> > > > > > > > suggestions. Initial implementation is here:
> > > > > > > > https://github.com/apache/kafka/pull/2086.
> > > > > > > >
> > > > > > > > Thank you,
> > > > > > > >
> > > > > > > > Rajini
> > > > > > > >
> > > > > > > > On Thu, Oct 27, 2016 at 11:18 AM, Rajini Sivaram <
> > > > > > > > rajinisiva...@googlemail.com> wrote:
> > > > > > > >
> > > > > > > > > Jun,
> > > > > > > > >
> > > > > > > > > 4) Agree, it does make the implementation simpler. Updated
> > KIP.
> > > > > > > > > 5) Thank you, that looks neater. Updated KIP.
> > > > > > > > >
> > > > > > > > > On Wed, Oct 26, 2016 at 6:59 PM, Jun Rao <j...@confluent.io
> >
> > > > wrote:
> > > > > > > > >
> > > > > > > > >> Hi, Rajini,
> > > > > > > > >>
> > > > > > > > >> Thanks for the reply.
> > > > > > > > >>
> > > > > > > > >> 4. Implementation wise, it seems to me that it's simpler
> to
> > > read
> > > > > > from
> > > > > > > > the
> > > > > > > > >> cache than reading directly from ZK since the config
> manager
> > > > > already
> > > > > > > > >> propagates all config changes through ZK. Also, it's
> > probably
> > > a
> > > > > good
> > > > > > > > idea
> > > > > > > > >> to limit the places in the code base that directly
> accesses
> > > ZK.
> > > > > > > > >>
> > > > > > > > >> 5. Yes, it seems that it makes sense to add the new SCRAM
> > > > > > > configurations
> > > > > > > > >> to
> > > > > > > > >> the existing /config/users/<encoded-user>. I am not sure
> how
> > > one
> > > > > > would
> > > > > > > > >> remove the SCRAM configurations in the example though
> since
> > > the
> > > > > > > > properties
> > > > > > > > >> specified in add-config is not the ones actually being
> > stored.
> > > > An
> > > > > > > > >> alternative is to doing sth like the following. It may
> still
> > > > feel
> > > > > a
> > > > > > > bit
> > > > > > > > >> weird and I am wondering if there is a clearer approach.
> > > > > > > > >>
> > > > > > > > >> bin/kafka-configs.sh --zookeeper localhost:2181 --alter
> > > > > --add-config
> > > > > > > > >> 'scram_sha-256=[password=alice-secret,iterations=4096],
> > > > > scram_sha-1=
> > > > > > > > >> [password=alice-secret,iterations=4096]' --entity-type
> > users
> > > > > > > > >> --entity-name
> > > > > > > > >> alice
> > > > > > > > >>
> > > > > > > > >> bin/kafka-configs.sh --zookeeper localhost:2181 --alter
> > > > > > > --delete-config
> > > > > > > > >> 'scram_sha-256,scram_sha-1' --entity-type users
> > --entity-name
> > > > > alice
> > > > > > > > >>
> > > > > > > > >> Thanks,
> > > > > > > > >>
> > > > > > > > >> Jun
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >> On Wed, Oct 26, 2016 at 4:35 AM, Rajini Sivaram <
> > > > > > > > >> rajinisiva...@googlemail.com> wrote:
> > > > > > > > >>
> > > > > > > > >> > Hi Jun,
> > > > > > > > >> >
> > > > > > > > >> > Thank you for reviewing the KIP. Answers below:
> > > > > > > > >> >
> > > > > > > > >> >
> > > > > > > > >> >    1. Yes, agree, Updated KIP.
> > > > > > > > >> >    2. User specifies a password and iteration count.
> > > > > > kaka-configs.sh
> > > > > > > > >> >    generates a random salt and then generates StoredKey
> > and
> > > > > > > ServerKey
> > > > > > > > >> for
> > > > > > > > >> > that
> > > > > > > > >> >    password using the same message formatter
> > implementation
> > > > used
> > > > > > for
> > > > > > > > >> SCRAM
> > > > > > > > >> >    authentication. I have added some more detail to the
> > KIP
> > > (
> > > > > > > > >> >    https://cwiki.apache.org/
> confluence/display/KAFKA/KIP-
> > > > > > > > >> > 84%3A+Support+SASL+SCRAM+mechanisms#KIP-84:
> > > > > > > > SupportSASLSCRAMmechanisms-
> > > > > > > > >> > Tools).
> > > > > > > > >> >    Does that answer the question?
> > > > > > > > >> >    3. I started off thinking just one (SCRAM-SHA-256)
> and
> > > then
> > > > > > > thought
> > > > > > > > >> >    another one is required to make sure that the
> > > > implementation
> > > > > > can
> > > > > > > > cope
> > > > > > > > >> > with
> > > > > > > > >> >    multiple SCRAM mechanisms. But actually you are
> right,
> > we
> > > > can
> > > > > > > > support
> > > > > > > > >> > all.
> > > > > > > > >> >    I haven't added the old md2/md5 mechanisms that
> aren't
> > > very
> > > > > > > secure,
> > > > > > > > >> but
> > > > > > > > >> > I
> > > > > > > > >> >    have included all the SHA algorithms.
> > > > > > > > >> >    4. Since credentials are only required when a
> > connection
> > > is
> > > > > > made,
> > > > > > > > it
> > > > > > > > >> >    feels like we can just read the latest value from ZK
> > > rather
> > > > > > than
> > > > > > > > >> cache
> > > > > > > > >> > all
> > > > > > > > >> >    users and keep them updated. Having said that, we can
> > > > always
> > > > > > add
> > > > > > > > >> caching
> > > > > > > > >> >    later if we find that the overhead of reading from ZK
> > > every
> > > > > > time
> > > > > > > is
> > > > > > > > >> too
> > > > > > > > >> >    expensive. Since caching doesn't change any
> externals,
> > > this
> > > > > can
> > > > > > > be
> > > > > > > > >> done
> > > > > > > > >> > in
> > > > > > > > >> >    a JIRA later - would that be ok?
> > > > > > > > >> >    5. Thanks, updated. I have changed the property names
> > to
> > > > > > include
> > > > > > > > >> >    mechanism. To avoid four separate properties per
> > > mechanism
> > > > in
> > > > > > > ZK, I
> > > > > > > > >> have
> > > > > > > > >> >    changed the format to use a single property
> (lower-case
> > > > > > mechanism
> > > > > > > > >> name)
> > > > > > > > >> >    with four values concatenated in a format similar to
> > > SCRAM
> > > > > > > > messages.
> > > > > > > > >> >
> > > > > > > > >> > Do you think storing SCRAM credentials in
> > > > > > > /config/users/<encoded-user>
> > > > > > > > >> > along with existing quota properties is okay? Or should
> > they
> > > > be
> > > > > > > under
> > > > > > > > a
> > > > > > > > >> > different path (eg. /config/credentials/<encoded-
> user>)?
> > Or
> > > > > > should
> > > > > > > > >> they be
> > > > > > > > >> > on a completely different path like ACLs with a separate
> > > tool
> > > > > > > instead
> > > > > > > > of
> > > > > > > > >> > reusing kaka-configs.sh?
> > > > > > > > >> >
> > > > > > > > >> > Thank you,
> > > > > > > > >> >
> > > > > > > > >> > Rajini
> > > > > > > > >> >
> > > > > > > > >> > On Tue, Oct 25, 2016 at 11:55 PM, Jun Rao <
> > j...@confluent.io
> > > >
> > > > > > wrote:
> > > > > > > > >> >
> > > > > > > > >> > > Hi, Rajini,
> > > > > > > > >> > >
> > > > > > > > >> > > Thanks for the proposal. Looks good overall and seems
> > > quite
> > > > > > useful
> > > > > > > > >> (e.g.
> > > > > > > > >> > > for supporting delegation tokens). A few
> > > comments/questions
> > > > > > below.
> > > > > > > > >> > >
> > > > > > > > >> > > 1. For the ZK data format change, should we use the
> same
> > > > > > > convention
> > > > > > > > >> as in
> > > > > > > > >> > > KIP-55 to use encoded user name (i.e.,
> > > > > > > > /config/users/<encoded-user1>)
> > > > > > > > >> ?
> > > > > > > > >> > >
> > > > > > > > >> > > 2. For tooling, could you describe how user typically
> > > > > generates
> > > > > > > > >> > > scam_server_key and scram_stored_key to be used by
> > > > > > > kafka-config.sh?
> > > > > > > > >> > >
> > > > > > > > >> > > 3. Is there a particular reason to only support sha1
> and
> > > > > sha128?
> > > > > > > > >> Should
> > > > > > > > >> > we
> > > > > > > > >> > > support more hashes listed below in the future?
> > > > > > > > >> > > http://www.iana.org/assignments/hash-function-
> > > > > > > > >> > > text-names/hash-function-text-names.xhtml
> > > > > > > > >> > >
> > > > > > > > >> > > 4. Is there a reason not to cache user credentials in
> > the
> > > > > > broker?
> > > > > > > > The
> > > > > > > > >> > > dynamic config mechanism already supports loading
> > configs
> > > > into
> > > > > > > > >> broker's
> > > > > > > > >> > > cache. Checking credentials from broker's cache is
> more
> > > > > > efficient
> > > > > > > > than
> > > > > > > > >> > > reading from ZK each time.
> > > > > > > > >> > >
> > > > > > > > >> > > 5. Typo "scram_iteration-4096" (= instead of -).
> > > > > > > > >> > >
> > > > > > > > >> > > Thanks,
> > > > > > > > >> > >
> > > > > > > > >> > > Jun
> > > > > > > > >> > >
> > > > > > > > >> > >
> > > > > > > > >> > >
> > > > > > > > >> > > On Tue, Oct 4, 2016 at 6:43 AM, Rajini Sivaram <
> > > > > > > > >> > > rajinisiva...@googlemail.com
> > > > > > > > >> > > > wrote:
> > > > > > > > >> > >
> > > > > > > > >> > > > Hi all,
> > > > > > > > >> > > >
> > > > > > > > >> > > > I have just created KIP-84 to add SCRAM-SHA-1 and
> > > > > > SCRAM-SHA-256
> > > > > > > > SASL
> > > > > > > > >> > > > mechanisms to Kafka:
> > > > > > > > >> > > >
> > > > > > > > >> > > > https://cwiki.apache.org/
> > confluence/display/KAFKA/KIP-
> > > > > > > > >> > > > 84%3A+Support+SASL+SCRAM+mechanisms
> > > > > > > > >> > > >
> > > > > > > > >> > > >
> > > > > > > > >> > > > Comments and suggestions are welcome.
> > > > > > > > >> > > >
> > > > > > > > >> > > > Thank you...
> > > > > > > > >> > > >
> > > > > > > > >> > > > Regards,
> > > > > > > > >> > > >
> > > > > > > > >> > > > Rajini
> > > > > > > > >> > > >
> > > > > > > > >> > >
> > > > > > > > >> >
> > > > > > > > >> >
> > > > > > > > >> >
> > > > > > > > >> > --
> > > > > > > > >> > Regards,
> > > > > > > > >> >
> > > > > > > > >> > Rajini
> > > > > > > > >> >
> > > > > > > > >>
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > Regards,
> > > > > > > > >
> > > > > > > > > Rajini
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > Regards,
> > > > > > > >
> > > > > > > > Rajini
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Regards,
> > > > > >
> > > > > > Rajini
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > *Gwen Shapira*
> > > > > Product Manager | Confluent
> > > > > 650.450.2760 | @gwenshap
> > > > > Follow us: Twitter <https://twitter.com/ConfluentInc> | blog
> > > > > <http://www.confluent.io/blog>
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Regards,
> > > >
> > > > Rajini
> > > >
> > >
> > >
> > >
> > > --
> > > Thanks,
> > > Ewen
> > >
> >
> >
> >
> > --
> > Regards,
> >
> > Rajini
> >
>



-- 
Regards,

Rajini

Reply via email to