Hey there,

bumping this thread for any further KIP-590 discussion, since it's been
quiet for a while.

Boyang

On Thu, May 21, 2020 at 10:31 AM Boyang Chen <reluctanthero...@gmail.com>
wrote:

> Thanks David, I agree the wording here is not clear, and the fellow broker
> should just send a new CreateTopicRequest in this case.
>
> In the meantime, we had some offline discussion about the Envelope API as
> well. Although it provides certain privileges like data embedding and
> principal embedding, it creates a security hole by letting a malicious user
> impersonate any forwarding broker, thus pretending to be any admin user.
> Passing the principal around also increases the vulnerability, compared
> with other standard ways such as passing a verified token, but it is
> unfortunately not fully supported with Kafka security.
>
> So for the security concerns, we are abandoning the Envelope approach and
> fallback to just forward the raw admin requests. The authentication will
> happen on the receiving broker side instead of on the controller, so that
> we are able to stripped off the principal fields and only include the
> principal in header as optional field for audit logging purpose.
> Furthermore, we shall propose adding a separate endpoint for
> broker-controller communication which should be recommended to enable
> secure connections so that a malicious client could not pretend to be a
> broker and perform impersonation.
>
> Let me know your thoughts.
>
> Best,
> Boyang
>
> On Tue, May 19, 2020 at 12:17 AM David Jacot <dja...@confluent.io> wrote:
>
>> Hi Boyang,
>>
>> I've got another question regarding the auto topic creation case. The KIP
>> says: "Currently the target broker shall just utilize its own ZK client to
>> create
>> internal topics, which is disallowed in the bridge release. For above
>> scenarios,
>> non-controller broker shall just forward a CreateTopicRequest to the
>> controller
>> instead and let controller take care of the rest, while waiting for the
>> response
>> in the meantime." There will be no request to forward in this case, right?
>> Instead,
>> a CreateTopicsRequest is created and sent to the controller node.
>>
>> When the CreateTopicsRequest is sent as a side effect of the
>> MetadataRequest,
>> it would be good to know the principal and the clientId in the controller
>> (quota,
>> audit, etc.). Do you plan to use the Envelope API for this case as well or
>> to call
>> the regular API directly? Another was to phrase it would be: Shall the
>> internal
>> CreateTopicsRequest be sent with the original metadata (principal,
>> clientId, etc.)
>> of the MetadataRequest or as an admin request?
>>
>> Best,
>> David
>>
>> On Fri, May 8, 2020 at 2:04 AM Guozhang Wang <wangg...@gmail.com> wrote:
>>
>> > Just to adds a bit more FYI here related to the last question from
>> David:
>> > in KIP-595 while implementing the new requests we are also adding a
>> > "KafkaNetworkChannel" which is used for brokers to send vote / fetch
>> > records, so besides the discussion on listeners I think implementation
>> wise
>> > we can also consider consolidating a lot of those into the same
>> call-trace
>> > as well -- of course this is not related to public APIs so maybe just
>> needs
>> > to be coordinated among developments:
>> >
>> > 1. Broker -> Controller: ISR Change, Topic Creation, Admin Redirect
>> > (KIP-497).
>> > 2. Controller -> Broker: LeaderAndISR / MetadataUpdate; though these are
>> > likely going to be deprecated post KIP-500.
>> > 3. Txn Coordinator -> Broker: TxnMarker
>> >
>> >
>> > Guozhang
>> >
>> > On Wed, May 6, 2020 at 8:58 PM Boyang Chen <reluctanthero...@gmail.com>
>> > wrote:
>> >
>> > > Hey David,
>> > >
>> > > thanks for the feedbacks!
>> > >
>> > > On Wed, May 6, 2020 at 2:06 AM David Jacot <dja...@confluent.io>
>> wrote:
>> > >
>> > > > Hi Boyang,
>> > > >
>> > > > While re-reading the KIP, I've got few small questions/comments:
>> > > >
>> > > > 1. When auto topic creation is enabled, brokers will send a
>> > > > CreateTopicRequest
>> > > > to the controller instead of writing to ZK directly. It means that
>> > > > creation of these
>> > > > topics are subject to be rejected with an error if a
>> CreateTopicPolicy
>> > is
>> > > > used. Today,
>> > > > it bypasses the policy entirely. I suppose that clusters allowing
>> auto
>> > > > topic creation
>> > > > don't have a policy in place so it is not a big deal. I suggest to
>> call
>> > > > out explicitly the
>> > > > limitation in the KIP though.
>> > > >
>> > > > That's a good idea, will add to the KIP.
>> > >
>> > >
>> > > > 2. In the same vein as my first point. How do you plan to handle
>> errors
>> > > > when internal
>> > > > topics are created by a broker? Do you plan to retry retryable
>> errors
>> > > > indefinitely?
>> > > >
>> > > > I checked a bit on the admin client handling of the create topic
>> RPC.
>> > It
>> > > seems that
>> > > the only retriable exceptions at the moment are NOT_CONTROLLER and
>> > > REQUEST_TIMEOUT.
>> > > So I guess we just need to retry on these exceptions?
>> > >
>> > >
>> > > > 3. Could you clarify which listener will be used for the internal
>> > > requests?
>> > > > Do you plan
>> > > > to use the control plane listener or perhaps the inter-broker
>> listener?
>> > > >
>> > > > As we discussed in the KIP, currently the internal design for
>> > > broker->controller channel has not been
>> > > done yet, and I feel it makes sense to consolidate redirect RPC and
>> > > internal topic creation RPC to this future channel,
>> > > which are details to be filled in the near future, right now some
>> > > controller refactoring effort is still WIP.
>> > >
>> > >
>> > > > Thanks,
>> > > > David
>> > > >
>> > > > On Mon, May 4, 2020 at 9:37 AM Sönke Liebau
>> > > > <soenke.lie...@opencore.com.invalid> wrote:
>> > > >
>> > > > > Ah, I see, thanks for the clarification!
>> > > > >
>> > > > > Shouldn't be an issue I think. My understanding of KIPs was always
>> > that
>> > > > > they are mostly intended as a place to discuss and agree changes
>> up
>> > > > front,
>> > > > > whereas tracking the actual releases that things go into should be
>> > > > handled
>> > > > > in Jira.
>> > > > > So maybe we just create new jiras for any subsequent work and
>> either
>> > > link
>> > > > > those or make them subtasks (even though this jira is already a
>> > subtask
>> > > > > itself), that should allow us to properly track all releases that
>> > work
>> > > > goes
>> > > > > into.
>> > > > >
>> > > > > Thanks for your work on this!!
>> > > > >
>> > > > > Best,
>> > > > > Sönke
>> > > > >
>> > > > >
>> > > > > On Sat, 2 May 2020 at 00:31, Boyang Chen <
>> reluctanthero...@gmail.com
>> > >
>> > > > > wrote:
>> > > > >
>> > > > > > Sure thing Sonke, what I suggest is that usual KIPs get
>> accepted to
>> > > go
>> > > > > into
>> > > > > > next release. It could span for a couple of releases because of
>> > > > > engineering
>> > > > > > time, but no change has to be shipped in specific future
>> releases,
>> > > like
>> > > > > the
>> > > > > > backward incompatible change for KafkaPrincipal. But I guess
>> it's
>> > not
>> > > > > > really a blocker, as long as we stated clearly in the KIP how we
>> > are
>> > > > > going
>> > > > > > to roll things out, and let it partially finish in 2.6.
>> > > > > >
>> > > > > > Boyang
>> > > > > >
>> > > > > > On Fri, May 1, 2020 at 2:32 PM Sönke Liebau
>> > > > > > <soenke.lie...@opencore.com.invalid> wrote:
>> > > > > >
>> > > > > > > Hi Boyang,
>> > > > > > >
>> > > > > > > thanks for the update, sounds reasonable to me. Making it a
>> > > breaking
>> > > > > > change
>> > > > > > > is definitely the safer route to go.
>> > > > > > >
>> > > > > > > Just one quick question regarding your mail, I didn't fully
>> > > > understand
>> > > > > > what
>> > > > > > > you mean by "I think this is the first time we need to
>> introduce
>> > a
>> > > > KIP
>> > > > > > > without having it
>> > > > > > > fully accepted in next release."  - could you perhaps explain
>> > that
>> > > > some
>> > > > > > > more very briefly?
>> > > > > > >
>> > > > > > > Best regards,
>> > > > > > > Sönke
>> > > > > > >
>> > > > > > >
>> > > > > > >
>> > > > > > > On Fri, 1 May 2020 at 23:03, Boyang Chen <
>> > > reluctanthero...@gmail.com
>> > > > >
>> > > > > > > wrote:
>> > > > > > >
>> > > > > > > > Hey Tom,
>> > > > > > > >
>> > > > > > > > thanks for the suggestion. As long as we could correctly
>> > > serialize
>> > > > > the
>> > > > > > > > principal and embed in the Envelope, I think we could still
>> > > > leverage
>> > > > > > the
>> > > > > > > > controller to do the client request authentication. Although
>> > this
>> > > > > pays
>> > > > > > an
>> > > > > > > > extra round trip if the authorization is doomed to fail on
>> the
>> > > > > receiver
>> > > > > > > > side, having a centralized processing unit is more favorable
>> > such
>> > > > as
>> > > > > > > > ensuring the audit log is consistent instead of scattering
>> > > between
>> > > > > > > > forwarder and receiver.
>> > > > > > > >
>> > > > > > > > Boyang
>> > > > > > > >
>> > > > > > > > On Wed, Apr 29, 2020 at 9:50 AM Tom Bentley <
>> > tbent...@redhat.com
>> > > >
>> > > > > > wrote:
>> > > > > > > >
>> > > > > > > > > Hi Boyang,
>> > > > > > > > >
>> > > > > > > > > Thanks for the update. In the EnvelopeRequest handling
>> > section
>> > > of
>> > > > > the
>> > > > > > > KIP
>> > > > > > > > > it might be worth saying explicitly that authorization of
>> the
>> > > > > request
>> > > > > > > > will
>> > > > > > > > > happen as normal. Otherwise what you're proposing makes
>> sense
>> > > to
>> > > > > me.
>> > > > > > > > >
>> > > > > > > > > Thanks again,
>> > > > > > > > >
>> > > > > > > > > Tom
>> > > > > > > > >
>> > > > > > > > >
>> > > > > > > > >
>> > > > > > > > > On Wed, Apr 29, 2020 at 5:27 PM Boyang Chen <
>> > > > > > > reluctanthero...@gmail.com>
>> > > > > > > > > wrote:
>> > > > > > > > >
>> > > > > > > > > > Thanks for the proposed idea Sonke. I reviewed it and
>> had
>> > > some
>> > > > > > > offline
>> > > > > > > > > > discussion with Colin, Rajini and Mathew.
>> > > > > > > > > >
>> > > > > > > > > > We do need to add serializability to the
>> PrincipalBuilder
>> > > > > > interface,
>> > > > > > > > but
>> > > > > > > > > we
>> > > > > > > > > > should not make any default implementation which could
>> go
>> > > wrong
>> > > > > and
>> > > > > > > > messy
>> > > > > > > > > > up with the security in a production environment if the
>> > user
>> > > > > > neglects
>> > > > > > > > it.
>> > > > > > > > > > Instead we need to make it required and backward
>> > > incompatible.
>> > > > > So I
>> > > > > > > > > > integrated your proposed methods and expand the Envelope
>> > RPC
>> > > > > with a
>> > > > > > > > > couple
>> > > > > > > > > > of more fields for audit log purpose as well.
>> > > > > > > > > >
>> > > > > > > > > > Since the KafkaPrincipal builder serializability is a
>> > binary
>> > > > > > > > incompatible
>> > > > > > > > > > change, I propose (also stated in the KIP) the following
>> > > > > > > implementation
>> > > > > > > > > > plan:
>> > > > > > > > > >
>> > > > > > > > > >    1. For next *2.x* release:
>> > > > > > > > > >       1. Get new admin client forwarding changes
>> > > > > > > > > >       2. Get the Envelope RPC implementation
>> > > > > > > > > >       3. Get the forwarding path working and validate
>> the
>> > > > > function
>> > > > > > > with
>> > > > > > > > > >       fake principals in testing environment, without
>> > actual
>> > > > > > > triggering
>> > > > > > > > > in
>> > > > > > > > > > the
>> > > > > > > > > >       production system
>> > > > > > > > > >    2. For next *3.0 *release:
>> > > > > > > > > >       1. Introduce serializability to PrincipalBuilder
>> > > > > > > > > >       2. Turn on forwarding path in production and
>> perform
>> > > > > > end-to-end
>> > > > > > > > > >       testing
>> > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > > > I think this is the first time we need to introduce a
>> KIP
>> > > > without
>> > > > > > > > having
>> > > > > > > > > it
>> > > > > > > > > > fully accepted in next release. Let me know if this
>> sounds
>> > > > > > > reasonable.
>> > > > > > > > > >
>> > > > > > > > > > On Fri, Apr 24, 2020 at 1:00 AM Sönke Liebau
>> > > > > > > > > > <soenke.lie...@opencore.com.invalid> wrote:
>> > > > > > > > > >
>> > > > > > > > > > > After thinking on this a little bit, maybe this would
>> be
>> > an
>> > > > > > option:
>> > > > > > > > > > >
>> > > > > > > > > > > add default methods serialize and deserialize to the
>> > > > > > > > > > KafkaPrincipalBuilder
>> > > > > > > > > > > interface, these could be very short:
>> > > > > > > > > > >
>> > > > > > > > > > > default String serialize(KafkaPrincipal principal) {
>> > > > > > > > > > >     return principal.toString();
>> > > > > > > > > > > }
>> > > > > > > > > > >
>> > > > > > > > > > > default KafkaPrincipal deserialize(String
>> > principalString)
>> > > {
>> > > > > > > > > > >     return
>> > > > SecurityUtils.parseKafkaPrincipal(principalString);
>> > > > > > > > > > > }
>> > > > > > > > > > >
>> > > > > > > > > > > This would mean that all existing implementations of
>> that
>> > > > > > interface
>> > > > > > > > > > > are unaffected, as this code is pretty much what is
>> > > currently
>> > > > > > being
>> > > > > > > > > > > used when their principals need to be serialized.
>> > > > > > > > > > >
>> > > > > > > > > > > But it offers people using custom principals the
>> chance
>> > to
>> > > > > > override
>> > > > > > > > > > > these methods and ensure that all information gets
>> > > serialized
>> > > > > for
>> > > > > > > > > > > delegation tokens or request forwarding.
>> > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > > > Wherever we need to de/serialize principals (for
>> example
>> > in
>> > > > the
>> > > > > > > > > > > DelegationTokenManager [1]) we obtain an instance of
>> the
>> > > > > > configured
>> > > > > > > > > > > PrincipalBuilder class and use that to do the actual
>> > work.
>> > > > > > > > > > >
>> > > > > > > > > > > What do you think?
>> > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > > > Best regards,
>> > > > > > > > > > >
>> > > > > > > > > > > Sönke
>> > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > > > [1]
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://github.com/apache/kafka/blob/33d06082117d971cdcddd4f01392006b543f3c01/core/src/main/scala/kafka/server/DelegationTokenManager.scala#L122
>> > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > > > On Thu, 23 Apr 2020 at 17:42, Boyang Chen <
>> > > > > > > > reluctanthero...@gmail.com>
>> > > > > > > > > > > wrote:
>> > > > > > > > > > >
>> > > > > > > > > > > > Thanks all,
>> > > > > > > > > > > >
>> > > > > > > > > > > > IIUC, the necessity of doing the audit log on the
>> > > > controller
>> > > > > > side
>> > > > > > > > is
>> > > > > > > > > > > > because we need to make sure the authorized resource
>> > > > > > > modifications
>> > > > > > > > > > > > eventually arrive on the target broker side, but is
>> > that
>> > > > > really
>> > > > > > > > > > > necessary?
>> > > > > > > > > > > >
>> > > > > > > > > > > > I'm thinking the possibility of doing the audit log
>> on
>> > > the
>> > > > > > > > forwarding
>> > > > > > > > > > > > broker side, which could simplify the discussion of
>> > > > principal
>> > > > > > > > > > > serialization
>> > > > > > > > > > > > here. The other option I could think of is to
>> serialize
>> > > the
>> > > > > > > entire
>> > > > > > > > > > audit
>> > > > > > > > > > > > log message if we were supposed to approve, and
>> pass it
>> > > as
>> > > > > part
>> > > > > > > of
>> > > > > > > > > the
>> > > > > > > > > > > > Envelope.
>> > > > > > > > > > > >
>> > > > > > > > > > > > Let me know if you think either of these approaches
>> > would
>> > > > > work.
>> > > > > > > > > > > >
>> > > > > > > > > > > > On Thu, Apr 23, 2020 at 7:01 AM Sönke Liebau
>> > > > > > > > > > > > <soenke.lie...@opencore.com.invalid> wrote:
>> > > > > > > > > > > >
>> > > > > > > > > > > > > I agree that this would be useful to have and
>> > shouldn't
>> > > > > > create
>> > > > > > > > > issues
>> > > > > > > > > > > in
>> > > > > > > > > > > > > 99% of all cases. But it would be a breaking
>> change
>> > to
>> > > a
>> > > > > > public
>> > > > > > > > > API.
>> > > > > > > > > > > > > I had a quick look at the two large projects that
>> > come
>> > > to
>> > > > > > mind
>> > > > > > > > > which
>> > > > > > > > > > > > might
>> > > > > > > > > > > > > be affected: Ranger and Sentry - both seem to
>> operate
>> > > > > > directly
>> > > > > > > > with
>> > > > > > > > > > > > > KafkaPrincipal instead of subclassing it. But
>> anybody
>> > > who
>> > > > > > > > > > > > > extended KafkaPrincipal would probably need to
>> update
>> > > > their
>> > > > > > > > code..
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > Writing this sparked the thought that this issue
>> > should
>> > > > > also
>> > > > > > > > > concern
>> > > > > > > > > > > > > delegation tokens, as Principals need to be
>> > stored/sent
>> > > > > > around
>> > > > > > > > for
>> > > > > > > > > > > those
>> > > > > > > > > > > > > too.
>> > > > > > > > > > > > > Had a brief look at the code and for Delegation
>> > Tokens
>> > > we
>> > > > > > seem
>> > > > > > > to
>> > > > > > > > > use
>> > > > > > > > > > > > > SecurityUtils#parseKafkaPrincipal[1] which would
>> > ignore
>> > > > any
>> > > > > > > > > > additional
>> > > > > > > > > > > > > information from custom Principals.
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > We'll probably want to at least add a note on
>> that to
>> > > the
>> > > > > > docs
>> > > > > > > -
>> > > > > > > > > > unless
>> > > > > > > > > > > > it
>> > > > > > > > > > > > > is there already, I've only looked for about 30
>> > > seconds..
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > Best regards,
>> > > > > > > > > > > > > Sönke
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > [1]
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://github.com/apache/kafka/blob/e9fcfe4fb7b9ae2f537ce355fe2ab51a58034c64/clients/src/main/java/org/apache/kafka/common/utils/SecurityUtils.java#L52
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > On Thu, 23 Apr 2020 at 14:35, Colin McCabe <
>> > > > > > cmcc...@apache.org
>> > > > > > > >
>> > > > > > > > > > wrote:
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > > Hmm... Maybe we need to add some way to
>> serialize
>> > and
>> > > > > > > > deserialize
>> > > > > > > > > > > > > > KafkaPrincipal subclasses to/from string.  We
>> could
>> > > > add a
>> > > > > > > > method
>> > > > > > > > > to
>> > > > > > > > > > > > > > KafkaPrincipalBuilder#deserialize and a method
>> > > > > > > > > > > > KafkaPrincipal#serialize,
>> > > > > > > > > > > > > I
>> > > > > > > > > > > > > > suppose.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > best,
>> > > > > > > > > > > > > > Colin
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > On Thu, Apr 23, 2020, at 02:14, Tom Bentley
>> wrote:
>> > > > > > > > > > > > > > > Hi folks,
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > Colin wrote:
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > The final broker knows it can trust the
>> > principal
>> > > > > name
>> > > > > > in
>> > > > > > > > the
>> > > > > > > > > > > > > envelope
>> > > > > > > > > > > > > > > > (since EnvelopeRequest requires
>> CLUSTERACTION
>> > on
>> > > > > > > CLUSTER).
>> > > > > > > > > So
>> > > > > > > > > > it
>> > > > > > > > > > > > can
>> > > > > > > > > > > > > > use
>> > > > > > > > > > > > > > > > that principal name for authorization (given
>> > who
>> > > > you
>> > > > > > are,
>> > > > > > > > > what
>> > > > > > > > > > > can
>> > > > > > > > > > > > > you
>> > > > > > > > > > > > > > > > do?)  The forwarded principal name will
>> also be
>> > > > used
>> > > > > > for
>> > > > > > > > > > logging.
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > My understanding (and I'm happy to be
>> corrected)
>> > is
>> > > > > that
>> > > > > > a
>> > > > > > > > > custom
>> > > > > > > > > > > > > > > authoriser might rely on the KafkaPrincipal
>> > > instance
>> > > > > > being
>> > > > > > > a
>> > > > > > > > > > > subclass
>> > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > KafkaPrincipal (e.g. the subclass has extra
>> > fields
>> > > > with
>> > > > > > the
>> > > > > > > > > > > > principal's
>> > > > > > > > > > > > > > > "roles"). So you can't construct a
>> KafkaPrinicpal
>> > > on
>> > > > > the
>> > > > > > > > > > controller
>> > > > > > > > > > > > > which
>> > > > > > > > > > > > > > > would be guaranteed to work for arbitrary
>> > > > authorizers.
>> > > > > > You
>> > > > > > > > have
>> > > > > > > > > > to
>> > > > > > > > > > > > > > perform
>> > > > > > > > > > > > > > > authorization on the first broker (rejecting
>> some
>> > > of
>> > > > > the
>> > > > > > > > > batched
>> > > > > > > > > > > > > > requests),
>> > > > > > > > > > > > > > > forward the authorized ones to the controller,
>> > > which
>> > > > > then
>> > > > > > > has
>> > > > > > > > > to
>> > > > > > > > > > > > trust
>> > > > > > > > > > > > > > that
>> > > > > > > > > > > > > > > the authorization has been done and make the
>> ZK
>> > > > writes
>> > > > > > > > without
>> > > > > > > > > > > > > > > authorization. Because the controller cannot
>> > invoke
>> > > > the
>> > > > > > > > > > authorizer
>> > > > > > > > > > > > that
>> > > > > > > > > > > > > > > means that the authorizer audit logging (on
>> the
>> > > > > > controller)
>> > > > > > > > > would
>> > > > > > > > > > > not
>> > > > > > > > > > > > > > > include these operations. But they would be in
>> > the
>> > > > > audit
>> > > > > > > > > logging
>> > > > > > > > > > > from
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > original broker, so the information would not
>> be
>> > > > lost.
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > There's also a problem with using the
>> constructed
>> > > > > > principal
>> > > > > > > > for
>> > > > > > > > > > > other
>> > > > > > > > > > > > > > > logging (i.e. non authorizer logging) on the
>> > > > > controller:
>> > > > > > > > > There's
>> > > > > > > > > > > > > nothing
>> > > > > > > > > > > > > > > stopping a custom KafkaPrincipal subclass from
>> > > > > overriding
>> > > > > > > > > > > toString()
>> > > > > > > > > > > > to
>> > > > > > > > > > > > > > > return something different from
>> > "${type}:${name}".
>> > > If
>> > > > > > > you're
>> > > > > > > > > > > > building a
>> > > > > > > > > > > > > > > "fake" KafkaPrincipal on the controller from
>> the
>> > > type
>> > > > > and
>> > > > > > > > name
>> > > > > > > > > > then
>> > > > > > > > > > > > its
>> > > > > > > > > > > > > > > toString() would be "wrong". A solution to
>> this
>> > > would
>> > > > > be
>> > > > > > to
>> > > > > > > > > also
>> > > > > > > > > > > > > > serialize
>> > > > > > > > > > > > > > > the toString() into the envelope and have some
>> > > > > > > > > > > ProxiedKafkaPrincipal
>> > > > > > > > > > > > > > class
>> > > > > > > > > > > > > > > which you instantiate on the controller which
>> has
>> > > > > > > overridden
>> > > > > > > > > > > toString
>> > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > return the right value. Obviously you could
>> > > optimize
>> > > > > this
>> > > > > > > > using
>> > > > > > > > > > an
>> > > > > > > > > > > > > > optional
>> > > > > > > > > > > > > > > field so you only serialize the toString() if
>> it
>> > > > > differed
>> > > > > > > > from
>> > > > > > > > > > the
>> > > > > > > > > > > > > value
>> > > > > > > > > > > > > > > you'd get from KafkaPrincipal.toString().
>> Maybe
>> > > > > non-audit
>> > > > > > > > > logging
>> > > > > > > > > > > > using
>> > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > wrong string value of a principal is
>> sufficiently
>> > > > minor
>> > > > > > > that
>> > > > > > > > > this
>> > > > > > > > > > > > isn't
>> > > > > > > > > > > > > > > even worth trying to solve.
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > Kind regards,
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > Tom
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > On Wed, Apr 22, 2020 at 10:59 PM Sönke Liebau
>> > > > > > > > > > > > > > > <soenke.lie...@opencore.com.invalid> wrote:
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > Hi Colin,
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > thanks for your summary! Just one question -
>> > and
>> > > I
>> > > > > may
>> > > > > > be
>> > > > > > > > > > missing
>> > > > > > > > > > > > an
>> > > > > > > > > > > > > > > > obvious point here..
>> > > > > > > > > > > > > > > > You write:
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > "The initial broker should do authentication
>> > (who
>> > > > are
>> > > > > > > you?)
>> > > > > > > > > and
>> > > > > > > > > > > > come
>> > > > > > > > > > > > > up
>> > > > > > > > > > > > > > > > with a principal name.  Then it creates an
>> > > envelope
>> > > > > > > > request,
>> > > > > > > > > > > which
>> > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > contain that principal name, and sends it
>> along
>> > > > with
>> > > > > > the
>> > > > > > > > > > > unmodified
>> > > > > > > > > > > > > > > > original request to the final broker.
>>  [... ]
>> > > The
>> > > > > > final
>> > > > > > > > > broker
>> > > > > > > > > > > > knows
>> > > > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > can trust the principal name in the envelope
>> > > (since
>> > > > > > > > > > > EnvelopeRequest
>> > > > > > > > > > > > > > > > requires CLUSTERACTION on CLUSTER).  So it
>> can
>> > > use
>> > > > > that
>> > > > > > > > > > principal
>> > > > > > > > > > > > > name
>> > > > > > > > > > > > > > for
>> > > > > > > > > > > > > > > > authorization (given who you are, what can
>> you
>> > > > do?) "
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > My understanding is, that you don't want to
>> > > > serialize
>> > > > > > the
>> > > > > > > > > > > Principal
>> > > > > > > > > > > > > > (due to
>> > > > > > > > > > > > > > > > the discussed issues with custom principals)
>> > but
>> > > > > reduce
>> > > > > > > the
>> > > > > > > > > > > > principal
>> > > > > > > > > > > > > > down
>> > > > > > > > > > > > > > > > to a string representation that would be
>> used
>> > for
>> > > > > > logging
>> > > > > > > > and
>> > > > > > > > > > > > > > > > authorization?
>> > > > > > > > > > > > > > > > If that understanding is correct then I
>> don't
>> > > think
>> > > > > we
>> > > > > > > > could
>> > > > > > > > > > use
>> > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > regular Authorizer on the target broker,
>> > because
>> > > > that
>> > > > > > > would
>> > > > > > > > > > need
>> > > > > > > > > > > > the
>> > > > > > > > > > > > > > actual
>> > > > > > > > > > > > > > > > principal object to work on.
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > Also, a thought that just occurred to me, we
>> > > might
>> > > > > > > actually
>> > > > > > > > > > need
>> > > > > > > > > > > to
>> > > > > > > > > > > > > log
>> > > > > > > > > > > > > > > > different principal strings for the case of
>> > > queries
>> > > > > > like
>> > > > > > > > > > > > AlterConfigs
>> > > > > > > > > > > > > > > > (mentioned by Rajini) which may contain
>> > multiple
>> > > > > > > resources.
>> > > > > > > > > > Take
>> > > > > > > > > > > an
>> > > > > > > > > > > > > > LDAP
>> > > > > > > > > > > > > > > > authorizer that grants access based on group
>> > > > > > membership -
>> > > > > > > > the
>> > > > > > > > > > > same
>> > > > > > > > > > > > > > > > alterconfig request may contain resources
>> that
>> > > are
>> > > > > > > > authorized
>> > > > > > > > > > > based
>> > > > > > > > > > > > > on
>> > > > > > > > > > > > > > > > group1 as well as resources authorized
>> based on
>> > > > > > > membership
>> > > > > > > > in
>> > > > > > > > > > > > group 2
>> > > > > > > > > > > > > > ..
>> > > > > > > > > > > > > > > > And in all cases we'd need to log the
>> specific
>> > > > > reason I
>> > > > > > > > > think..
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > Basically I think that we might have a hard
>> > time
>> > > > > > properly
>> > > > > > > > > > > > authorizing
>> > > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > > logging without being able to forward the
>> > entire
>> > > > > > > > principal..
>> > > > > > > > > > but
>> > > > > > > > > > > > > > again, I
>> > > > > > > > > > > > > > > > might be heading down an entirely wrong path
>> > here
>> > > > :)
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > Best regards,
>> > > > > > > > > > > > > > > > Sönke
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > On Wed, 22 Apr 2020 at 23:13, Guozhang Wang
>> <
>> > > > > > > > > > wangg...@gmail.com>
>> > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > Colin, Boyang: thanks for the updates, I
>> > agree
>> > > > that
>> > > > > > an
>> > > > > > > > > > > > > > EnvelopeRequest
>> > > > > > > > > > > > > > > > > would be a less vulnerable approach than
>> > > optional
>> > > > > > > fields,
>> > > > > > > > > and
>> > > > > > > > > > > I'm
>> > > > > > > > > > > > > > just
>> > > > > > > > > > > > > > > > > wondering if we would keep the
>> > EnvelopeRequest
>> > > > for
>> > > > > a
>> > > > > > > long
>> > > > > > > > > > > time. I
>> > > > > > > > > > > > > was
>> > > > > > > > > > > > > > > > > thinking that, potentially if we require
>> > > clients
>> > > > to
>> > > > > > be
>> > > > > > > on
>> > > > > > > > > > newer
>> > > > > > > > > > > > > > version
>> > > > > > > > > > > > > > > > > when talking to a 3.0+ (assuming 3.0 is
>> the
>> > > > bridge
>> > > > > > > > release)
>> > > > > > > > > > > > > brokers,
>> > > > > > > > > > > > > > then
>> > > > > > > > > > > > > > > > > we do not need to keep this code for too
>> > long,
>> > > > but
>> > > > > I
>> > > > > > > > think
>> > > > > > > > > > that
>> > > > > > > > > > > > > > would be
>> > > > > > > > > > > > > > > > a
>> > > > > > > > > > > > > > > > > very hasty compatibility breaking so
>> maybe we
>> > > > > indeed
>> > > > > > > need
>> > > > > > > > > to
>> > > > > > > > > > > keep
>> > > > > > > > > > > > > > this
>> > > > > > > > > > > > > > > > > forwarding mechanism many years.
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > Regarding future use cases, I think the
>> > example
>> > > > > that
>> > > > > > > > Boyang
>> > > > > > > > > > > > > > mentioned may
>> > > > > > > > > > > > > > > > > not be very practical honestly, because
>> when
>> > > > > there's
>> > > > > > a
>> > > > > > > > > > > > connectivity
>> > > > > > > > > > > > > > > > issue,
>> > > > > > > > > > > > > > > > > it is either a network partition between
>> > > > > "controller,
>> > > > > > > A |
>> > > > > > > > > B",
>> > > > > > > > > > > or
>> > > > > > > > > > > > > > > > > "controller | A, B". In other words, if
>> the
>> > > > > > controller
>> > > > > > > > can
>> > > > > > > > > > talk
>> > > > > > > > > > > > to
>> > > > > > > > > > > > > A,
>> > > > > > > > > > > > > > > > then
>> > > > > > > > > > > > > > > > > very likely A would not be able to talk
>> to B
>> > > > > > either...
>> > > > > > > > > > anyways,
>> > > > > > > > > > > > > > since the
>> > > > > > > > > > > > > > > > > forwarding would be there for a
>> sufficiently
>> > > long
>> > > > > > > time, I
>> > > > > > > > > > think
>> > > > > > > > > > > > > > keeping
>> > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > additional envelope makes sense.
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > Guozhang
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > On Wed, Apr 22, 2020 at 1:47 PM Boyang
>> Chen <
>> > > > > > > > > > > > > > reluctanthero...@gmail.com>
>> > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > Thanks Colin for the summary! And
>> Guozhang,
>> > > > > > regarding
>> > > > > > > > the
>> > > > > > > > > > > > future
>> > > > > > > > > > > > > > use
>> > > > > > > > > > > > > > > > > cases,
>> > > > > > > > > > > > > > > > > > consider a scenario where there are
>> > temporary
>> > > > > > > > > connectivity
>> > > > > > > > > > > > issue
>> > > > > > > > > > > > > > > > between
>> > > > > > > > > > > > > > > > > > controller to a fellow broker A, the
>> > > controller
>> > > > > > could
>> > > > > > > > > then
>> > > > > > > > > > > > > leverage
>> > > > > > > > > > > > > > > > > another
>> > > > > > > > > > > > > > > > > > healthy broker B to do a forwarding
>> request
>> > > to
>> > > > A
>> > > > > in
>> > > > > > > > order
>> > > > > > > > > > to
>> > > > > > > > > > > > > > maintain a
>> > > > > > > > > > > > > > > > > > communication.
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > Even for KIP-590 scope, the forwarding
>> > > > mechanism
>> > > > > > > shall
>> > > > > > > > > not
>> > > > > > > > > > be
>> > > > > > > > > > > > > > transit
>> > > > > > > > > > > > > > > > as
>> > > > > > > > > > > > > > > > > we
>> > > > > > > > > > > > > > > > > > do need to support older version of
>> admin
>> > > > clients
>> > > > > > > for a
>> > > > > > > > > > > couple
>> > > > > > > > > > > > of
>> > > > > > > > > > > > > > years
>> > > > > > > > > > > > > > > > > > IIUC.
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > Boyang
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > On Wed, Apr 22, 2020 at 1:29 PM Colin
>> > McCabe
>> > > <
>> > > > > > > > > > > > cmcc...@apache.org
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > Hi all,
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > I guess the way I see this working is
>> > that
>> > > > the
>> > > > > > > > request
>> > > > > > > > > > gets
>> > > > > > > > > > > > > sent
>> > > > > > > > > > > > > > from
>> > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > client, to the initial broker, and
>> then
>> > > > > forwarded
>> > > > > > > to
>> > > > > > > > > the
>> > > > > > > > > > > > final
>> > > > > > > > > > > > > > > > broker.
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > The initial broker should do
>> > authentication
>> > > > > (who
>> > > > > > > are
>> > > > > > > > > > you?)
>> > > > > > > > > > > > and
>> > > > > > > > > > > > > > come
>> > > > > > > > > > > > > > > > up
>> > > > > > > > > > > > > > > > > > > with a principal name.  Then it
>> creates
>> > an
>> > > > > > envelope
>> > > > > > > > > > > request,
>> > > > > > > > > > > > > > which
>> > > > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > > > > contain that principal name, and
>> sends it
>> > > > along
>> > > > > > > with
>> > > > > > > > > the
>> > > > > > > > > > > > > > unmodified
>> > > > > > > > > > > > > > > > > > > original request to the final
>> broker.  (I
>> > > > agree
>> > > > > > > with
>> > > > > > > > > Tom
>> > > > > > > > > > > and
>> > > > > > > > > > > > > > Rajini
>> > > > > > > > > > > > > > > > > that
>> > > > > > > > > > > > > > > > > > we
>> > > > > > > > > > > > > > > > > > > can't forward the information needed
>> to
>> > do
>> > > > > > > > > authentication
>> > > > > > > > > > > on
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > final
>> > > > > > > > > > > > > > > > > > > broker, but I also think we don't need
>> > to,
>> > > > > since
>> > > > > > we
>> > > > > > > > can
>> > > > > > > > > > do
>> > > > > > > > > > > it
>> > > > > > > > > > > > > on
>> > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > initial broker.)
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > The final broker knows it can trust
>> the
>> > > > > principal
>> > > > > > > > name
>> > > > > > > > > in
>> > > > > > > > > > > the
>> > > > > > > > > > > > > > > > envelope
>> > > > > > > > > > > > > > > > > > > (since EnvelopeRequest requires
>> > > CLUSTERACTION
>> > > > > on
>> > > > > > > > > > CLUSTER).
>> > > > > > > > > > > > So
>> > > > > > > > > > > > > > it can
>> > > > > > > > > > > > > > > > > use
>> > > > > > > > > > > > > > > > > > > that principal name for authorization
>> > > (given
>> > > > > who
>> > > > > > > you
>> > > > > > > > > are,
>> > > > > > > > > > > > what
>> > > > > > > > > > > > > > can
>> > > > > > > > > > > > > > > > you
>> > > > > > > > > > > > > > > > > > > do?)  The forwarded principal name
>> will
>> > > also
>> > > > be
>> > > > > > > used
>> > > > > > > > > for
>> > > > > > > > > > > > > logging.
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > One question is why we need an
>> > > > EnvelopeRequest.
>> > > > > > > > Well,
>> > > > > > > > > if
>> > > > > > > > > > > we
>> > > > > > > > > > > > > > don't
>> > > > > > > > > > > > > > > > have
>> > > > > > > > > > > > > > > > > > an
>> > > > > > > > > > > > > > > > > > > EnvelopeRequest, we need somewhere
>> else
>> > to
>> > > > put
>> > > > > > the
>> > > > > > > > > > > forwarded
>> > > > > > > > > > > > > > > > principal
>> > > > > > > > > > > > > > > > > > > name.  I don't think overriding an
>> > existing
>> > > > > field
>> > > > > > > > (like
>> > > > > > > > > > > > > > clientId) is
>> > > > > > > > > > > > > > > > a
>> > > > > > > > > > > > > > > > > > good
>> > > > > > > > > > > > > > > > > > > option for this.  It's messy, and
>> loses
>> > > > > > > information.
>> > > > > > > > > It
>> > > > > > > > > > > also
>> > > > > > > > > > > > > > raises
>> > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > question of how the final broker knows
>> > that
>> > > > the
>> > > > > > > > > clientId
>> > > > > > > > > > in
>> > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > received
>> > > > > > > > > > > > > > > > > > > message is not "really" a clientId,
>> but
>> > is
>> > > a
>> > > > > > > > principal
>> > > > > > > > > > > name.
>> > > > > > > > > > > > > > Without
>> > > > > > > > > > > > > > > > > an
>> > > > > > > > > > > > > > > > > > > envelope, there's no way to clearly
>> mark
>> > a
>> > > > > > request
>> > > > > > > as
>> > > > > > > > > > > > > forwarded,
>> > > > > > > > > > > > > > so
>> > > > > > > > > > > > > > > > > > there's
>> > > > > > > > > > > > > > > > > > > no reason for the final broker to
>> treat
>> > > this
>> > > > > > > > > differently
>> > > > > > > > > > > > than a
>> > > > > > > > > > > > > > > > regular
>> > > > > > > > > > > > > > > > > > > clientId (or whatever).
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > We talked about using optional fields
>> to
>> > > > > contain
>> > > > > > > the
>> > > > > > > > > > > > forwarded
>> > > > > > > > > > > > > > > > > principal
>> > > > > > > > > > > > > > > > > > > name, but this is also messy and
>> > > potentially
>> > > > > > > > dangerous.
>> > > > > > > > > > > > Older
>> > > > > > > > > > > > > > > > brokers
>> > > > > > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > > > > simply ignore the optional fields,
>> which
>> > > > could
>> > > > > > > result
>> > > > > > > > > in
>> > > > > > > > > > > them
>> > > > > > > > > > > > > > > > executing
>> > > > > > > > > > > > > > > > > > > operations as the wrong principal.  Of
>> > > > course,
>> > > > > > this
>> > > > > > > > > would
>> > > > > > > > > > > > > > require a
>> > > > > > > > > > > > > > > > > > > misconfiguration in order to happen,
>> but
>> > it
>> > > > > still
>> > > > > > > > seems
>> > > > > > > > > > > > better
>> > > > > > > > > > > > > > to set
>> > > > > > > > > > > > > > > > > up
>> > > > > > > > > > > > > > > > > > > the system so that this
>> misconfiguration
>> > is
>> > > > > > > detected,
>> > > > > > > > > > > rather
>> > > > > > > > > > > > > than
>> > > > > > > > > > > > > > > > > > silently
>> > > > > > > > > > > > > > > > > > > ignored.
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > It's true that the need for
>> forwarding is
>> > > > > > > "temporary"
>> > > > > > > > > in
>> > > > > > > > > > > some
>> > > > > > > > > > > > > > sense,
>> > > > > > > > > > > > > > > > > > since
>> > > > > > > > > > > > > > > > > > > we only need it for older clients.
>> > > However,
>> > > > we
>> > > > > > > will
>> > > > > > > > > want
>> > > > > > > > > > > to
>> > > > > > > > > > > > > > support
>> > > > > > > > > > > > > > > > > > these
>> > > > > > > > > > > > > > > > > > > older clients for many years to come.
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > I agree that the usefulness of
>> > > > EnvelopeRequest
>> > > > > is
>> > > > > > > > > limited
>> > > > > > > > > > > by
>> > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > being a
>> > > > > > > > > > > > > > > > > > > superuser-only request at the moment.
>> > > > Perhaps
>> > > > > > > there
>> > > > > > > > > are
>> > > > > > > > > > > some
>> > > > > > > > > > > > > > changes
>> > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > how custom principals work that would
>> > allow
>> > > > us
>> > > > > to
>> > > > > > > get
>> > > > > > > > > > > around
>> > > > > > > > > > > > > > this in
>> > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > future.  We should think about that so
>> > that
>> > > > we
>> > > > > > have
>> > > > > > > > > this
>> > > > > > > > > > > > > > > > functionality
>> > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > the future if it's needed.
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > best,
>> > > > > > > > > > > > > > > > > > > Colin
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > On Wed, Apr 22, 2020, at 11:21,
>> Guozhang
>> > > Wang
>> > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > > > Hello Gwen,
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > The purpose here is for maintaining
>> > > > > > compatibility
>> > > > > > > > old
>> > > > > > > > > > > > > clients,
>> > > > > > > > > > > > > > who
>> > > > > > > > > > > > > > > > do
>> > > > > > > > > > > > > > > > > > not
>> > > > > > > > > > > > > > > > > > > > have functionality to do re-routing
>> > admin
>> > > > > > > requests
>> > > > > > > > > > > > > themselves.
>> > > > > > > > > > > > > > New
>> > > > > > > > > > > > > > > > > > > clients
>> > > > > > > > > > > > > > > > > > > > can of course do this themselves by
>> > > > detecting
>> > > > > > > who's
>> > > > > > > > > the
>> > > > > > > > > > > > > > controller.
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > Hello Colin / Boyang,
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > Regarding the usage of the envelope,
>> > I'm
>> > > > > > curious
>> > > > > > > > what
>> > > > > > > > > > are
>> > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > potential
>> > > > > > > > > > > > > > > > > > > > future use cases that would require
>> > > request
>> > > > > > > > > forwarding
>> > > > > > > > > > > and
>> > > > > > > > > > > > > > hence
>> > > > > > > > > > > > > > > > > > envelope
>> > > > > > > > > > > > > > > > > > > > would be useful? Originally I
>> thought
>> > > that
>> > > > > the
>> > > > > > > > > > forwarding
>> > > > > > > > > > > > > > mechanism
>> > > > > > > > > > > > > > > > > is
>> > > > > > > > > > > > > > > > > > > only
>> > > > > > > > > > > > > > > > > > > > temporary as we need it for the
>> bridge
>> > > > > release,
>> > > > > > > and
>> > > > > > > > > > > moving
>> > > > > > > > > > > > > > forward
>> > > > > > > > > > > > > > > > we
>> > > > > > > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > > > > > get rid of this to simplify the code
>> > > base.
>> > > > If
>> > > > > > we
>> > > > > > > do
>> > > > > > > > > > have
>> > > > > > > > > > > > > valid
>> > > > > > > > > > > > > > use
>> > > > > > > > > > > > > > > > > > cases
>> > > > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > the future which makes us believe
>> that
>> > > > > request
>> > > > > > > > > > forwarding
>> > > > > > > > > > > > > would
>> > > > > > > > > > > > > > > > > > actually
>> > > > > > > > > > > > > > > > > > > be
>> > > > > > > > > > > > > > > > > > > > a permanent feature retained on the
>> > > broker
>> > > > > > side,
>> > > > > > > > I'm
>> > > > > > > > > on
>> > > > > > > > > > > > board
>> > > > > > > > > > > > > > with
>> > > > > > > > > > > > > > > > > > adding
>> > > > > > > > > > > > > > > > > > > > the envelope request protocol.
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > Guozhang
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > On Wed, Apr 22, 2020 at 8:22 AM Gwen
>> > > > Shapira
>> > > > > <
>> > > > > > > > > > > > > > g...@confluent.io>
>> > > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > Hey Boyang,
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > Sorry if this was already
>> discussed,
>> > > but
>> > > > I
>> > > > > > > didn't
>> > > > > > > > > see
>> > > > > > > > > > > > this
>> > > > > > > > > > > > > as
>> > > > > > > > > > > > > > > > > > rejected
>> > > > > > > > > > > > > > > > > > > > > alternative:
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > Until now, we always did client
>> side
>> > > > > routing
>> > > > > > -
>> > > > > > > > the
>> > > > > > > > > > > client
>> > > > > > > > > > > > > > itself
>> > > > > > > > > > > > > > > > > > found
>> > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > controller via metadata and
>> directed
>> > > > > requests
>> > > > > > > > > > > > accordingly.
>> > > > > > > > > > > > > > > > Brokers
>> > > > > > > > > > > > > > > > > > that
>> > > > > > > > > > > > > > > > > > > > > were not the controller, rejected
>> > those
>> > > > > > > requests.
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > Why did we decide to move to
>> broker
>> > > side
>> > > > > > > routing?
>> > > > > > > > > Was
>> > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > client-side
>> > > > > > > > > > > > > > > > > > > > > option discussed and rejected
>> > somewhere
>> > > > > and I
>> > > > > > > > > missed
>> > > > > > > > > > > it?
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > Gwen
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > On Fri, Apr 3, 2020, 4:45 PM
>> Boyang
>> > > Chen
>> > > > <
>> > > > > > > > > > > > > > > > > reluctanthero...@gmail.com
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > Hey all,
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > I would like to start off the
>> > > > discussion
>> > > > > > for
>> > > > > > > > > > > KIP-590, a
>> > > > > > > > > > > > > > > > follow-up
>> > > > > > > > > > > > > > > > > > > > > > initiative after KIP-500:
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-590%3A+Redirect+Zookeeper+Mutation+Protocols+to+The+Controller
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > This KIP proposes to migrate
>> > existing
>> > > > > > > Zookeeper
>> > > > > > > > > > > > mutation
>> > > > > > > > > > > > > > paths,
>> > > > > > > > > > > > > > > > > > > including
>> > > > > > > > > > > > > > > > > > > > > > configuration, security and
>> quota
>> > > > > changes,
>> > > > > > to
>> > > > > > > > > > > > > > controller-only
>> > > > > > > > > > > > > > > > by
>> > > > > > > > > > > > > > > > > > > always
>> > > > > > > > > > > > > > > > > > > > > > routing these alterations to the
>> > > > > > controller.
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > Let me know your thoughts!
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > Best,
>> > > > > > > > > > > > > > > > > > > > > > Boyang
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > --
>> > > > > > > > > > > > > > > > > > > > -- Guozhang
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > --
>> > > > > > > > > > > > > > > > > -- Guozhang
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > --
>> > > > > > > > > > > > > > > > Sönke Liebau
>> > > > > > > > > > > > > > > > Partner
>> > > > > > > > > > > > > > > > Tel. +49 179 7940878
>> > > > > > > > > > > > > > > > OpenCore GmbH & Co. KG - Thomas-Mann-Straße
>> 8 -
>> > > > 22880
>> > > > > > > > Wedel -
>> > > > > > > > > > > > Germany
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > --
>> > > > > > > > > > > > > Sönke Liebau
>> > > > > > > > > > > > > Partner
>> > > > > > > > > > > > > Tel. +49 179 7940878
>> > > > > > > > > > > > > OpenCore GmbH & Co. KG - Thomas-Mann-Straße 8 -
>> 22880
>> > > > > Wedel -
>> > > > > > > > > Germany
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > > > --
>> > > > > > > > > > > Sönke Liebau
>> > > > > > > > > > > Partner
>> > > > > > > > > > > Tel. +49 179 7940878
>> > > > > > > > > > > OpenCore GmbH & Co. KG - Thomas-Mann-Straße 8 - 22880
>> > > Wedel -
>> > > > > > > Germany
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > > >
>> > > > > > > --
>> > > > > > > Sönke Liebau
>> > > > > > > Partner
>> > > > > > > Tel. +49 179 7940878
>> > > > > > > OpenCore GmbH & Co. KG - Thomas-Mann-Straße 8 - 22880 Wedel -
>> > > Germany
>> > > > > > >
>> > > > > >
>> > > > >
>> > > > >
>> > > > > --
>> > > > > Sönke Liebau
>> > > > > Partner
>> > > > > Tel. +49 179 7940878
>> > > > > OpenCore GmbH & Co. KG - Thomas-Mann-Straße 8 - 22880 Wedel -
>> Germany
>> > > > >
>> > > >
>> > >
>> >
>> >
>> > --
>> > -- Guozhang
>> >
>>
>

Reply via email to