Andy,

1. Updated the KIP about need for getMatchingAcls(). Basically, it's
required to add an inspection method without breaking compatibility.
getAcls() only looks at a single location.

2. Nothing will change from user's perspective. they will add / delete/
list ACLs as earlier.

3. Good point about moving everything to a v2 path. We might still have to
support snowflakes but I will this better.

I'm giving it a final read. I'll update here once I think it's ready.

Thanks


Piyush Vijay

On Fri, May 18, 2018 at 12:18 PM, Piyush Vijay <piyushvij...@gmail.com>
wrote:

> On it, Andy. It should be out in next 30 mins.
>
> On Fri, May 18, 2018 at 12:17 PM Andy Coates <a...@confluent.io> wrote:
>
>> Hey Piyush,
>>
>> How are you getting on updating the KIP? Can we offer any support? We're
>> starting to fly really close to the required 72 hours cut off for KIPs.
>> This doesn't leave much room for resolving any issues any committers find.
>> Also, we now require at least three committers to review this KIP today
>> _and_ find no issues if we're to get this KIP accepted.
>>
>> Thanks,
>>
>> Andy
>>
>> On 18 May 2018 at 01:21, Piyush Vijay <piyushvij...@gmail.com> wrote:
>>
>> > Hi Andy,
>> >
>> > I still have some minor changes left to the KIP. I'll make them in the
>> > morning. I'm sorry I got caught up in some other things today. But that
>> > would still give us 72 hours before the deadline :)
>> >
>> > Thanks
>> >
>> >
>> > Piyush Vijay
>> >
>> > On Thu, May 17, 2018 at 1:27 PM, Andy Coates <a...@confluent.io> wrote:
>> >
>> > > Hey Piyush - my bad. Sorry.
>> > >
>> > > On 17 May 2018 at 13:23, Piyush Vijay <piyushvij...@gmail.com> wrote:
>> > >
>> > > > 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
>> > > > >
>
>

Reply via email to