Thanks, Rajini.  It looks good to me.

best,
Colin


On Thu, Aug 15, 2019, at 11:37, Rajini Sivaram wrote:
> Hi Colin,
> 
> Thanks for the review. I have updated the KIP to move the interfaces for
> request context and server info to the authorizer package. These are now
> called AuthorizableRequestContext and AuthorizerServerInfo. Endpoint is now
> a class in org.apache.kafka.common to make it reusable since we already
> have multiple implementations of it. I have removed requestName from the
> request context interface since authorizers can distinguish follower fetch
> and consumer fetch from the operation being authorized. So 16-bit request
> type should be sufficient for audit logging.  Also replaced AuditFlag with
> two booleans as you suggested.
> 
> Can you take another look and see if the KIP is ready for voting?
> 
> Thanks for all your help!
> 
> Regards,
> 
> Rajini
> 
> On Wed, Aug 14, 2019 at 8:59 PM Colin McCabe <cmcc...@apache.org> wrote:
> 
> > Hi Rajini,
> >
> > I think it would be good to rename KafkaRequestContext to something like
> > AuthorizableRequestContext, and put it in the
> > org.apache.kafka.server.authorizer namespace.  If we put it in the
> > org.apache.kafka.common namespace, then it's not really clear that it's
> > part of the Authorizer API.  Since this class is purely an interface, with
> > no concrete implementation of anything, there's nothing common to really
> > reuse in any case.  We definitely don't want someone to accidentally add or
> > remove methods because they think this is just another internal class used
> > for requests.
> >
> > The BrokerInfo class is a nice improvement.  It looks like it will be
> > useful for passing in information about the context we're running in.  It
> > would be nice to call this class ServerInfo rather than BrokerInfo, since
> > we will want to run the authorizer on controllers as well as on brokers,
> > and the controller may run as a separate process post KIP-500.  I also
> > think that this class should be in the org.apache.kafka.server.authorizer
> > namespace.  Again, it is an interface, not a concrete implementation, and
> > it's an interface that is very specifically for the authorizer.
> >
> > I agree that we probably don't have enough information preserved for
> > requests currently to always know what entity made them.  So we can leave
> > that out for now (except in the special case of Fetch).  Perhaps we can add
> > this later if it's needed.
> >
> > I understand the intention behind AuthorizationMode (which is now called
> > AuditFlag in the latest revision).  But it still feels complex.  What if we
> > just had two booleans in Action: logSuccesses and logFailures?  That seems
> > to cover all the cases here.  MANDATORY_AUTHORIZE = true, true.
> > OPTIONAL_AUTHORIZE = true, false.  FILTER = true, false.  LIST_AUTHORIZED =
> > false, false.  Would there be anything lost versus having the enum?
> >
> > best,
> > Colin
> >
> >
> > On Wed, Aug 14, 2019, at 06:29, Mickael Maison wrote:
> > > Hi Rajini,
> > >
> > > Thanks for the KIP!
> > > I really like that authorize() will be able to take a batch of
> > > requests, this will speed up many implementations!
> > >
> > > On Tue, Aug 13, 2019 at 5:57 PM Rajini Sivaram <rajinisiva...@gmail.com>
> > wrote:
> > > >
> > > > Thanks David! I have fixed the typo.
> > > >
> > > > Also made a couple of changes to make the context interfaces more
> > generic.
> > > > KafkaRequestContext now returns the 16-bit API key as Colin suggested
> > as
> > > > well as the friendly name used in metrics which are useful in audit
> > logs.
> > > > `Authorizer#start` is now provided a generic `BrokerInfo` interface
> > that
> > > > gives cluster id, broker id and endpoint information. The generic
> > interface
> > > > can potentially be used in other broker plugins in future and provides
> > > > dynamically generated configs like broker id and ports which are
> > currently
> > > > not available to plugins unless these configs are statically
> > configured.
> > > > Please let me know if there are any concerns.
> > > >
> > > > Regards,
> > > >
> > > > Rajini
> > > >
> > > > On Tue, Aug 13, 2019 at 4:30 PM David Jacot <dja...@confluent.io>
> > wrote:
> > > >
> > > > > Hi Rajini,
> > > > >
> > > > > Thank you for the update! It looks good to me. There is a typo in the
> > > > > `AuditFlag` enum: `MANDATORY_AUTHOEIZE` -> `MANDATORY_AUTHORIZE`.
> > > > >
> > > > > Regards,
> > > > > David
> > > > >
> > > > > On Mon, Aug 12, 2019 at 2:54 PM Rajini Sivaram <
> > rajinisiva...@gmail.com>
> > > > > wrote:
> > > > >
> > > > > > Hi David,
> > > > > >
> > > > > > Thanks for reviewing the KIP! Since questions about `authorization
> > mode`
> > > > > > and `count` have come up multiple times, I have renamed both.
> > > > > >
> > > > > > 1) Renamed `count` to `resourceReferenceCount`. It is the number
> > of times
> > > > > > the resource being authorized is referenced within the request.
> > > > > >
> > > > > > 2) Renamed `AuthorizationMode` to `AuditFlag`. It is provided to
> > improve
> > > > > > audit logging in the authorizer. The enum values have javadoc which
> > > > > > indicate how the authorization result is used in each of the modes
> > to
> > > > > > enable authorizers to log audit messages at the right severity
> > level.
> > > > > >
> > > > > > Regards,
> > > > > >
> > > > > > Rajini
> > > > > >
> > > > > > On Mon, Aug 12, 2019 at 5:54 PM David Jacot <dja...@confluent.io>
> > wrote:
> > > > > >
> > > > > > > Hi Rajini,
> > > > > > >
> > > > > > > Thank you for the KIP. Overall, it looks good to me. I have few
> > > > > > > questions/suggestions:
> > > > > > >
> > > > > > > 1. It is hard to grasp what `Action#count` is for. I guess I
> > understand
> > > > > > > where you want to go with it but it took me a while to figure it
> > out.
> > > > > > > Perhaps, we could come up with a better name than `count`?
> > > > > > >
> > > > > > > 2. I had a hard time trying to understand the `AuthorizationMode`
> > > > > > concept,
> > > > > > > especially wrt. the OPTIONAL one. My understanding is that an
> > ACL is
> > > > > > either
> > > > > > > defined or not. Could you elaborate a bit more on that?
> > > > > > >
> > > > > > > Thanks,
> > > > > > > David
> > > > > > >
> > > > > > > On Fri, Aug 9, 2019 at 10:26 PM Don Bosco Durai <
> > bo...@apache.org>
> > > > > > wrote:
> > > > > > >
> > > > > > > > Hi Rajini
> > > > > > > >
> > > > > > > > 3.2 - This makes sense. Thanks for clarifying.
> > > > > > > >
> > > > > > > > Rest looks fine. Once the implementations are done, it will be
> > more
> > > > > > clear
> > > > > > > > on the different values RequestType and Mode.
> > > > > > > >
> > > > > > > > Thanks
> > > > > > > >
> > > > > > > > Bosco
> > > > > > > >
> > > > > > > >
> > > > > > > > On 8/9/19, 5:08 AM, "Rajini Sivaram" <rajinisiva...@gmail.com
> > >
> > > > > wrote:
> > > > > > > >
> > > > > > > >     Hi Don,
> > > > > > > >
> > > > > > > >     Thanks for the suggestions. A few responses below:
> > > > > > > >
> > > > > > > >     3.1 Can rename and improve docs if we keep this. Let's
> > finish the
> > > > > > > >     discussion on Colin's suggestions regarding this first.
> > > > > > > >     3.2 No, I was thinking of some requests that have an old
> > way of
> > > > > > > > authorizing
> > > > > > > >     and a new way where we have retained the old way for
> > backward
> > > > > > > >     compatibility. One example is Cluster:Create permission to
> > create
> > > > > > > > topics.
> > > > > > > >     We have replaced this with fine-grained topic create
> > access using
> > > > > > > > Topic:Create
> > > > > > > >     for topic patterns. But we still check if user has
> > Cluster:Create
> > > > > > > > first. If
> > > > > > > >     Denied, the deny is ignored and we check Topic:Create. We
> > dont
> > > > > want
> > > > > > > to
> > > > > > > > log
> > > > > > > >     DENY for Cluster:Create at INFO level for this, since this
> > is
> > > > > not a
> > > > > > > >     mandatory ACL for creating topics. We will get appropriate
> > logs
> > > > > > from
> > > > > > > > the
> > > > > > > >     subsequent Topic:Create in this case.
> > > > > > > >     3.3 They are not quite the same. FILTER implies that user
> > > > > actually
> > > > > > > >     requested access to and performed some operation on the
> > filtered
> > > > > > > > resources.
> > > > > > > >     LIST_AUTHORZED did not result in any actual access. User
> > simply
> > > > > > > wanted
> > > > > > > > to
> > > > > > > >     know what they are allowed to access.
> > > > > > > >     3.4 Request types are Produce, JoinGroup, OffsetCommit
> > etc. So
> > > > > that
> > > > > > > is
> > > > > > > >     different from authorization mode, operation etc.
> > > > > > > >
> > > > > > > >
> > > > > > > >     On Thu, Aug 8, 2019 at 11:36 PM Don Bosco Durai <
> > > > > bo...@apache.org>
> > > > > > > > wrote:
> > > > > > > >
> > > > > > > >     > Hi Rajini
> > > > > > > >     >
> > > > > > > >     > Thanks for clarifying. This is very helpful...
> > > > > > > >     >
> > > > > > > >     > #1 - On the Ranger side, we should be able to handle
> > multiple
> > > > > > > > requests at
> > > > > > > >     > the same time. I was just not sure how much processing
> > overhead
> > > > > > > will
> > > > > > > > be
> > > > > > > >     > there on the Broker side to split and then consolidate
> > the
> > > > > > results.
> > > > > > > > If it
> > > > > > > >     > is negligible,  then this is the better way. It will
> > make it
> > > > > > future
> > > > > > > > proof.
> > > > > > > >     > #2 -  I agree, having a single "start" call makes it
> > cleaner.
> > > > > The
> > > > > > > >     > Authorization implementation will only have to do the
> > > > > > > initialization
> > > > > > > > only
> > > > > > > >     > once.
> > > > > > > >     > #3.1 - Thanks for the clarification. I think it makes
> > sense to
> > > > > > have
> > > > > > > > this.
> > > > > > > >     > The term "Mode" might not be explicit enough.
> > Essentially it
> > > > > > seems
> > > > > > > > you want
> > > > > > > >     > the Authorizer to know the Intent/Purpose of the
> > authorize call
> > > > > > and
> > > > > > > > let the
> > > > > > > >     > Authorizer decide what to log as Audit event. Changing
> > the
> > > > > > > > class/field name
> > > > > > > >     > or giving more documentation will do.
> > > > > > > >     > #3.2 - Regarding the option "OPTIONAL". Are you thinking
> > from
> > > > > > > > chaining
> > > > > > > >     > multiple Authorizer? If so,  I am not sure whether the
> > Broker
> > > > > > would
> > > > > > > > have
> > > > > > > >     > enough information to make that decision. I feel the
> > Authorizer
> > > > > > > will
> > > > > > > > be the
> > > > > > > >     > one who would have that knowledge. E.g. in Ranger we have
> > > > > > explicit
> > > > > > > > deny,
> > > > > > > >     > which means no matter what, the request should be denied
> > for
> > > > > the
> > > > > > > > user/group
> > > > > > > >     > or condition. So if you are thinking of chaining
> > Authorizers,
> > > > > > then
> > > > > > > >     > responses should have the third state, e.g.
> > "DENIED_FINAL", in
> > > > > > > which
> > > > > > > > case
> > > > > > > >     > if there is an Authorization chain, it will be stop and
> > the
> > > > > > request
> > > > > > > > will be
> > > > > > > >     > denied and if it is just denied, then you might fall
> > back to
> > > > > next
> > > > > > > >     > authorizer. If we don't have chaining of Authorizing in
> > mind,
> > > > > > then
> > > > > > > we
> > > > > > > >     > should reconsider OPTIONAL for now. Or clarify under
> > which
> > > > > > scenario
> > > > > > > >     > OPTIONAL will be called.
> > > > > > > >     > #3.3 Regarding, FILTER v/s LIST_AUTHORIZED, isn't
> > > > > > LIST_AUTHORIZED a
> > > > > > > >     > special case for "FILTER"?
> > > > > > > >     > #3.4 KafkaRequestContext. requestType() v/s Action.
> > > > > > > > authorizationMode. I
> > > > > > > >     > am not sure about the overlap or ambiguity.
> > > > > > > >     > #4 - Cool. This is good, it will be less stress on the
> > > > > > Authorizer.
> > > > > > > > Ranger
> > > > > > > >     > already supports the "count" concept and also has
> > batching
> > > > > > > > capability to
> > > > > > > >     > aggregate similar requests to reduce the number of audit
> > logs
> > > > > to
> > > > > > > > write. We
> > > > > > > >     > should be able to pass this through.
> > > > > > > >     > #5 - Assuming if the object instance is going out of
> > scope, we
> > > > > > > > should be
> > > > > > > >     > fine. Not a super important ask. Ranger is already
> > catching
> > > > > KILL
> > > > > > > > signal for
> > > > > > > >     > clean up.
> > > > > > > >     >
> > > > > > > >     > Thanks again. These are good enhancements. Appreciate
> > your
> > > > > > efforts
> > > > > > > > here.
> > > > > > > >     >
> > > > > > > >     > Bosco
> > > > > > > >     >
> > > > > > > >     >
> > > > > > > >     >
> > > > > > > >     > On 8/8/19, 2:03 AM, "Rajini Sivaram" <
> > rajinisiva...@gmail.com
> > > > > >
> > > > > > > > wrote:
> > > > > > > >     >
> > > > > > > >     >     Hi Don,
> > > > > > > >     >
> > > > > > > >     >     Thanks for reviewing the KIP.
> > > > > > > >     >
> > > > > > > >     >     1. I had this originally as a single Action, but
> > thought it
> > > > > > may
> > > > > > > > be
> > > > > > > >     > useful
> > > > > > > >     >     to support batched authorize calls as well and keep
> > it
> > > > > > > > consistent with
> > > > > > > >     >     other methods. Single requests can contain multiple
> > topics.
> > > > > > For
> > > > > > > >     > example a
> > > > > > > >     >     produce request can contain records for several
> > partitions
> > > > > of
> > > > > > > > different
> > > > > > > >     >     topics. Broker could potentially authorize these
> > together.
> > > > > > For
> > > > > > > >     >     SimpleAclAuthorizer, batched authorize methods don't
> > > > > provide
> > > > > > > any
> > > > > > > >     >     optimisation since lookup is based on resources
> > followed by
> > > > > > the
> > > > > > > >     > matching
> > > > > > > >     >     logic. But some authorizers may manage ACLs by user
> > > > > principal
> > > > > > > > rather
> > > > > > > >     > than
> > > > > > > >     >     resource and may be able to optimize batched
> > requests. I am
> > > > > > ok
> > > > > > > > with
> > > > > > > >     > using
> > > > > > > >     >     single Action if this is likely to cause issues.
> > > > > > > >     >     2. If you have two listeners, one for inter-broker
> > traffic
> > > > > > and
> > > > > > > > another
> > > > > > > >     > for
> > > > > > > >     >     external clients, start method is invoked twice,
> > once for
> > > > > > each
> > > > > > > >     > listener. On
> > > > > > > >     >     second thought, that may be confusing and a single
> > start()
> > > > > > > > invocation
> > > > > > > >     > that
> > > > > > > >     >     provides all listener information and returns
> > multiple
> > > > > > futures
> > > > > > > > would be
> > > > > > > >     >     better. Will update the KIP.
> > > > > > > >     >     3. A typical example is a consumer subscribing to a
> > regex
> > > > > > > > pattern. We
> > > > > > > >     >     request all topic metadata from the broker in order
> > to
> > > > > decide
> > > > > > > > whether
> > > > > > > >     > the
> > > > > > > >     >     pattern matches, expecting to receive a list of
> > authorised
> > > > > > > > topics. The
> > > > > > > >     > user
> > > > > > > >     >     is not asking to subscribe to an unauthorized topic.
> > If
> > > > > there
> > > > > > > > are 10000
> > > > > > > >     >     topics in the cluster and the user has access to 100
> > of
> > > > > them,
> > > > > > > at
> > > > > > > > the
> > > > > > > >     > moment
> > > > > > > >     >     we log 9900 DENIED log entries at INFO level in
> > > > > > > > SimpleAclAuthorizer.
> > > > > > > >     > The
> > > > > > > >     >     proposal is to authorize this request with
> > > > > > > > AuthorizationMode.FILTER, so
> > > > > > > >     >     that authorizers can log resources that are filtered
> > out at
> > > > > > > > lower level
> > > > > > > >     >     like DEBUG since this is not an attempt to access
> > > > > > unauthorized
> > > > > > > >     > resources.
> > > > > > > >     >     Brokers already handle these differently since no
> > > > > > authorization
> > > > > > > > error
> > > > > > > >     > is
> > > > > > > >     >     returned to the client in these cases. Providing
> > > > > > authorization
> > > > > > > > mode to
> > > > > > > >     >     authorizers enables authorizer implementations to
> > generate
> > > > > > > > better audit
> > > > > > > >     >     logs.
> > > > > > > >     >     4. Each request may contain multiple instances of
> > the same
> > > > > > > > authorizable
> > > > > > > >     >     resource. For example a produce request may contain
> > records
> > > > > > for
> > > > > > > > 10
> > > > > > > >     >     partitions of the same topic. At the moment, we
> > invoke
> > > > > > > authorize
> > > > > > > >     > method 10
> > > > > > > >     >     times. The proposal is to invoke it once with
> > count=10. The
> > > > > > > > count is
> > > > > > > >     >     provided to authorizer just for audit logging
> > purposes.
> > > > > > > >     >     5. Authorizer implements Closeable, so you could use
> > > > > close()
> > > > > > to
> > > > > > > > flush
> > > > > > > >     >     audits?
> > > > > > > >     >
> > > > > > > >     >     On Thu, Aug 8, 2019 at 7:01 AM Don Bosco Durai <
> > > > > > > bo...@apache.org
> > > > > > > > >
> > > > > > > >     > wrote:
> > > > > > > >     >
> > > > > > > >     >     > Rajini
> > > > > > > >     >     >
> > > > > > > >     >     > Thanks for putting this together. It is looking
> > good. I
> > > > > > have
> > > > > > > > few
> > > > > > > >     >     > questions...
> > > > > > > >     >     >
> > > > > > > >     >     > 1. List<AuthorizationResult> authorize(...,
> > List<Action>
> > > > > > > > actions).
> > > > > > > >     > Do you
> > > > > > > >     >     > see a scenario where the broker will call
> > authorize for
> > > > > > > > multiple
> > > > > > > >     > topics at
> > > > > > > >     >     > the same time? I can understand that during
> > > > > > creating/deleting
> > > > > > > > ACLS,
> > > > > > > >     >     > multiple permissions for multiple resources might
> > be
> > > > > done.
> > > > > > > For
> > > > > > > >     > authorize
> > > > > > > >     >     > call, would this be a case? And does the Authorize
> > > > > > > > implementation
> > > > > > > >     > will be
> > > > > > > >     >     > able to do performance optimization because of
> > this? Or
> > > > > > > should
> > > > > > > > we
> > > > > > > >     > just keep
> > > > > > > >     >     > it simple? I don't see it as an issue from Apache
> > Ranger
> > > > > > > side,
> > > > > > > > but
> > > > > > > >     > just
> > > > > > > >     >     > checking to see whether we need to be aware of
> > something.
> > > > > > > >     >     > 2. Should I assume that the SecurityProtocol passed
> > > > > during
> > > > > > > > start and
> > > > > > > >     > the
> > > > > > > >     >     > one return by
> > KafkaRequestContext.securityProtocol() will
> > > > > > be
> > > > > > > > the
> > > > > > > >     > same?
> > > > > > > >     >     > CompletableFuture<Void> start(String listenerName,
> > > > > > > > SecurityProtocol
> > > > > > > >     >     > securityProtocol);
> > > > > > > >     >     > KafkaRequestContext.securityProtocol()
> > > > > > > >     >     > 3. What is the purpose of AuthorizationMode? How
> > does the
> > > > > > > > broker
> > > > > > > >     > decide
> > > > > > > >     >     > what mode to use when the authorize() method is
> > called?
> > > > > > > >     >     > 4. Can we clarify "count" in Action a bit more?
> > How is it
> > > > > > > used?
> > > > > > > >     >     > 5. Do you feel having "stop" along with "start" be
> > > > > helpful?
> > > > > > > > E.g. In
> > > > > > > >     > Ranger
> > > > > > > >     >     > we try to optimize the Audit writing by caching
> > the logs
> > > > > > for
> > > > > > > a
> > > > > > > > fixed
> > > > > > > >     >     > interval. But when the Broker terminates, we do a
> > forced
> > > > > > > flush.
> > > > > > > >     > Having an
> > > > > > > >     >     > explicit "stop" might give us a formal way to
> > flush our
> > > > > > > audits.
> > > > > > > >     >     >
> > > > > > > >     >     > Thanks
> > > > > > > >     >     >
> > > > > > > >     >     > Bosco
> > > > > > > >     >     >
> > > > > > > >     >     > On 8/7/19, 3:59 PM, "Rajini Sivaram" <
> > > > > > > rajinisiva...@gmail.com
> > > > > > > > >
> > > > > > > >     > wrote:
> > > > > > > >     >     >
> > > > > > > >     >     >     Hi Ron/Harsha/Satish,
> > > > > > > >     >     >
> > > > > > > >     >     >     Thanks for reviewing the KIP!
> > > > > > > >     >     >
> > > > > > > >     >     >     We should perhaps have a wider discussion
> > outside
> > > > > this
> > > > > > > KIP
> > > > > > > > for
> > > > > > > >     >     > refactoring
> > > > > > > >     >     >     clients so that others who are not following
> > this KIP
> > > > > > > also
> > > > > > > >     > notice the
> > > > > > > >     >     >     discussion. Satish, would you like to start a
> > > > > > discussion
> > > > > > > > thread
> > > > > > > >     > on dev?
> > > > > > > >     >     >
> > > > > > > >     >     >     Regards,
> > > > > > > >     >     >
> > > > > > > >     >     >     Rajini
> > > > > > > >     >     >
> > > > > > > >     >     >
> > > > > > > >     >     >     On Wed, Aug 7, 2019 at 6:21 PM Satish Duggana <
> > > > > > > >     >     > satish.dugg...@gmail.com>
> > > > > > > >     >     >     wrote:
> > > > > > > >     >     >
> > > > > > > >     >     >     > I felt the same need when we want to add a
> > > > > pluggable
> > > > > > > API
> > > > > > > > for
> > > > > > > >     > core
> > > > > > > >     >     >     > server functionality. This does not need to
> > be part
> > > > > > of
> > > > > > > > this
> > > > > > > >     > KIP, it
> > > > > > > >     >     >     > can be a separate KIP. I can contribute those
> > > > > > > refactoring
> > > > > > > >     > changes if
> > > > > > > >     >     >     > others are OK with that.
> > > > > > > >     >     >     >
> > > > > > > >     >     >     > It is better to have a structure like below.
> > > > > > > >     >     >     >
> > > > > > > >     >     >     > kafka-common:
> > > > > > > >     >     >     > common classes which can be used in any of
> > the
> > > > > other
> > > > > > > > modules
> > > > > > > >     > in Kafka
> > > > > > > >     >     >     > like client, Kafka-server-common and server
> > etc.
> > > > > > > >     >     >     >
> > > > > > > >     >     >     > kafka-client-common:
> > > > > > > >     >     >     > common classes which can be used in the
> > client
> > > > > > module.
> > > > > > > > This
> > > > > > > >     > can be
> > > > > > > >     >     >     > part of client module itself.
> > > > > > > >     >     >     >
> > > > > > > >     >     >     > kafka-server-common:
> > > > > > > >     >     >     > classes required only for kafka-server.
> > > > > > > >     >     >     >
> > > > > > > >     >     >     > Thanks.
> > > > > > > >     >     >     > Satish.
> > > > > > > >     >     >     >
> > > > > > > >     >     >     > On Wed, Aug 7, 2019 at 9:28 PM Harsha
> > Chintalapani
> > > > > <
> > > > > > > >     > ka...@harsha.io>
> > > > > > > >     >     >     > wrote:
> > > > > > > >     >     >     > >
> > > > > > > >     >     >     > > Thanks for the KIP Rajini.
> > > > > > > >     >     >     > > Quick thought, it would be good to have a
> > common
> > > > > > > module
> > > > > > > >     > outside of
> > > > > > > >     >     >     > clients
> > > > > > > >     >     >     > > that only applies to server side
> > interfaces &
> > > > > > > changes.
> > > > > > > > It
> > > > > > > >     > looks
> > > > > > > >     >     > like we
> > > > > > > >     >     >     > are
> > > > > > > >     >     >     > > increasingly in favor of using Java
> > interface for
> > > > > > > > pluggable
> > > > > > > >     >     > modules  on
> > > > > > > >     >     >     > the
> > > > > > > >     >     >     > > broker side.
> > > > > > > >     >     >     > >
> > > > > > > >     >     >     > > Thanks,
> > > > > > > >     >     >     > > Harsha
> > > > > > > >     >     >     > >
> > > > > > > >     >     >     > >
> > > > > > > >     >     >     > > On Tue, Aug 06, 2019 at 2:31 PM, Rajini
> > Sivaram <
> > > > > > > >     >     > rajinisiva...@gmail.com
> > > > > > > >     >     >     > >
> > > > > > > >     >     >     > > wrote:
> > > > > > > >     >     >     > >
> > > > > > > >     >     >     > > > Hi all,
> > > > > > > >     >     >     > > >
> > > > > > > >     >     >     > > > I have created a KIP to replace the Scala
> > > > > > > Authorizer
> > > > > > > > API
> > > > > > > >     > with a
> > > > > > > >     >     > new
> > > > > > > >     >     >     > Java
> > > > > > > >     >     >     > > > API:
> > > > > > > >     >     >     > > >
> > > > > > > >     >     >     > > > -
> > > > > > > >     >     >     > > >
> > > > > > https://cwiki.apache.org/confluence/display/KAFKA/
> > > > > > > >     >     >     > > >
> > KIP-504+-+Add+new+Java+Authorizer+Interface
> > > > > > > >     >     >     > > >
> > > > > > > >     >     >     > > > This is replacement for KIP-50 which was
> > > > > accepted
> > > > > > > > but never
> > > > > > > >     >     > merged.
> > > > > > > >     >     >     > Apart
> > > > > > > >     >     >     > > > from moving to a Java API consistent
> > with other
> > > > > > > > pluggable
> > > > > > > >     >     > interfaces
> > > > > > > >     >     >     > in the
> > > > > > > >     >     >     > > > broker, KIP-504 also attempts to address
> > known
> > > > > > > > limitations
> > > > > > > >     > in the
> > > > > > > >     >     >     > > > authorizer. If you have come across other
> > > > > > > > limitations that
> > > > > > > >     > you
> > > > > > > >     >     > would
> > > > > > > >     >     >     > like
> > > > > > > >     >     >     > > > to see addressed in the new API, please
> > raise
> > > > > > these
> > > > > > > > on the
> > > > > > > >     >     > discussion
> > > > > > > >     >     >     > > > thread so that we can consider those
> > too. All
> > > > > > > > suggestions
> > > > > > > >     > and
> > > > > > > >     >     > feedback
> > > > > > > >     >     >     > are
> > > > > > > >     >     >     > > > welcome.
> > > > > > > >     >     >     > > >
> > > > > > > >     >     >     > > > Thank you,
> > > > > > > >     >     >     > > >
> > > > > > > >     >     >     > > > Rajini
> > > > > > > >     >     >     > > >
> > > > > > > >     >     >     >
> > > > > > > >     >     >
> > > > > > > >     >     >
> > > > > > > >     >     >
> > > > > > > >     >     >
> > > > > > > >     >
> > > > > > > >     >
> > > > > > > >     >
> > > > > > > >     >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > >
> >
>

Reply via email to