It's still not complete. I'll drop a message here when I'm done with the
updates.

Thanks


Piyush Vijay

On Thu, May 17, 2018 at 12:04 PM, Andy Coates <a...@confluent.io> wrote:

> Thanks for the update to the KIP Piyush!
>
> Reading it through again, I've a couple of questions:
>
> 1. Why is there a need for a new 'getMatchingAcls' method, over the
> existing getAcls method? They both take a Resource instance and return a
> set of Acls. What is the difference in their behaviour?
> 2. It's not clear to me from the KIP alone what will change, from a users
> perspective, on how they add / list / delete ACLs.  I'm assuming this won't
> change.
> 3. Writing ACLs to a new location to get around the issues of embedded
> wildcards in existing group ACLs makes sense to me - but just a thought,
> will we be writing all new ACLs under this new path, or just those that are
> partial wildcards?  I'm assuming its the latter, but it could just be 'all'
> right? As we could escape illegal chars.  So we could just make this new
> path 'v2' rather wildcard.
>
> Andy
>
> On 17 May 2018 at 09:32, Colin McCabe <cmcc...@apache.org> wrote:
>
> > On Thu, May 17, 2018, at 09:28, Piyush Vijay wrote:
> > > I was planning to do that.
> > >
> > > Another unrelated detail is the presence of the support for ‘*’ ACL
> > > currently. Looks like we’ll have to keep supporting this as a special
> > case,
> > > even though using a different location for wildcard-suffix ACLs on Zk.
> >
> > +1.
> >
> > Thanks, Piyush.
> >
> > Colin
> >
> > >
> > >
> > >
> > > On Thu, May 17, 2018 at 9:15 AM Colin McCabe <cmcc...@apache.org>
> wrote:
> > >
> > > > Thanks, Piyush.  +1 for starting the vote soon.
> > > >
> > > > Can you please also add a discussion about escaping?  For example,
> > earlier
> > > > we discussed using backslashes to escape special characters.  So that
> > users
> > > > can create an ACL referring to a literal "foo*" group by creating an
> > ACL
> > > > for "foo\*"  Similarly, you can get a literal backslash with "\\".
> > This is
> > > > the standard UNIX escaping mechanism.
> > > >
> > > > Also, for the section that says "Changes to AdminClient (needs
> > > > discussion)", we need a new method that will allow users to escape
> > consumer
> > > > group names and other names.  So you can feed this method your
> "foo\*"
> > > > consumer group name, and it will give you "foo\\\*", which is what
> you
> > > > would need to use to create an ACL for this consumer group in
> > AdminClient.
> > > > I think that's the only change we need to admin client
> > > >
> > > > regards,
> > > > Colin
> > > >
> > > >
> > > > On Thu, May 17, 2018, at 08:55, Piyush Vijay wrote:
> > > > > Hi Rajini/Colin,
> > > > >
> > > > > I will remove the wildcard principals from the scope for now,
> > updating
> > > > KIP
> > > > > right now and will open it for vote.
> > > > >
> > > > > Thanks
> > > > >
> > > > >
> > > > > Piyush Vijay
> > > > >
> > > > > On Thu, May 17, 2018 at 6:59 AM, Rajini Sivaram <
> > rajinisiva...@gmail.com
> > > > >
> > > > > wrote:
> > > > >
> > > > > > Hi Piyush,
> > > > > >
> > > > > > I have added a PR (https://github.com/apache/kafka/pull/5030)
> with
> > > > tests
> > > > > > to
> > > > > > show how group principals can be used for authorization with
> custom
> > > > > > principal builders. One of the tests uses SASL. It is not quite
> the
> > > > same as
> > > > > > a full-fledged user groups, but since it works with all security
> > > > protocols,
> > > > > > it could be an alternative to wildcarded principals.
> > > > > >
> > > > > > Let us know if we can help in any way to get this KIP updated and
> > > > ready for
> > > > > > voting to include in 2.0.0.
> > > > > >
> > > > > > Thanks,
> > > > > >
> > > > > > Rajini
> > > > > >
> > > > > >
> > > > > > On Wed, May 16, 2018 at 10:21 PM, Colin McCabe <
> cmcc...@apache.org
> > >
> > > > wrote:
> > > > > >
> > > > > > > > On Tue, May 15, 2018 at 7:18 PM, Rajini Sivaram <
> > > > > > rajinisiva...@gmail.com
> > > > > > > >
> > > > > > > > wrote:
> > > > > > > >
> > > > > > > > > Hi Piyush,
> > > > > > > > >
> > > > > > > > > It is possible to configure PrincipalBuilder for SASL (
> > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> > > > > > > > > 189%3A+Improve+principal+builder+interface+and+add+
> > > > > > support+for+SASL).
> > > > > > > If
> > > > > > > > > that satisfies your requirements, perhaps we can move
> > wildcarded
> > > > > > > principals
> > > > > > > > > out of this KIP and focus on wildcarded resources?
> > > > > > >
> > > > > > > +1.
> > > > > > >
> > > > > > > We also need to determine which characters will be reserved for
> > the
> > > > > > > future.  I think previously we thought about @, #, $, %, ^, &,
> *.
> > > > > > >
> > > > > > > > > On Tue, May 15, 2018 at 7:15 PM, Piyush Vijay <
> > > > > > piyushvij...@gmail.com>
> > > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > >> Hi Colin,
> > > > > > > > >>
> > > > > > > > >> Escaping at this level is making sense to me but let me
> > think
> > > > more
> > > > > > > and get
> > > > > > > > >> back to you.
> > > > > > >
> > > > > > > Thanks, Piyush.  What questions do you think are still open
> > regarding
> > > > > > > escape characters?
> > > > > > > As Rajini mentioned, we have to get this in soon in order to
> make
> > > > the KIP
> > > > > > > freeze.
> > > > > > >
> > > > > > > > >>
> > > > > > > > >> But should we not just get rid of one of AclBinding or
> > > > > > > AclBindingFilter
> > > > > > > > >> then? Is there a reason to keep both given that
> > > > AclBindingFilter and
> > > > > > > > >> AclBinding look exact copy of each other after this
> change?
> > This
> > > > > > will
> > > > > > > be a
> > > > > > > > >> one-time breaking change in APIs marked as "Evolving", but
> > makes
> > > > > > > sense in
> > > > > > > > >> the long term? Am I missing something here?
> > > > > > >
> > > > > > > AclBinding represents an ACL.  AclBindingFilter is a filter
> which
> > > > can be
> > > > > > > used to locate AclBinding objects.  Similarly with Resource and
> > > > > > > ResourceFilter.  There is no reason to combine them because
> they
> > > > > > represent
> > > > > > > different things.  Although they contain many of the same
> fields,
> > > > they
> > > > > > are
> > > > > > > not exact copies.  Many fields can be null in
> AclBindingFilter--
> > > > fields
> > > > > > can
> > > > > > > never be null in AclBinding.
> > > > > > >
> > > > > > > For example, you can have an AclBindingFilter that matches
> every
> > > > > > > AclBinding.  There is more discussion of this on the original
> KIP
> > > > that
> > > > > > > added ACL support to AdminClient.
> > > > > > >
> > > > > > > best,
> > > > > > > Colin
> > > > > > >
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >> Piyush Vijay
> > > > > > > > >>
> > > > > > > > >> On Tue, May 15, 2018 at 9:01 AM, Colin McCabe <
> > > > cmcc...@apache.org>
> > > > > > > wrote:
> > > > > > > > >>
> > > > > > > > >> > Hi Piyush,
> > > > > > > > >> >
> > > > > > > > >> > I think AclBinding should operate the same way as
> > > > > > AclBindingFilter.
> > > > > > > > >> >
> > > > > > > > >> > So you should be able to do something like this:
> > > > > > > > >> > > AclBindingFilter filter = new AclBindingFiler(new
> > > > > > > > >> > ResourceFilter(ResourceType.GROUP, "foo*"))
> > > > > > > > >> > > AclBinding binding = new AclBinding(new
> > > > > > > Resource(ResourceType.GROUP,
> > > > > > > > >> > "foo*"))
> > > > > > > > >> > > assertTrue(filter.matches(binding));
> > > > > > > > >> >
> > > > > > > > >> > Thinking about this more, it's starting to feel really
> > messy
> > > > to
> > > > > > > create
> > > > > > > > >> new
> > > > > > > > >> > "pattern" constructors for Resource and
> ResourceFilter.  I
> > > > don't
> > > > > > > think
> > > > > > > > >> > people will be able to figure this out.  Maybe we should
> > just
> > > > > > have a
> > > > > > > > >> > limited compatibility break here, where it is now
> > required to
> > > > > > escape
> > > > > > > > >> weird
> > > > > > > > >> > consumer group names when creating ACLs for them.
> > > > > > > > >> >
> > > > > > > > >> > To future-proof this, we should reserve a bunch of
> > characters
> > > > at
> > > > > > > once,
> > > > > > > > >> > like *, @, $, %, ^, &, +, [, ], etc.  If these
> characters
> > > > appear
> > > > > > in
> > > > > > > a
> > > > > > > > >> > resource name, it should be an error, unless they are
> > escaped
> > > > > > with a
> > > > > > > > >> > backslash.  That way, we can use them in the future.  We
> > > > should
> > > > > > > create a
> > > > > > > > >> > Resource.escapeName function which adds the correct
> escape
> > > > > > > characters to
> > > > > > > > >> > resource names (so it would translate foo* into foo\*,
> > foo+bar
> > > > > > into
> > > > > > > > >> > foo\+bar, etc. etc.
> > > > > > > > >> >
> > > > > > > > >> > best,
> > > > > > > > >> > Colin
> > > > > > > > >> >
> > > > > > > > >> >
> > > > > > > > >> > On Mon, May 14, 2018, at 17:08, Piyush Vijay wrote:
> > > > > > > > >> > > Colin,
> > > > > > > > >> > >
> > > > > > > > >> > > createAcls take a AclBinding, however, instead of
> > > > > > > AclBindingFilter.
> > > > > > > > >> What
> > > > > > > > >> > > are your thoughts here?
> > > > > > > > >> > >
> > > > > > > > >> > > public abstract DescribeAclsResult
> > > > describeAcls(AclBindingFilter
> > > > > > > > >> > > filter, DescribeAclsOptions options);
> > > > > > > > >> > >
> > > > > > > > >> > > public abstract CreateAclsResult
> createAcls(Collection<
> > > > > > > AclBinding>
> > > > > > > > >> > > acls, CreateAclsOptions options);
> > > > > > > > >> > >
> > > > > > > > >> > > public abstract DeleteAclsResult
> > > > > > > > >> > > deleteAcls(Collection<AclBindingFilter> filters,
> > > > > > > DeleteAclsOptions
> > > > > > > > >> > > options);
> > > > > > > > >> > >
> > > > > > > > >> > >
> > > > > > > > >> > > Thanks
> > > > > > > > >> > >
> > > > > > > > >> > > Piyush Vijay
> > > > > > > > >> > >
> > > > > > > > >> > > On Mon, May 14, 2018 at 9:26 AM, Andy Coates <
> > > > a...@confluent.io
> > > > > > >
> > > > > > > > >> wrote:
> > > > > > > > >> > >
> > > > > > > > >> > > > +1
> > > > > > > > >> > > >
> > > > > > > > >> > > > On 11 May 2018 at 17:14, Colin McCabe <
> > cmcc...@apache.org
> > > > >
> > > > > > > wrote:
> > > > > > > > >> > > >
> > > > > > > > >> > > > > Hi Andy,
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > I see what you mean.  I guess my thought here is
> > that
> > > > if the
> > > > > > > > >> fields
> > > > > > > > >> > are
> > > > > > > > >> > > > > private, we can change it later if we need to.
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > I definitely agree that we should use the scheme
> you
> > > > > > describe
> > > > > > > for
> > > > > > > > >> > sending
> > > > > > > > >> > > > > ACLs over the wire (just the string + version
> > number)
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > cheers,
> > > > > > > > >> > > > > Colin
> > > > > > > > >> > > > >
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > On Fri, May 11, 2018, at 09:39, Andy Coates wrote:
> > > > > > > > >> > > > > > i think I'm agreeing with you. I was merely
> > suggesting
> > > > > > that
> > > > > > > > >> having
> > > > > > > > >> > an
> > > > > > > > >> > > > > > additional field that controls how the current
> > field
> > > > is
> > > > > > > > >> > interpreted is
> > > > > > > > >> > > > > more
> > > > > > > > >> > > > > > flexible / extensible in the future than using a
> > > > 'union'
> > > > > > > style
> > > > > > > > >> > > > approach,
> > > > > > > > >> > > > > > where only one of several possible fields should
> > be
> > > > > > > populated.
> > > > > > > > >> But
> > > > > > > > >> > > > it's a
> > > > > > > > >> > > > > > minor thing.
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > > On 10 May 2018 at 09:29, Colin McCabe <
> > > > cmcc...@apache.org
> > > > > > >
> > > > > > > > >> wrote:
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > > > Hi Andy,
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > The issue that I was trying to solve here is
> the
> > > > Java
> > > > > > API.
> > > > > > > > >> Right
> > > > > > > > >> > > > now,
> > > > > > > > >> > > > > > > someone can write "new
> > ResourceFilter(ResourceType.
> > > > > > > > >> > TRANSACTIONAL_ID,
> > > > > > > > >> > > > > > > "foo*") and have a ResourceFilter that applies
> > to a
> > > > > > > > >> > Transactional ID
> > > > > > > > >> > > > > named
> > > > > > > > >> > > > > > > "foo*".  This has to continue to work, or else
> > we
> > > > have
> > > > > > > broken
> > > > > > > > >> > > > > compatibility.
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > I was proposing that there would be something
> > like
> > > > a new
> > > > > > > > >> function
> > > > > > > > >> > > > like
> > > > > > > > >> > > > > > > ResourceFilter.fromPattern(
> > > > > > ResourceType.TRANSACTIONAL_ID,
> > > > > > > > >> > "foo*")
> > > > > > > > >> > > > > which
> > > > > > > > >> > > > > > > would create a ResourceFilter that applied to
> > > > > > > transactional
> > > > > > > > >> IDs
> > > > > > > > >> > > > > starting
> > > > > > > > >> > > > > > > with "foo", rather than transactional IDs
> named
> > > > "foo*"
> > > > > > > > >> > specifically.
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > I don't think it's important whether the Java
> > class
> > > > has
> > > > > > an
> > > > > > > > >> > integer,
> > > > > > > > >> > > > an
> > > > > > > > >> > > > > > > enum, or two string fields.  The important
> > thing is
> > > > that
> > > > > > > > >> there's
> > > > > > > > >> > a
> > > > > > > > >> > > > new
> > > > > > > > >> > > > > > > static function, or new constructor overload,
> > etc.
> > > > that
> > > > > > > works
> > > > > > > > >> for
> > > > > > > > >> > > > > patterns
> > > > > > > > >> > > > > > > rather than literal strings.
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > On Thu, May 10, 2018, at 03:30, Andy Coates
> > wrote:
> > > > > > > > >> > > > > > > > Rather than having name and pattern fields
> on
> > the
> > > > > > > > >> > ResourceFilter,
> > > > > > > > >> > > > > where
> > > > > > > > >> > > > > > > > it’s only valid for one to be set, and we
> > want to
> > > > > > > restrict
> > > > > > > > >> the
> > > > > > > > >> > > > > character
> > > > > > > > >> > > > > > > > set in case future enhancements need them,
> we
> > > > could
> > > > > > > instead
> > > > > > > > >> > add a
> > > > > > > > >> > > > new
> > > > > > > > >> > > > > > > > integer ‘nameType’ field, and use constants
> to
> > > > > > indicate
> > > > > > > how
> > > > > > > > >> the
> > > > > > > > >> > > > name
> > > > > > > > >> > > > > > > > field should be interpreted, e.g. 0 =
> > literal, 1 =
> > > > > > > wildcard.
> > > > > > > > >> > This
> > > > > > > > >> > > > > would
> > > > > > > > >> > > > > > > > be extendable, e.g we can later add 2 =
> > regex, or
> > > > what
> > > > > > > ever,
> > > > > > > > >> > and
> > > > > > > > >> > > > > > > > wouldn’t require any escaping.
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > This is very user-unfriendly, though.  Users
> > don't
> > > > want
> > > > > > to
> > > > > > > > >> have
> > > > > > > > >> > to
> > > > > > > > >> > > > > > > explicitly supply a version number when using
> > the
> > > > API,
> > > > > > > which
> > > > > > > > >> is
> > > > > > > > >> > what
> > > > > > > > >> > > > > this
> > > > > > > > >> > > > > > > would force them to do.  I don't think users
> are
> > > > going
> > > > > > to
> > > > > > > > >> want to
> > > > > > > > >> > > > > memorize
> > > > > > > > >> > > > > > > that version 4 supprted "+", whereas version 3
> > only
> > > > > > > supported
> > > > > > > > >> > > > "[0-9]",
> > > > > > > > >> > > > > or
> > > > > > > > >> > > > > > > whatever.
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > Just as an example, do you remember which
> > versions
> > > > of
> > > > > > > > >> > FetchRequest
> > > > > > > > >> > > > > added
> > > > > > > > >> > > > > > > which features?  I don't.  I always have to
> > look at
> > > > the
> > > > > > > code
> > > > > > > > >> to
> > > > > > > > >> > > > > remember.
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > Also, escaping is still required any time you
> > > > overload a
> > > > > > > > >> > character to
> > > > > > > > >> > > > > mean
> > > > > > > > >> > > > > > > two things.  Escaping is required in the
> current
> > > > > > proposal
> > > > > > > to
> > > > > > > > >> be
> > > > > > > > >> > able
> > > > > > > > >> > > > to
> > > > > > > > >> > > > > > > create a pattern that matches only "foo*".
> You
> > > > have to
> > > > > > > type
> > > > > > > > >> > "foo\*"
> > > > > > > > >> > > > > It
> > > > > > > > >> > > > > > > would be required if we forced users to
> specify
> > a
> > > > > > > version, as
> > > > > > > > >> > well.
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > best,
> > > > > > > > >> > > > > > > Colin
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > >
> > > > > > > > >> > > > > > > > Sent from my iPhone
> > > > > > > > >> > > > > > > >
> > > > > > > > >> > > > > > > > > On 7 May 2018, at 05:16, Piyush Vijay <
> > > > > > > > >> > piyushvij...@gmail.com>
> > > > > > > > >> > > > > wrote:
> > > > > > > > >> > > > > > > > >
> > > > > > > > >> > > > > > > > > Makes sense. I'll update the KIP.
> > > > > > > > >> > > > > > > > >
> > > > > > > > >> > > > > > > > > Does anyone have any other comments? :)
> > > > > > > > >> > > > > > > > >
> > > > > > > > >> > > > > > > > > Thanks
> > > > > > > > >> > > > > > > > >
> > > > > > > > >> > > > > > > > >
> > > > > > > > >> > > > > > > > > Piyush Vijay
> > > > > > > > >> > > > > > > > >
> > > > > > > > >> > > > > > > > >> On Thu, May 3, 2018 at 11:55 AM, Colin
> > McCabe <
> > > > > > > > >> > > > cmcc...@apache.org
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > > > wrote:
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >> Yeah, I guess that's a good point.  It
> > probably
> > > > > > makes
> > > > > > > > >> sense
> > > > > > > > >> > to
> > > > > > > > >> > > > > > > support the
> > > > > > > > >> > > > > > > > >> prefix scheme for consumer groups and
> > > > transactional
> > > > > > > IDs
> > > > > > > > >> as
> > > > > > > > >> > well
> > > > > > > > >> > > > as
> > > > > > > > >> > > > > > > topics.
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >> I agree that the current situation where
> > > > anything
> > > > > > > goes in
> > > > > > > > >> > > > consumer
> > > > > > > > >> > > > > > > group
> > > > > > > > >> > > > > > > > >> names and transactional ID names is not
> > > > ideal.  I
> > > > > > > wish we
> > > > > > > > >> > could
> > > > > > > > >> > > > > > > rewind the
> > > > > > > > >> > > > > > > > >> clock and impose restrictions on the
> names.
> > > > > > > However, it
> > > > > > > > >> > doesn't
> > > > > > > > >> > > > > seem
> > > > > > > > >> > > > > > > > >> practical at the moment.  Adding new
> > > > restrictions
> > > > > > > would
> > > > > > > > >> > break a
> > > > > > > > >> > > > > lot of
> > > > > > > > >> > > > > > > > >> existing users after an upgrade.  It
> would
> > be a
> > > > > > > really
> > > > > > > > >> bad
> > > > > > > > >> > > > upgrade
> > > > > > > > >> > > > > > > > >> experience.
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >> However, I think we can support this in a
> > > > > > compatible
> > > > > > > way.
> > > > > > > > >> > From
> > > > > > > > >> > > > > the
> > > > > > > > >> > > > > > > > >> perspective of AdminClient, we just have
> to
> > > > add a
> > > > > > new
> > > > > > > > >> field
> > > > > > > > >> > to
> > > > > > > > >> > > > > > > > >> ResourceFilter.  Currently, it has two
> > fields,
> > > > > > > > >> resourceType
> > > > > > > > >> > and
> > > > > > > > >> > > > > name:
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >>> /**
> > > > > > > > >> > > > > > > > >>> * A filter which matches Resource
> objects.
> > > > > > > > >> > > > > > > > >>> *
> > > > > > > > >> > > > > > > > >>> * The API for this class is still
> evolving
> > > > and we
> > > > > > > may
> > > > > > > > >> break
> > > > > > > > >> > > > > > > > >> compatibility in minor releases, if
> > necessary.
> > > > > > > > >> > > > > > > > >>> */
> > > > > > > > >> > > > > > > > >>> @InterfaceStability.Evolving
> > > > > > > > >> > > > > > > > >>> public class ResourceFilter {
> > > > > > > > >> > > > > > > > >>>    private final ResourceType
> > resourceType;
> > > > > > > > >> > > > > > > > >>>    private final String name;
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >> We can add a third field, pattern.
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >> So the API will basically be, if I
> create a
> > > > > > > > >> > > > > > > ResourceFilter(resourceType=GROUP,
> > > > > > > > >> > > > > > > > >> name=foo*, pattern=null), it applies only
> > to
> > > > the
> > > > > > > consumer
> > > > > > > > >> > group
> > > > > > > > >> > > > > named
> > > > > > > > >> > > > > > > > >> "foo*".  If I create a
> > > > > > ResourceFilter(resourceType=GR
> > > > > > > > >> OUP,
> > > > > > > > >> > > > > name=null,
> > > > > > > > >> > > > > > > > >> pattern=foo*), it applies to any consumer
> > group
> > > > > > > starting
> > > > > > > > >> in
> > > > > > > > >> > > > "foo".
> > > > > > > > >> > > > > > > name
> > > > > > > > >> > > > > > > > >> and pattern cannot be both set at the
> same
> > > > time.
> > > > > > > This
> > > > > > > > >> > preserves
> > > > > > > > >> > > > > > > > >> compatibility at the AdminClient level.
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >> It's possible that we will want to add
> more
> > > > types
> > > > > > of
> > > > > > > > >> > pattern in
> > > > > > > > >> > > > > the
> > > > > > > > >> > > > > > > > >> future.  So we should reserve "special
> > > > characters"
> > > > > > > such
> > > > > > > > >> as
> > > > > > > > >> > +, /,
> > > > > > > > >> > > > > &,
> > > > > > > > >> > > > > > > %, #,
> > > > > > > > >> > > > > > > > >> $, etc.  These characters should be
> > treated as
> > > > > > > special
> > > > > > > > >> > unless
> > > > > > > > >> > > > > they are
> > > > > > > > >> > > > > > > > >> prefixed with a backslash to escape them.
> > This
> > > > > > will
> > > > > > > > >> allow
> > > > > > > > >> > us to
> > > > > > > > >> > > > > add
> > > > > > > > >> > > > > > > > >> support for using these characters in the
> > > > future
> > > > > > > without
> > > > > > > > >> > > > breaking
> > > > > > > > >> > > > > > > > >> compatibility.
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >> At the protocol level, we need a new API
> > > > version
> > > > > > for
> > > > > > > > >> > > > > > > CreateAclsRequest /
> > > > > > > > >> > > > > > > > >> DeleteAclsRequest.  The new API version
> > will
> > > > send
> > > > > > all
> > > > > > > > >> > special
> > > > > > > > >> > > > > > > characters
> > > > > > > > >> > > > > > > > >> over the wire escaped rather than
> directly.
> > > > (So
> > > > > > > there
> > > > > > > > >> is no
> > > > > > > > >> > > > need
> > > > > > > > >> > > > > for
> > > > > > > > >> > > > > > > the
> > > > > > > > >> > > > > > > > >> equivalent of both "name" and "pattern"--
> > we
> > > > > > > translate
> > > > > > > > >> name
> > > > > > > > >> > > > into a
> > > > > > > > >> > > > > > > validly
> > > > > > > > >> > > > > > > > >> escaped pattern that matches only one
> > thing, by
> > > > > > > adding
> > > > > > > > >> > escape
> > > > > > > > >> > > > > > > characters as
> > > > > > > > >> > > > > > > > >> appropriate.)  The broker will validate
> the
> > > > new API
> > > > > > > > >> version
> > > > > > > > >> > and
> > > > > > > > >> > > > > reject
> > > > > > > > >> > > > > > > > >> malformed of unsupported patterns.
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >> At the ZK level, we can introduce a
> > protocol
> > > > > > version
> > > > > > > to
> > > > > > > > >> the
> > > > > > > > >> > data
> > > > > > > > >> > > > > in
> > > > > > > > >> > > > > > > ZK--
> > > > > > > > >> > > > > > > > >> or store it under a different root.
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >> best,
> > > > > > > > >> > > > > > > > >> Colin
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >>
> > > > > > > > >> > > > > > > > >>> On Wed, May 2, 2018, at 18:09, Piyush
> > Vijay
> > > > wrote:
> > > > > > > > >> > > > > > > > >>> Thank you everyone for the interest and,
> > > > prompt
> > > > > > and
> > > > > > > > >> > valuable
> > > > > > > > >> > > > > > > feedback. I
> > > > > > > > >> > > > > > > > >>> really appreciate the quick turnaround.
> > I’ve
> > > > tried
> > > > > > > to
> > > > > > > > >> > organize
> > > > > > > > >> > > > > the
> > > > > > > > >> > > > > > > > >> comments
> > > > > > > > >> > > > > > > > >>> into common headings. See my replies
> > below:
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> *Case of ‘*’ might already be present in
> > > > consumer
> > > > > > > groups
> > > > > > > > >> > and
> > > > > > > > >> > > > > > > > >> transactional
> > > > > > > > >> > > > > > > > >>> ids*
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>   - We definitely need wildcard ACLs
> > support
> > > > for
> > > > > > > > >> resources
> > > > > > > > >> > like
> > > > > > > > >> > > > > > > consumer
> > > > > > > > >> > > > > > > > >>>   groups and transactional ids for the
> > reason
> > > > Andy
> > > > > > > > >> > mentioned. A
> > > > > > > > >> > > > > big
> > > > > > > > >> > > > > > > win
> > > > > > > > >> > > > > > > > >> of
> > > > > > > > >> > > > > > > > >>>   this feature is that service providers
> > don’t
> > > > > > have
> > > > > > > to
> > > > > > > > >> > track
> > > > > > > > >> > > > and
> > > > > > > > >> > > > > keep
> > > > > > > > >> > > > > > > > >>>   up-to-date all the consumer groups
> their
> > > > > > > customers are
> > > > > > > > >> > using.
> > > > > > > > >> > > > > > > > >>>   - I agree with Andy’s thoughts on the
> > two
> > > > > > possible
> > > > > > > > >> ways.
> > > > > > > > >> > > > > > > > >>>   - My vote would be to do the breaking
> > change
> > > > > > > because
> > > > > > > > >> we
> > > > > > > > >> > > > should
> > > > > > > > >> > > > > > > > >> restrict
> > > > > > > > >> > > > > > > > >>>   the format of consumer groups and
> > > > transactional
> > > > > > > ids
> > > > > > > > >> > sooner
> > > > > > > > >> > > > than
> > > > > > > > >> > > > > > > later.
> > > > > > > > >> > > > > > > > >>>      - Consumer groups and transactional
> > ids
> > > > are
> > > > > > > basic
> > > > > > > > >> > Kafka
> > > > > > > > >> > > > > > > concepts.
> > > > > > > > >> > > > > > > > >>>      There is a lot of value in having a
> > > > defined
> > > > > > > naming
> > > > > > > > >> > > > > convention on
> > > > > > > > >> > > > > > > > >> these
> > > > > > > > >> > > > > > > > >>>      concepts.
> > > > > > > > >> > > > > > > > >>>      - This will help us not run into
> more
> > > > issues
> > > > > > > down
> > > > > > > > >> the
> > > > > > > > >> > > > line.
> > > > > > > > >> > > > > > > > >>>      - I’m not sure if people actually
> use
> > > > ‘*’ in
> > > > > > > their
> > > > > > > > >> > > > consumer
> > > > > > > > >> > > > > > > group
> > > > > > > > >> > > > > > > > >>>      names anyway.
> > > > > > > > >> > > > > > > > >>>      - Escaping ‘*’ isn’t trivial
> because
> > ‘\’
> > > > is
> > > > > > an
> > > > > > > > >> allowed
> > > > > > > > >> > > > > character
> > > > > > > > >> > > > > > > > >> too.
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> *Why introduce two new APIs?*
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>   - It’s possible to make this change
> > without
> > > > > > > > >> introducing
> > > > > > > > >> > new
> > > > > > > > >> > > > > APIs
> > > > > > > > >> > > > > > > but
> > > > > > > > >> > > > > > > > >> new
> > > > > > > > >> > > > > > > > >>>   APIs are required for inspection.
> > > > > > > > >> > > > > > > > >>>   - For example: If I want to fetch all
> > ACLs
> > > > that
> > > > > > > match
> > > > > > > > >> > > > > ’topicA*’,
> > > > > > > > >> > > > > > > it’s
> > > > > > > > >> > > > > > > > >>>   not possible without introducing new
> > APIs
> > > > AND
> > > > > > > > >> maintaining
> > > > > > > > >> > > > > backwards
> > > > > > > > >> > > > > > > > >>>   compatibility.
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> *Matching multiple hosts*
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>   - Rajini is right that wildcard ACLs
> > aren’t
> > > > the
> > > > > > > > >> correct
> > > > > > > > >> > fit
> > > > > > > > >> > > > for
> > > > > > > > >> > > > > > > > >>>   specifying range of hosts.
> > > > > > > > >> > > > > > > > >>>   - We will rely on KIP-252 for the
> proper
> > > > > > > > >> functionality (
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> https://cwiki.apache.org/
> > > > > > > confluence/display/KAFKA/KIP-
> > > > > > > > >> > > > > > > > >> 252+-+Extend+ACLs+to+allow+
> > > > > > > filtering+based+on+ip+ranges+
> > > > > > > > >> > > > > and+subnets
> > > > > > > > >> > > > > > > > >>>   )
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> *Implementation of matching algorithm
> and
> > > > > > > performance
> > > > > > > > >> > concerns*
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>   - Updated the KIP with an
> > implementation.
> > > > > > > > >> > > > > > > > >>>   - Andy, you’re right. The length
> doesn’t
> > > > play a
> > > > > > > part.
> > > > > > > > >> The
> > > > > > > > >> > > > > request
> > > > > > > > >> > > > > > > will
> > > > > > > > >> > > > > > > > >>>   be authorized *iff* there is at least
> > one
> > > > > > matching
> > > > > > > > >> ALLOW
> > > > > > > > >> > and
> > > > > > > > >> > > > no
> > > > > > > > >> > > > > > > > >> matching
> > > > > > > > >> > > > > > > > >>>   DENY irrespective of the prefix
> length.
> > > > Included
> > > > > > > this
> > > > > > > > >> > detail
> > > > > > > > >> > > > > in the
> > > > > > > > >> > > > > > > > >> KIP.
> > > > > > > > >> > > > > > > > >>>   - Since everything is stored in
> memory,
> > the
> > > > > > > > >> performance
> > > > > > > > >> > hit
> > > > > > > > >> > > > > isn’t
> > > > > > > > >> > > > > > > > >> really
> > > > > > > > >> > > > > > > > >>>   significantly worse than the current
> > > > behavior.
> > > > > > > > >> > > > > > > > >>>   - Stephane’s performance improvement
> > > > suggestion
> > > > > > > is a
> > > > > > > > >> > great
> > > > > > > > >> > > > > idea but
> > > > > > > > >> > > > > > > > >>>   orthogonal.
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> *Why extend this for principal?*
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>   - Thanks for the amazing points
> Rajini.
> > > > > > > > >> > > > > > > > >>>   - There is a use case where ALL
> > principals
> > > > from
> > > > > > > an org
> > > > > > > > >> > might
> > > > > > > > >> > > > > want
> > > > > > > > >> > > > > > > to
> > > > > > > > >> > > > > > > > >>>   access fix set of topics.
> > > > > > > > >> > > > > > > > >>>   - User group functionality is
> currently
> > > > missing.
> > > > > > > > >> > > > > > > > >>>   - IIRC SASL doesn’t use custom
> principal
> > > > > > builder.
> > > > > > > > >> > > > > > > > >>>   - However, prefixing is not the right
> > > > choice in
> > > > > > > all
> > > > > > > > >> > cases.
> > > > > > > > >> > > > > Agreed.
> > > > > > > > >> > > > > > > > >>>   - Thoughts?
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> *Changes to AdminClient to support
> > wildcard
> > > > ACLs*
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>   - Thanks Colin for the implementation.
> > It’s
> > > > good
> > > > > > > to
> > > > > > > > >> have
> > > > > > > > >> > you
> > > > > > > > >> > > > > and
> > > > > > > > >> > > > > > > > >>> others
> > > > > > > > >> > > > > > > > >>>   here for the expert opinions.
> > > > > > > > >> > > > > > > > >>>   - The current implementation uses two
> > > > classes:
> > > > > > > > >> > AclBinding and
> > > > > > > > >> > > > > > > > >>>   AclBindingFilter. (
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> https://github.com/apache/
> > > > > > > kafka/blob/trunk/clients/src/
> > > > > > > > >> > > > > > > > >> main/java/org/apache/kafka/
> > > > > > > common/acl/AclBinding.java
> > > > > > > > >> > > > > > > > >>>   and
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> https://github.com/apache/
> > > > > > > kafka/blob/trunk/clients/src/
> > > > > > > > >> > > > > > > > >> main/java/org/apache/kafka/com
> > > > > > > > >> mon/acl/AclBindingFilter.java
> > > > > > > > >> > > > > > > > >>>   )
> > > > > > > > >> > > > > > > > >>>   - AclBinding is definition of an Acl.
> > It’s
> > > > used
> > > > > > to
> > > > > > > > >> create
> > > > > > > > >> > > > ACLs.
> > > > > > > > >> > > > > > > > >>>   - AclBindingFilter is used to fetch or
> > > > delete
> > > > > > > > >> “matching’
> > > > > > > > >> > > > ACLs.
> > > > > > > > >> > > > > > > > >>>   - In the context of wildcard suffixed
> > ACLs,
> > > > a
> > > > > > > stored
> > > > > > > > >> ACL
> > > > > > > > >> > may
> > > > > > > > >> > > > > have
> > > > > > > > >> > > > > > > ‘*’
> > > > > > > > >> > > > > > > > >>> in
> > > > > > > > >> > > > > > > > >>>   it. *It really removes the distinction
> > > > between
> > > > > > > these
> > > > > > > > >> two
> > > > > > > > >> > > > > classes.*
> > > > > > > > >> > > > > > > > >>>   - The current implementation uses
> > ‘null’ to
> > > > > > define
> > > > > > > > >> > wildcard
> > > > > > > > >> > > > ACL
> > > > > > > > >> > > > > > > > >>> (‘*’). I
> > > > > > > > >> > > > > > > > >>>   think it’s not a good pattern and we
> > should
> > > > use
> > > > > > > ‘*’
> > > > > > > > >> for
> > > > > > > > >> > the
> > > > > > > > >> > > > > > > wildcard
> > > > > > > > >> > > > > > > > >>> ACL (
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> https://github.com/apache/
> > > > > > > kafka/blob/trunk/clients/src/
> > > > > > > > >> > > > > > > > >> main/java/org/apache/kafka/
> > > > > > > common/acl/AclBindingFilter.
> > > > > > > > >> > java#L39
> > > > > > > > >> > > > > > > > >>>   and
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> https://github.com/apache/
> > > > > > > kafka/blob/trunk/clients/src/
> > > > > > > > >> > > > > > > > >> main/java/org/apache/kafka/
> > common/resource/
> > > > > > > > >> > > > > ResourceFilter.java#L37
> > > > > > > > >> > > > > > > > >>>   ).
> > > > > > > > >> > > > > > > > >>>   - However, the above two changes are
> > > > breaking
> > > > > > > change
> > > > > > > > >> but
> > > > > > > > >> > it
> > > > > > > > >> > > > > should
> > > > > > > > >> > > > > > > be
> > > > > > > > >> > > > > > > > >>>   acceptable because the API is marked
> > with
> > > > > > > > >> > > > > > > > >>> @InterfaceStability.Evolving.
> > > > > > > > >> > > > > > > > >>>   - If everyone agrees to the above two
> > > > changes
> > > > > > > (merging
> > > > > > > > >> > the
> > > > > > > > >> > > > two
> > > > > > > > >> > > > > > > > >>> classes
> > > > > > > > >> > > > > > > > >>>   and using non-null values for blanket
> > > > access),
> > > > > > the
> > > > > > > > >> only
> > > > > > > > >> > other
> > > > > > > > >> > > > > > > change
> > > > > > > > >> > > > > > > > >>> is
> > > > > > > > >> > > > > > > > >>>   using the matching algorithm from the
> > KIP to
> > > > > > match
> > > > > > > > >> ACLs.
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> Other comments:
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>   - > It may be worth excluding
> delegation
> > > > token
> > > > > > > ACLs
> > > > > > > > >> from
> > > > > > > > >> > > > using
> > > > > > > > >> > > > > > > > >> prefixed
> > > > > > > > >> > > > > > > > >>>   wildcards since it doesn't make much
> > sense.
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> I want to ask for clarification on what
> > > > delegation
> > > > > > > token
> > > > > > > > >> > ACLs
> > > > > > > > >> > > > are
> > > > > > > > >> > > > > > > before
> > > > > > > > >> > > > > > > > >>> commenting. Wildcard suffixed ACLs are
> > > > supported
> > > > > > > only
> > > > > > > > >> for
> > > > > > > > >> > > > > resource
> > > > > > > > >> > > > > > > and
> > > > > > > > >> > > > > > > > >>> principal names.
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>   - A quick read makes me believe that
> > I’ve
> > > > fixed
> > > > > > > the
> > > > > > > > >> > > > formatting
> > > > > > > > >> > > > > > > issues
> > > > > > > > >> > > > > > > > >>>   reported by Ted. Let me know if
> > something is
> > > > > > still
> > > > > > > > >> wrong
> > > > > > > > >> > and
> > > > > > > > >> > > > I
> > > > > > > > >> > > > > > > would
> > > > > > > > >> > > > > > > > >> be
> > > > > > > > >> > > > > > > > >>>   happy to fix it.
> > > > > > > > >> > > > > > > > >>>   - I’ve fixed the mismatch in signature
> > > > reported
> > > > > > by
> > > > > > > > >> Ron.
> > > > > > > > >> > > > > > > > >>>   - Andy, I’ve updated the KIP with the
> > > > security
> > > > > > > hole
> > > > > > > > >> > related
> > > > > > > > >> > > > to
> > > > > > > > >> > > > > DENY
> > > > > > > > >> > > > > > > > >>>   wildcard ACLs ‘*’ on the downgrade
> path.
> > > > > > > > >> > > > > > > > >>>   - Wrt naming, wildcard suffixed ACLs
> > sound
> > > > > > > reasonable
> > > > > > > > >> to
> > > > > > > > >> > me
> > > > > > > > >> > > > > until
> > > > > > > > >> > > > > > > > >>>   someone raise a major objection.
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> Let me know your thoughts. Looking
> > forward to
> > > > the
> > > > > > > next
> > > > > > > > >> > > > iteration.
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> Best,
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> Piyush
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> Piyush Vijay
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>> On Wed, May 2, 2018 at 1:33 PM, Andy
> > Coates <
> > > > > > > > >> > a...@confluent.io
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > > > wrote:
> > > > > > > > >> > > > > > > > >>>
> > > > > > > > >> > > > > > > > >>>>> Perhaps there is a simpler way.  It
> > seems
> > > > like
> > > > > > the
> > > > > > > > >> > resource
> > > > > > > > >> > > > > that
> > > > > > > > >> > > > > > > > >> people
> > > > > > > > >> > > > > > > > >>>> really want to use prefixed ACLs with
> is
> > > > topic
> > > > > > > names.
> > > > > > > > >> > Because
> > > > > > > > >> > > > > topic
> > > > > > > > >> > > > > > > > >> names
> > > > > > > > >> > > > > > > > >>>> can't contain "*", there is no
> ambiguity
> > > > there,
> > > > > > > > >> either.  I
> > > > > > > > >> > > > think
> > > > > > > > >> > > > > > > maybe
> > > > > > > > >> > > > > > > > >> we
> > > > > > > > >> > > > > > > > >>>> should restrict the prefix handling to
> > topic
> > > > > > > resources.
> > > > > > > > >> > > > > > > > >>>>
> > > > > > > > >> > > > > > > > >>>> The KIP should cover consumer groups
> for
> > > > sure,
> > > > > > > > >> otherwise
> > > > > > > > >> > we're
> > > > > > > > >> > > > > back
> > > > > > > > >> > > > > > > to
> > > > > > > > >> > > > > > > > >> the
> > > > > > > > >> > > > > > > > >>>> situation users need to know, up front,
> > the
> > > > set
> > > > > > of
> > > > > > > > >> > consumer
> > > > > > > > >> > > > > groups
> > > > > > > > >> > > > > > > an
> > > > > > > > >> > > > > > > > >>>> KStreams topology is going to use.
> > > > > > > > >> > > > > > > > >>>>
> > > > > > > > >> > > > > > > > >>>> I'm assuming transactional producer Ids
> > > > would be
> > > > > > > the
> > > > > > > > >> same.
> > > > > > > > >> > > > > > > > >>>>
> > > > > > > > >> > > > > > > > >>>> The cleanest solution would be to
> > restrict
> > > > the
> > > > > > > > >> characters
> > > > > > > > >> > in
> > > > > > > > >> > > > > group
> > > > > > > > >> > > > > > > and
> > > > > > > > >> > > > > > > > >>>> transaction producer ids, but that's a
> > > > breaking
> > > > > > > change
> > > > > > > > >> > that
> > > > > > > > >> > > > > might
> > > > > > > > >> > > > > > > > >> affect a
> > > > > > > > >> > > > > > > > >>>> lot of people.
> > > > > > > > >> > > > > > > > >>>>
> > > > > > > > >> > > > > > > > >>>> Another solution might be to add a
> > protocol
> > > > > > > version to
> > > > > > > > >> the
> > > > > > > > >> > > > `Acl`
> > > > > > > > >> > > > > > > type,
> > > > > > > > >> > > > > > > > >> (not
> > > > > > > > >> > > > > > > > >>>> the current `version` field used for
> > > > optimistic
> > > > > > > > >> > concurrency
> > > > > > > > >> > > > > > > control),
> > > > > > > > >> > > > > > > > >>>> defaulting it to version 1 if it is not
> > > > present,
> > > > > > > and
> > > > > > > > >> > releasing
> > > > > > > > >> > > > > this
> > > > > > > > >> > > > > > > > >> change
> > > > > > > > >> > > > > > > > >>>> as version 2.  This would at least
> allow
> > us
> > > > to
> > > > > > > leave
> > > > > > > > >> the
> > > > > > > > >> > > > > version 1
> > > > > > > > >> > > > > > > ACLs
> > > > > > > > >> > > > > > > > >>>> as-is, (which makes for a cleaner
> storey
> > if a
> > > > > > > cluster
> > > > > > > > >> is
> > > > > > > > >> > > > > > > downgraded).
> > > > > > > > >> > > > > > > > >> There
> > > > > > > > >> > > > > > > > >>>> is then potential to escape '*' when
> > writing
> > > > > > > version 2
> > > > > > > > >> > ACLs.
> > > > > > > > >> > > > > (And
> > > > > > > > >> > > > > > > > >> introduce
> > > > > > > > >> > > > > > > > >>>> code to check for supported ACL
> versions
> > > > going
> > > > > > > > >> forward).
> > > > > > > > >> > > > > Though...
> > > > > > > > >> > > > > > > how
> > > > > > > > >> > > > > > > > >> do
> > > > > > > > >> > > > > > > > >>>> we escape? If the consumer group is
> free
> > > > form,
> > > > > > > then any
> > > > > > > > >> > escape
> > > > > > > > >> > > > > > > > >> sequence is
> > > > > > > > >> > > > > > > > >>>> also valid.   Aren't there metrics that
> > use
> > > > the
> > > > > > > group
> > > > > > > > >> > name?
> > > > > > > > >> > > > If
> > > > > > > > >> > > > > > > there
> > > > > > > > >> > > > > > > > >> are,
> > > > > > > > >> > > > > > > > >>>> I'd of thought we'd need to restrict
> the
> > > > char set
> > > > > > > > >> anyway.
> > > > > > > > >> > > > > > > > >>>>
> > > > > > > > >> > > > > > > > >>>>> On 2 May 2018 at 18:57, charly molter
> <
> > > > > > > > >> > > > charly.mol...@gmail.com
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > > > wrote:
> > > > > > > > >> > > > > > > > >>>>>
> > > > > > > > >> > > > > > > > >>>>> The fact that consumer groups and
> > > > > > > > >> transactionalProducerId
> > > > > > > > >> > > > don't
> > > > > > > > >> > > > > > > have
> > > > > > > > >> > > > > > > > >> a
> > > > > > > > >> > > > > > > > >>>>> strict format is problematic (we have
> > > > problems
> > > > > > > with
> > > > > > > > >> > people
> > > > > > > > >> > > > with
> > > > > > > > >> > > > > > > empty
> > > > > > > > >> > > > > > > > >>>>> spaces at the end of their consumer
> > group
> > > > for
> > > > > > > > >> example).
> > > > > > > > >> > > > > > > > >>>>> With 2.0 around the corner and the
> > > > possibility
> > > > > > to
> > > > > > > fix
> > > > > > > > >> > these
> > > > > > > > >> > > > > errors
> > > > > > > > >> > > > > > > > >> from
> > > > > > > > >> > > > > > > > >>>> the
> > > > > > > > >> > > > > > > > >>>>> past should we create a KIP to
> restrict
> > > > these
> > > > > > > names
> > > > > > > > >> like
> > > > > > > > >> > we
> > > > > > > > >> > > > do
> > > > > > > > >> > > > > for
> > > > > > > > >> > > > > > > > >>>> topics?
> > > > > > > > >> > > > > > > > >>>>>
> > > > > > > > >> > > > > > > > >>>>> Thanks!
> > > > > > > > >> > > > > > > > >>>>> Charly
> > > > > > > > >> > > > > > > > >>>>>
> > > > > > > > >> > > > > > > > >>>>> On Wed, May 2, 2018 at 6:22 PM Colin
> > McCabe
> > > > <
> > > > > > > > >> > > > > cmcc...@apache.org>
> > > > > > > > >> > > > > > > > >> wrote:
> > > > > > > > >> > > > > > > > >>>>>
> > > > > > > > >> > > > > > > > >>>>>> Hi Piyush,
> > > > > > > > >> > > > > > > > >>>>>>
> > > > > > > > >> > > > > > > > >>>>>> Thanks for the KIP!  It seems like it
> > will
> > > > be
> > > > > > > really
> > > > > > > > >> > useful.
> > > > > > > > >> > > > > > > > >>>>>>
> > > > > > > > >> > > > > > > > >>>>>> As Rajini commented, the names for
> some
> > > > > > resources
> > > > > > > > >> (such
> > > > > > > > >> > as
> > > > > > > > >> > > > > > > consumer
> > > > > > > > >> > > > > > > > >>>>>> groups) can include stars.  So your
> > > > consumer
> > > > > > > group
> > > > > > > > >> > might be
> > > > > > > > >> > > > > named
> > > > > > > > >> > > > > > > > >>>> "foo*".
> > > > > > > > >> > > > > > > > >>>>>> We need a way of explicitly referring
> > to
> > > > that
> > > > > > > > >> consumer
> > > > > > > > >> > group
> > > > > > > > >> > > > > name,
> > > > > > > > >> > > > > > > > >>>> rather
> > > > > > > > >> > > > > > > > >>>>>> than to the foo prefix.  A simple way
> > > > would be
> > > > > > to
> > > > > > > > >> > escape the
> > > > > > > > >> > > > > star
> > > > > > > > >> > > > > > > > >> with
> > > > > > > > >> > > > > > > > >>>> a
> > > > > > > > >> > > > > > > > >>>>>> backslash: "foo\*"  During the
> software
> > > > upgrade
> > > > > > > > >> > process, we
> > > > > > > > >> > > > > also
> > > > > > > > >> > > > > > > > >> need
> > > > > > > > >> > > > > > > > >>>> to
> > > > > > > > >> > > > > > > > >>>>>> translate all ACLs that refer to
> "foo*"
> > > > into
> > > > > > > "foo\*".
> > > > > > > > >> > > > > Otherwise,
> > > > > > > > >> > > > > > > > >> the
> > > > > > > > >> > > > > > > > >>>>>> upgrade could create a security hole
> by
> > > > > > granting
> > > > > > > more
> > > > > > > > >> > access
> > > > > > > > >> > > > > than
> > > > > > > > >> > > > > > > > >> the
> > > > > > > > >> > > > > > > > >>>>>> administrator intended.
> > > > > > > > >> > > > > > > > >>>>>>
> > > > > > > > >> > > > > > > > >>>>>> Perhaps there is a simpler way.  It
> > seems
> > > > like
> > > > > > > the
> > > > > > > > >> > resource
> > > > > > > > >> > > > > that
> > > > > > > > >> > > > > > > > >> people
> > > > > > > > >> > > > > > > > >>>>>> really want to use prefixed ACLs with
> > is
> > > > topic
> > > > > > > names.
> > > > > > > > >> > > > Because
> > > > > > > > >> > > > > > > > >> topic
> > > > > > > > >> > > > > > > > >>>>> names
> > > > > > > > >> > > > > > > > >>>>>> can't contain "*", there is no
> > ambiguity
> > > > there,
> > > > > > > > >> > either.  I
> > > > > > > > >> > > > > think
> > > > > > > > >> > > > > > > > >> maybe
> > > > > > > > >> > > > > > > > >>>> we
> > > > > > > > >> > > > > > > > >>>>>> should restrict the prefix handling
> to
> > > > topic
> > > > > > > > >> resources.
> > > > > > > > >> > > > > > > > >>>>>>
> > > > > > > > >> > > > > > > > >>>>>> Are the new "getMatchingAcls" methods
> > > > needed?
> > > > > > It
> > > > > > > > >> seems
> > > > > > > > >> > like
> > > > > > > > >> > > > > they
> > > > > > > > >> > > > > > > > >> break
> > > > > > > > >> > > > > > > > >>>>>> encapsulation.  All that the calling
> > code
> > > > > > really
> > > > > > > > >> needs
> > > > > > > > >> > to do
> > > > > > > > >> > > > > is
> > > > > > > > >> > > > > > > > >> call
> > > > > > > > >> > > > > > > > >>>>>> Authorizer#authorize(session,
> > operation,
> > > > > > > resource).
> > > > > > > > >> The
> > > > > > > > >> > > > > > > authorizer
> > > > > > > > >> > > > > > > > >>>> knows
> > > > > > > > >> > > > > > > > >>>>>> that if it has an ACL allowing access
> > to
> > > > topics
> > > > > > > > >> starting
> > > > > > > > >> > > > with
> > > > > > > > >> > > > > > > > >> "foo" and
> > > > > > > > >> > > > > > > > >>>>>> someone calls authorize(foobar), it
> > should
> > > > > > allow
> > > > > > > > >> access.
> > > > > > > > >> > > > > It's not
> > > > > > > > >> > > > > > > > >>>>>> necessary for the calling code to
> know
> > > > exactly
> > > > > > > what
> > > > > > > > >> the
> > > > > > > > >> > > > rules
> > > > > > > > >> > > > > are
> > > > > > > > >> > > > > > > > >> for
> > > > > > > > >> > > > > > > > >>>>>> authorization.  The
> Authorizer#getAcls,
> > > > APIs
> > > > > > are
> > > > > > > only
> > > > > > > > >> > needed
> > > > > > > > >> > > > > when
> > > > > > > > >> > > > > > > > >> the
> > > > > > > > >> > > > > > > > >>>>>> AdminClient wants to list ACLs.
> > > > > > > > >> > > > > > > > >>>>>>
> > > > > > > > >> > > > > > > > >>>>>> best,
> > > > > > > > >> > > > > > > > >>>>>> Colin
> > > > > > > > >> > > > > > > > >>>>>>
> > > > > > > > >> > > > > > > > >>>>>>
> > > > > > > > >> > > > > > > > >>>>>>> On Wed, May 2, 2018, at 03:31,
> Rajini
> > > > Sivaram
> > > > > > > wrote:
> > > > > > > > >> > > > > > > > >>>>>>> Hi Piyush,
> > > > > > > > >> > > > > > > > >>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>> Thanks for the KIP for this widely
> > > > requested
> > > > > > > > >> feature.
> > > > > > > > >> > A few
> > > > > > > > >> > > > > > > > >>>>>>> comments/questions:
> > > > > > > > >> > > > > > > > >>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>> 1. Some resource names can contain
> > '*'.
> > > > For
> > > > > > > example,
> > > > > > > > >> > > > consumer
> > > > > > > > >> > > > > > > > >> groups
> > > > > > > > >> > > > > > > > >>>> or
> > > > > > > > >> > > > > > > > >>>>>>> transactional ids. I am wondering
> > whether
> > > > we
> > > > > > > need to
> > > > > > > > >> > > > restrict
> > > > > > > > >> > > > > > > > >>>>> characters
> > > > > > > > >> > > > > > > > >>>>>>> for these entities or provide a way
> to
> > > > > > > distinguish
> > > > > > > > >> > > > wildcarded
> > > > > > > > >> > > > > > > > >>>> resource
> > > > > > > > >> > > > > > > > >>>>>> from
> > > > > > > > >> > > > > > > > >>>>>>> a resource containing the wildcard
> > > > character.
> > > > > > > > >> > > > > > > > >>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>> 2. I am not sure we want to do
> > wildcarded
> > > > > > > > >> principals.
> > > > > > > > >> > It
> > > > > > > > >> > > > > feels
> > > > > > > > >> > > > > > > > >> like a
> > > > > > > > >> > > > > > > > >>>>>>> workaround in the absence of user
> > groups.
> > > > In
> > > > > > the
> > > > > > > > >> longer
> > > > > > > > >> > > > > term, I
> > > > > > > > >> > > > > > > > >> think
> > > > > > > > >> > > > > > > > >>>>>>> groups (without wildcards) would be
> a
> > > > better
> > > > > > > option
> > > > > > > > >> to
> > > > > > > > >> > > > > configure
> > > > > > > > >> > > > > > > > >> ACLs
> > > > > > > > >> > > > > > > > >>>>> for
> > > > > > > > >> > > > > > > > >>>>>>> groups of users, rather than
> building
> > user
> > > > > > > > >> principals
> > > > > > > > >> > which
> > > > > > > > >> > > > > have
> > > > > > > > >> > > > > > > > >>>> common
> > > > > > > > >> > > > > > > > >>>>>>> prefixes. In the shorter term,
> since a
> > > > > > > configurable
> > > > > > > > >> > > > > > > > >> PrincipalBuilder
> > > > > > > > >> > > > > > > > >>>> is
> > > > > > > > >> > > > > > > > >>>>>>> used to build the principal used for
> > > > > > > authorization,
> > > > > > > > >> > perhaps
> > > > > > > > >> > > > > > > > >> using the
> > > > > > > > >> > > > > > > > >>>>>>> prefix itself as the principal would
> > work
> > > > > > > (unless
> > > > > > > > >> > different
> > > > > > > > >> > > > > > > > >> quotas
> > > > > > > > >> > > > > > > > >>>> are
> > > > > > > > >> > > > > > > > >>>>>>> required for the full user name)?
> User
> > > > > > principal
> > > > > > > > >> > strings
> > > > > > > > >> > > > take
> > > > > > > > >> > > > > > > > >>>> different
> > > > > > > > >> > > > > > > > >>>>>>> formats for different security
> > protocols
> > > > (eg.
> > > > > > > > >> > > > > CN=xxx,O=org,C=UK
> > > > > > > > >> > > > > > > > >> for
> > > > > > > > >> > > > > > > > >>>>> SSL)
> > > > > > > > >> > > > > > > > >>>>>>> and simple prefixing isn't probably
> > the
> > > > right
> > > > > > > > >> grouping
> > > > > > > > >> > in
> > > > > > > > >> > > > > many
> > > > > > > > >> > > > > > > > >> cases.
> > > > > > > > >> > > > > > > > >>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>> 3. I am assuming we don't want to do
> > > > > > wildcarded
> > > > > > > > >> hosts
> > > > > > > > >> > in
> > > > > > > > >> > > > > this KIP
> > > > > > > > >> > > > > > > > >>>> since
> > > > > > > > >> > > > > > > > >>>>>>> wildcard suffix doesn't really work
> > for
> > > > hosts.
> > > > > > > > >> > > > > > > > >>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>> 4. It may be worth excluding
> > delegation
> > > > token
> > > > > > > ACLs
> > > > > > > > >> from
> > > > > > > > >> > > > using
> > > > > > > > >> > > > > > > > >>>> prefixed
> > > > > > > > >> > > > > > > > >>>>>>> wildcards since it doesn't make much
> > > > sense.
> > > > > > > > >> > > > > > > > >>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>> Regards,
> > > > > > > > >> > > > > > > > >>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>> Rajini
> > > > > > > > >> > > > > > > > >>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>> On Wed, May 2, 2018 at 2:05 AM,
> > Stephane
> > > > > > Maarek
> > > > > > > <
> > > > > > > > >> > > > > > > > >>>>>>> steph...@simplemachines.com.au>
> > wrote:
> > > > > > > > >> > > > > > > > >>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>> Hi, thanks for this badly needed
> > feature
> > > > > > > > >> > > > > > > > >>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>> 1) Why introduce two new APIs in
> > > > authorizer
> > > > > > > > >> instead of
> > > > > > > > >> > > > > > > > >> replacing
> > > > > > > > >> > > > > > > > >>>> the
> > > > > > > > >> > > > > > > > >>>>>>>> implementation for simple ACL
> > authorizer
> > > > with
> > > > > > > > >> adding
> > > > > > > > >> > the
> > > > > > > > >> > > > > > > > >> wildcard
> > > > > > > > >> > > > > > > > >>>>>>>> capability?
> > > > > > > > >> > > > > > > > >>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>> 2) is there an impact to
> performance
> > as
> > > > now
> > > > > > > we're
> > > > > > > > >> > > > evaluating
> > > > > > > > >> > > > > > > > >> more
> > > > > > > > >> > > > > > > > >>>>>> rules ? A
> > > > > > > > >> > > > > > > > >>>>>>>> while back I had evaluated the
> > concept of
> > > > > > > cached
> > > > > > > > >> Acl
> > > > > > > > >> > > > result
> > > > > > > > >> > > > > so
> > > > > > > > >> > > > > > > > >>>>> swallow
> > > > > > > > >> > > > > > > > >>>>>> the
> > > > > > > > >> > > > > > > > >>>>>>>> cost of computing an authorisation
> > cost
> > > > once
> > > > > > > and
> > > > > > > > >> then
> > > > > > > > >> > > > doing
> > > > > > > > >> > > > > in
> > > > > > > > >> > > > > > > > >>>> memory
> > > > > > > > >> > > > > > > > >>>>>>>> lookups. CF:
> > https://issues.apache.org/
> > > > > > > > >> > > > > jira/browse/KAFKA-5261
> > > > > > > > >> > > > > > > > >>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>> 3) is there any need to also extend
> > this
> > > > to
> > > > > > > > >> consumer
> > > > > > > > >> > group
> > > > > > > > >> > > > > > > > >>>> resources
> > > > > > > > >> > > > > > > > >>>>> ?
> > > > > > > > >> > > > > > > > >>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>> 4) create topics KIP as recently
> > moved
> > > > > > > permissions
> > > > > > > > >> > out of
> > > > > > > > >> > > > > > > > >> Cluster
> > > > > > > > >> > > > > > > > >>>>> into
> > > > > > > > >> > > > > > > > >>>>>>>> Topic. Will wildcard be supported
> for
> > > > this
> > > > > > > action
> > > > > > > > >> too?
> > > > > > > > >> > > > > > > > >>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>> Thanks a lot for this !
> > > > > > > > >> > > > > > > > >>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>> On Wed., 2 May 2018, 1:37 am Ted
> Yu,
> > <
> > > > > > > > >> > yuzhih...@gmail.com
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > > > > >> wrote:
> > > > > > > > >> > > > > > > > >>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>>> w.r.t. naming, we can keep
> wildcard
> > and
> > > > drop
> > > > > > > > >> > 'prefixed'
> > > > > > > > >> > > > (or
> > > > > > > > >> > > > > > > > >>>>>> 'suffixed')
> > > > > > > > >> > > > > > > > >>>>>>>>> since the use of regex would
> always
> > > > start
> > > > > > with
> > > > > > > > >> > > > non-wildcard
> > > > > > > > >> > > > > > > > >>>>> portion.
> > > > > > > > >> > > > > > > > >>>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>>> Cheers
> > > > > > > > >> > > > > > > > >>>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>>> On Tue, May 1, 2018 at 12:13 PM,
> > Andy
> > > > > > Coates <
> > > > > > > > >> > > > > > > > >> a...@confluent.io>
> > > > > > > > >> > > > > > > > >>>>>> wrote:
> > > > > > > > >> > > > > > > > >>>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>>>> Hi Piyush,
> > > > > > > > >> > > > > > > > >>>>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>>>> Can you also document in the
> > > > Compatibility
> > > > > > > > >> section
> > > > > > > > >> > what
> > > > > > > > >> > > > > > > > >> would
> > > > > > > > >> > > > > > > > >>>>>> happen
> > > > > > > > >> > > > > > > > >>>>>>>>> should
> > > > > > > > >> > > > > > > > >>>>>>>>>> the cluster be upgraded,
> > > > wildcard-suffixed
> > > > > > > ACLs
> > > > > > > > >> are
> > > > > > > > >> > > > added,
> > > > > > > > >> > > > > > > > >> and
> > > > > > > > >> > > > > > > > >>>>>> then the
> > > > > > > > >> > > > > > > > >>>>>>>>>> cluster is rolled back to the
> > previous
> > > > > > > version.
> > > > > > > > >> On
> > > > > > > > >> > > > > > > > >> downgrade
> > > > > > > > >> > > > > > > > >>>> the
> > > > > > > > >> > > > > > > > >>>>>>>> partial
> > > > > > > > >> > > > > > > > >>>>>>>>>> wildcard ACLs will be treated as
> > > > literals
> > > > > > and
> > > > > > > > >> hence
> > > > > > > > >> > > > never
> > > > > > > > >> > > > > > > > >> match
> > > > > > > > >> > > > > > > > >>>>>>>> anything.
> > > > > > > > >> > > > > > > > >>>>>>>>>> This is fine for ALLOW ACLs, but
> > some
> > > > might
> > > > > > > > >> consider
> > > > > > > > >> > > > this
> > > > > > > > >> > > > > a
> > > > > > > > >> > > > > > > > >>>>>> security
> > > > > > > > >> > > > > > > > >>>>>>>> hole
> > > > > > > > >> > > > > > > > >>>>>>>>>> if a DENY ACL is ignored, so this
> > > > needs to
> > > > > > be
> > > > > > > > >> > > > documented,
> > > > > > > > >> > > > > > > > >> both
> > > > > > > > >> > > > > > > > >>>> in
> > > > > > > > >> > > > > > > > >>>>>> the
> > > > > > > > >> > > > > > > > >>>>>>>> KIP
> > > > > > > > >> > > > > > > > >>>>>>>>>> and the final docs.
> > > > > > > > >> > > > > > > > >>>>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>>>> For some reason I find the term
> > > > 'prefixed
> > > > > > > > >> wildcard
> > > > > > > > >> > ACLs'
> > > > > > > > >> > > > > > > > >> easier
> > > > > > > > >> > > > > > > > >>>>> to
> > > > > > > > >> > > > > > > > >>>>>> grok
> > > > > > > > >> > > > > > > > >>>>>>>>>> than 'wildcard suffixed ACLs'.
> > Probably
> > > > > > > because
> > > > > > > > >> in
> > > > > > > > >> > the
> > > > > > > > >> > > > > > > > >> former
> > > > > > > > >> > > > > > > > >>>> the
> > > > > > > > >> > > > > > > > >>>>>>>>>> 'wildcard' term comes after the
> > > > positional
> > > > > > > > >> > adjective,
> > > > > > > > >> > > > > which
> > > > > > > > >> > > > > > > > >>>>>> matches the
> > > > > > > > >> > > > > > > > >>>>>>>>>> position of the wildcard char in
> > the
> > > > > > resource
> > > > > > > > >> name,
> > > > > > > > >> > i.e.
> > > > > > > > >> > > > > > > > >>>> "some*".
> > > > > > > > >> > > > > > > > >>>>>> It's
> > > > > > > > >> > > > > > > > >>>>>>>>>> most likely a person thing, but I
> > > > thought
> > > > > > I'd
> > > > > > > > >> > mention it
> > > > > > > > >> > > > > as
> > > > > > > > >> > > > > > > > >>>>> naming
> > > > > > > > >> > > > > > > > >>>>>> is
> > > > > > > > >> > > > > > > > >>>>>>>>>> important when it comes to making
> > this
> > > > > > > initiative
> > > > > > > > >> > for
> > > > > > > > >> > > > > > > > >> users.
> > > > > > > > >> > > > > > > > >>>>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>>>> On 1 May 2018 at 19:57, Andy
> > Coates <
> > > > > > > > >> > a...@confluent.io>
> > > > > > > > >> > > > > > > > >> wrote:
> > > > > > > > >> > > > > > > > >>>>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>>>>> Hi Piyush,
> > > > > > > > >> > > > > > > > >>>>>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>>>>> Thanks for raising this KIP -
> it's
> > > > very
> > > > > > much
> > > > > > > > >> > > > appreciated.
> > > > > > > > >> > > > > > > > >>>>>>>>>>>
> > > > > > > > >> > > > > > > > >>>>>>>>>>> I've not had chance to digest it
> > yet,
> > > >
> >
>

Reply via email to