Hi All,

If there are no more concerns, I will like to start vote for this KIP.

Thanks,

Mayuresh

On Wed, Feb 1, 2017 at 8:38 PM, Mayuresh Gharat <gharatmayures...@gmail.com>
wrote:

> Hi Dong,
>
> What I meant was "Right now Kafka just extracts the name out of the
> Principal that is generated by the PrincipalBuilder. Instead of doing that
> if it preserves the Principal itself, this issue can be addressed".
>
> May be I should have used the word "preserve" instead of "stores". I have
> updated the wording in the KIP.
>
> Thanks,
>
> Mayuresh
>
> On Wed, Feb 1, 2017 at 8:30 PM, Dong Lin <lindon...@gmail.com> wrote:
>
>> The last paragraph of the motivation section is a bit confusing. I guess
>> you want to say "This issue can be addressed if the Session class stores
>> the Principal object extracted from a request".
>>
>> I like the approach of changing Session class to be case class
>> *Session(principal:
>> KafkaPrincipal, clientAddress: InetAddress)* under the assumption that the
>> Session class doesn't really need principalType of the KafkaPrincipal. I
>> am
>> wondering if anyone in the open source mailing list knows why we need to
>> have principalType in KafkaPrincipal.
>>
>> For the record, I actually prefer that we use the existing configure() to
>> provide properties to PrincipalBuilder instead of adding the method
>> *buildPrincipal(Map<String,
>> ?> principalConfigs)* in the PrincipalBuilder interface. But this is not a
>> blocking issue for me.
>>
>>
>>
>>
>> On Wed, Feb 1, 2017 at 2:54 PM, Mayuresh Gharat <
>> gharatmayures...@gmail.com>
>> wrote:
>>
>> > Hi All,
>> >
>> > I have updated the KIP as per our discussion here.
>> > It would be great if you can take another look and let me know if there
>> are
>> > any concerns.
>> >
>> > Thanks,
>> >
>> > Mayuresh
>> >
>> > On Sat, Jan 28, 2017 at 6:10 PM, Mayuresh Gharat <
>> > gharatmayures...@gmail.com
>> > > wrote:
>> >
>> > > I had offline discussions with Joel, Dong and Radai.
>> > >
>> > > I agree that we can replace the KafkaPrincipal in Session with the
>> > > ChannelPrincipal.
>> > > KafkaPrincipal can be provided as an out of box implementation.
>> > >
>> > > The only gotcha will be users will have to implement there own
>> > Authorizer,
>> > > if they decide to use there own PrincipalBuilder in kafka-acls.sh.
>> > >
>> > > I will update the KIP accordingly.
>> > >
>> > > Thanks,
>> > >
>> > > Mayuresh
>> > >
>> > > On Thu, Jan 26, 2017 at 6:01 PM, Mayuresh Gharat <
>> > > gharatmayures...@gmail.com> wrote:
>> > >
>> > >> Hi Dong,
>> > >>
>> > >> Thanks for the review. Please see the replies inline.
>> > >>
>> > >>
>> > >> 1. I am not sure we need to add the method
>> buildPrincipal(Map<String, ?>
>> > >> principalConfigs). It seems that user can simply do
>> > >> principalBuilder.configure(...).buildPrincipal(...) without using
>> that
>> > >> method.
>> > >> ---------> I am not sure if I understand the question.
>> > >> buildPrincipal(Map<String, ?> principalConfigs) will be used to build
>> > >> individual Principals from the passed in configs. Each Principal can
>> be
>> > >> different type and the PrincipalBuilder is responsible for handling
>> > those
>> > >> configs correctly and build those Principals.
>> > >>
>> > >> 2. Is there any reason specific reason that we should put the
>> > >> channelPrincipal in KafkaPrincipal class instead of the Session
>> class?
>> > If
>> > >> they work equally well to serve the use-case of this KIP, then it
>> seems
>> > >> better to put this field in the Session class to avoid changing
>> > interface
>> > >> that needs to be implemented by custom principal.
>> > >> ---------> Doing this might be backwards incompatible as we need to
>> > >> preserve the existing behavior of kafka-acls.sh. Also as we have
>> field
>> > of
>> > >> PrincipalType which can be used in future if Kafka decides to support
>> > >> different Principal types (currently it just says "User"), we might
>> > loose
>> > >> that functionality.
>> > >>
>> > >> Thanks,
>> > >>
>> > >> Mayuresh
>> > >>
>> > >>
>> > >> On Tue, Jan 24, 2017 at 3:35 PM, Dong Lin <lindon...@gmail.com>
>> wrote:
>> > >>
>> > >>> Hey Mayuresh,
>> > >>>
>> > >>> Thanks for the KIP. I actually like the suggestions by Ismael and
>> Jun.
>> > >>> Here
>> > >>> are my comments:
>> > >>>
>> > >>> 1. I am not sure we need to add the method
>> buildPrincipal(Map<String,
>> > ?>
>> > >>> principalConfigs). It seems that user can simply do
>> > >>> principalBuilder.configure(...).buildPrincipal(...) without using
>> that
>> > >>> method.
>> > >>>
>> > >>> 2. Is there any reason specific reason that we should put the
>> > >>> channelPrincipal in KafkaPrincipal class instead of the Session
>> class?
>> > If
>> > >>> they work equally well to serve the use-case of this KIP, then it
>> seems
>> > >>> better to put this field in the Session class to avoid changing
>> > interface
>> > >>> that needs to be implemented by custom principal.
>> > >>>
>> > >>> Dong
>> > >>>
>> > >>>
>> > >>> On Mon, Jan 23, 2017 at 5:55 PM, Mayuresh Gharat <
>> > >>> gharatmayures...@gmail.com
>> > >>> > wrote:
>> > >>>
>> > >>> > Hi Rajini,
>> > >>> >
>> > >>> > Thanks a lot for the review. Please see the comments inline :
>> > >>> >
>> > >>> > It feels like the goal is to expose custom Principal as an
>> > >>> > opaque object between PrincipalBuilder and Authorizer so that
>> Kafka
>> > >>> doesn't
>> > >>> > really need to know anything about additional stuff added for
>> > >>> > customization. But kafka-acls.sh is expecting a key-value map from
>> > >>> which
>> > >>> > Principal is constructed. This is a breaking change to the
>> > >>> PrincipalBuilder
>> > >>> > interface - and I am not sure what it achieves.
>> > >>> > -----> kafka-acls is a commandline tool where in currently we just
>> > >>> specify
>> > >>> > the "names" of the principal that are allowed or denied.
>> > >>> > The Principal generated by PrincipalBuilder is still opaque and
>> Kafka
>> > >>> as
>> > >>> > such does not need to know the details.
>> > >>> > The key-value map that is been passed in, will be used
>> specifically
>> > by
>> > >>> the
>> > >>> > user PrincipalBuilder to create the Principal. The main
>> motivation of
>> > >>> the
>> > >>> > KIP is that, the Principal built by the PrincipalBuilder can have
>> > other
>> > >>> > fields apart from the "name", which are ignored currently.
>> Allowing a
>> > >>> > key-value pair to be passed in will enable the PrincipalBuilder to
>> > >>> create
>> > >>> > such type of Principal.
>> > >>> >
>> > >>> > 1. A custom Principal is (a) created during authentication using
>> > custom
>> > >>> > PrincipalBuilder (b) checked during authorization using
>> > >>> Principal.equals()
>> > >>> > and (c) stored in Zookeeper using Principal.toString(). Is that
>> > >>> correct?
>> > >>> > -----> The authorization will be done as per the user supplied
>> > >>> Authorizer.
>> > >>> > As not everyone might be using zookeeper for storing ACLs, its
>> > storage
>> > >>> is
>> > >>> > again Authorizer  implementation dependent.
>> > >>> >
>> > >>> > 2. Is the reason for the new parameters in kafka-acls.sh and the
>> > >>> breaking
>> > >>> > change in PrincipalBuilder interface to enable users to specify a
>> > >>> Principal
>> > >>> > using properties rather than create the String in 1c) themselves?
>> > >>> > -----> Please see the explanation above.
>> > >>> >
>> > >>> > 3. Since the purpose of the new PrincipalBuilder method
>> > >>> > buildPrincipal(Map<String,
>> > >>> > ?> principalConfigs) is to create a new Principal from command
>> line
>> > >>> > parameters, perhaps Properties or Map<String, String> would be
>> more
>> > >>> > appropriate?
>> > >>> > -----> Yes we can, but I actually prefer to keep it similar to
>> > >>> > configure(Map<String, ?> configs) API.
>> > >>> >
>> > >>> >
>> > >>> > Hi Ismael,
>> > >>> >
>> > >>> > Thanks a lot for the review. Please see the comments inline.
>> > >>> >
>> > >>> > 1. PrincipalBuilder implements Configurable and gets a map of
>> > >>> properties
>> > >>> > via the `configure` method. Do we really need a new
>> `buildPrincipal`
>> > >>> method
>> > >>> > given that?
>> > >>> > ------> The configure() API will actually be used to configure the
>> > >>> > PrincipalBuilder in the same way as the Authorizer. The
>> > >>> buildPrincipal()
>> > >>> > API will be used by the PrincipalBuilder to build individual
>> > >>> principals.
>> > >>> > Each of these principals can be of different custom types like
>> > >>> > GroupPrincipals, ServicePrincipals and so on, based on the
>> > Map<String,
>> > >>> ?>
>> > >>> > principalConfigs provided to the buildPrincipal() API.
>> > >>> >
>> > >>> > 2. Jun suggested in the JIRA that it may make sense to pass the
>> > >>> > `channelPrincipal` as a field in `Session` instead of
>> > >>> `KafkaPrincipal`. It
>> > >>> > would be good to understand why this was rejected.
>> > >>> > -----> Now I understand what Jun meant by "Perhaps, we could
>> extend
>> > the
>> > >>> > Session object with channelPrincipal instead.". Actually thinking
>> > more
>> > >>> on
>> > >>> > this, there is a PrincipalType in KafkaPrincipal, that was
>> inserted
>> > >>> for a
>> > >>> > specific purpose when it was created for the first time, I think.
>> I
>> > >>> thought
>> > >>> > that we should preserve it, if its useful for future.
>> > >>> >
>> > >>> > Thanks,
>> > >>> >
>> > >>> > Mayuresh
>> > >>> >
>> > >>> >
>> > >>> >
>> > >>> >
>> > >>> >
>> > >>> > On Mon, Jan 23, 2017 at 8:56 AM, Ismael Juma <ism...@juma.me.uk>
>> > >>> wrote:
>> > >>> >
>> > >>> > > Hi Mayuresh,
>> > >>> > >
>> > >>> > > Thanks for updating the KIP. A couple of questions:
>> > >>> > >
>> > >>> > > 1. PrincipalBuilder implements Configurable and gets a map of
>> > >>> properties
>> > >>> > > via the `configure` method. Do we really need a new
>> > `buildPrincipal`
>> > >>> > method
>> > >>> > > given that?
>> > >>> > >
>> > >>> > > 2. Jun suggested in the JIRA that it may make sense to pass the
>> > >>> > > `channelPrincipal` as a field in `Session` instead of
>> > >>> `KafkaPrincipal`.
>> > >>> > It
>> > >>> > > would be good to understand why this was rejected.
>> > >>> > >
>> > >>> > > Ismael
>> > >>> > >
>> > >>> > > On Thu, Jan 12, 2017 at 7:07 PM, Ismael Juma <ism...@juma.me.uk
>> >
>> > >>> wrote:
>> > >>> > >
>> > >>> > > > Hi Mayuresh,
>> > >>> > > >
>> > >>> > > > Thanks for the KIP. A quick comment before I do a more
>> detailed
>> > >>> > analysis,
>> > >>> > > > the KIP says:
>> > >>> > > >
>> > >>> > > > `This KIP is a pure addition to existing functionality and
>> does
>> > not
>> > >>> > > > include any backward incompatible changes.`
>> > >>> > > >
>> > >>> > > > However, the KIP is proposing the addition of a method to the
>> > >>> > > > PrincipalBuilder pluggable interface, which is not a
>> compatible
>> > >>> change.
>> > >>> > > > Existing implementations would no longer compile, for
>> example. It
>> > >>> would
>> > >>> > > be
>> > >>> > > > good to make this clear in the KIP.
>> > >>> > > >
>> > >>> > > > Ismael
>> > >>> > > >
>> > >>> > > > On Thu, Jan 12, 2017 at 5:44 PM, Mayuresh Gharat <
>> > >>> > > > gharatmayures...@gmail.com> wrote:
>> > >>> > > >
>> > >>> > > >> Hi all.
>> > >>> > > >>
>> > >>> > > >> We created KIP-111 to propose that Kafka should preserve the
>> > >>> Principal
>> > >>> > > >> generated by the PrincipalBuilder while processing the
>> request
>> > >>> > received
>> > >>> > > on
>> > >>> > > >> socket channel, on the broker.
>> > >>> > > >>
>> > >>> > > >> Please find the KIP wiki in the link
>> > >>> > > >> https://cwiki.apache.org/confluence/pages/viewpage.
>> > >>> > > action?pageId=67638388
>> > >>> > > >> .
>> > >>> > > >> We would love to hear your comments and suggestions.
>> > >>> > > >>
>> > >>> > > >>
>> > >>> > > >> Thanks,
>> > >>> > > >>
>> > >>> > > >> Mayuresh
>> > >>> > > >>
>> > >>> > > >
>> > >>> > > >
>> > >>> > >
>> > >>> >
>> > >>> >
>> > >>> >
>> > >>> > --
>> > >>> > -Regards,
>> > >>> > Mayuresh R. Gharat
>> > >>> > (862) 250-7125
>> > >>> >
>> > >>>
>> > >>
>> > >>
>> > >>
>> > >> --
>> > >> -Regards,
>> > >> Mayuresh R. Gharat
>> > >> (862) 250-7125
>> > >>
>> > >
>> > >
>> > >
>> > > --
>> > > -Regards,
>> > > Mayuresh R. Gharat
>> > > (862) 250-7125
>> > >
>> >
>> >
>> >
>> > --
>> > -Regards,
>> > Mayuresh R. Gharat
>> > (862) 250-7125
>> >
>>
>
>
>
> --
> -Regards,
> Mayuresh R. Gharat
> (862) 250-7125
>



-- 
-Regards,
Mayuresh R. Gharat
(862) 250-7125

Reply via email to