Thank you, Jun. I have removed user_principal from the KIP.

On Fri, Jun 17, 2016 at 6:00 PM, Jun Rao <j...@confluent.io> wrote:

> Rajini,
>
> 10. Yes, then we can probably leave out the user_principal field and keep
> the version to be 1.
>
> Other than that, the KIP looks good to me.
>
> Thanks,
>
> Jun
>
> On Fri, Jun 17, 2016 at 3:29 AM, Rajini Sivaram <
> rajinisiva...@googlemail.com> wrote:
>
> > Jun,
> >
> > 10. Since entity_type "users" is new, shouldn't the JSON for these
> entities
> > have version 1? I have moved "user_principal" out of the config in the
> > samples and added to the <user, client> entries as well. But actually, do
> > we need to store the non-encoded principal at all? The node name is
> > URL-encoded user principal, so it is fairly readable if you are looking
> in
> > ZK and *kafka_configs.sh* will show the non-encoded principal by decoding
> > the name from the path (since it needs to do encoding anyway because the
> > names specified on the command line will be non-encoded principals, it
> can
> > do decoding too). Perhaps that is sufficient?
> >
> > 11. I liked the second approach since it looks neat and future-proof.
> Have
> > updated the KIP.
> >
> > 12. Yes, that is correct.
> >
> > Many thanks,
> >
> > Rajini
> >
> >
> > On Thu, Jun 16, 2016 at 11:36 PM, Jun Rao <j...@confluent.io> wrote:
> >
> > > Rajini,
> > >
> > > Thanks for the update. A few more questions/comments.
> > >
> > > 10. For the quota value stored in ZK, since we are adding an optional
> > > user_principal field in the json, we should bump the version from 1 to
> 2.
> > > Also, user_principal is not really part of the config values. So,
> perhaps
> > > we should represent it as the following?
> > > {
> > >     "version":2,
> > >     "config": {
> > >         "producer_byte_rate":"1024",
> > >         "consumer_byte_rate":"2048"
> > >     },
> > >     "user_principal" : "user1"
> > > }
> > >
> > >  Also, we should store user_principal in the following json too, right?
> > > // Zookeeper persistence path /users/<encoded-user2>/clients/clientA
> > > {
> > >     "version":1,
> > >     "config": {
> > >         "producer_byte_rate":"10",
> > >         "consumer_byte_rate":"30"
> > >     }
> > > }
> > >
> > > 11. For the change notification path, would it be better to change it
> to
> > > something like the following and bump up version to 2?
> > > // Change notification for quota of <user2, clientA>
> > > {
> > >     "version":2,
> > >     [
> > >       { "entity_type": "users",
> > >         "entity_name": "user2"
> > >       },
> > >       { "entity_type": "clients",
> > >         "entity_name": "clientA"
> > >       }
> > >     ]
> > >  }
> > >
> > > Alternatively, we could change it to
> > > // Change notification for quota of <user2, clientA>
> > > {
> > >     "version":2,
> > >     "entity_path": "users/user2"
> > > }
> > >
> > > {
> > >     "version":2,
> > >     "entity_path": "users/user2/clients/clientA"
> > > }
> > >
> > > 12. Just to clarify on the meaning of remainder quota. If you have
> quotas
> > > like the following,
> > >  <user1, client1> = 5
> > >  <user1, client2> = 10
> > >  <user1> = 12
> > > it means that all connections with user1 whose client-id is neither
> > client1
> > > nor client2 will be sharing a quota of 12, right? In other words, the
> > quota
> > > of <user1> doesn't include the quota for <user1, client1> and <user1,
> > > client2>.
> > >
> > > Thanks,
> > >
> > > Jun
> > >
> > >
> > > On Thu, Jun 16, 2016 at 5:03 AM, Rajini Sivaram <
> > > rajinisiva...@googlemail.com> wrote:
> > >
> > > > Jun,
> > > >
> > > > Actually, with quotas stored in different nodes in ZK, it is better
> to
> > > > store remainder quota rather than total quota under /users/<user> so
> > that
> > > > quota calculations are not dependent on the order of notifications. I
> > > have
> > > > updated the KIP to reflect that. So the quotas in ZK now always
> reflect
> > > the
> > > > quota applied to a group of client connections and use the same
> format
> > as
> > > > client-id quotas. But it is not hierarchical, making the
> configuration
> > > > simpler.
> > > >
> > > > On Thu, Jun 16, 2016 at 11:49 AM, Rajini Sivaram <
> > > > rajinisiva...@googlemail.com> wrote:
> > > >
> > > > > Jun,
> > > > >
> > > > > Thank you for the review. I have updated the KIP:
> > > > >
> > > > >
> > > > >    1. Added an overview section. Slightly reworded since it is
> better
> > > to
> > > > >    treat user and client-id as different levels rather than the
> same
> > > > level.
> > > > >    2. Yes, it is neater to store quota for each entity in a
> different
> > > > >    path in Zookeeper. I put clients under users rather than the
> other
> > > way
> > > > >    round since that reflects the hierarchy and also keeps a user's
> > > quotas
> > > > >    together under a single sub-tree. I had initially used a single
> > node
> > > > to
> > > > >    keep quotas and sub-quotas of a user together so that updates
> are
> > > > atomic
> > > > >    since changes to sub-quotas also affect remainder quotas for
> other
> > > > clients.
> > > > >    But I imagine, updates to configs are rare and it is not a big
> > > issue.
> > > > >    3. I haven't modified the JSON for configuration change
> > > notifications.
> > > > >    The entity_name can now be a subpath that has both user and
> > client.
> > > > Have
> > > > >    added an example to the KIP. The downside of keeping clients
> under
> > > > users in
> > > > >    ZK in 2) is that the change notification for sub-quota has
> > > entity_type
> > > > >    "users". I could extend the JSON to include client separately,
> but
> > > > since
> > > > >    changes to a client sub-quota does impact other clients of the
> > user
> > > > as well
> > > > >    due to change in remainder quota, it may be ok as it is. Do let
> me
> > > > know if
> > > > >    it looks confusing in the example.
> > > > >    4. Agree, updated.
> > > > >
> > > > >
> > > > > On Wed, Jun 15, 2016 at 10:27 PM, Jun Rao <j...@confluent.io>
> wrote:
> > > > >
> > > > >> Hi, Rajini,
> > > > >>
> > > > >> Thanks for the updated wiki. Overall, I like the new approach. It
> > > covers
> > > > >> the common use cases now, is extensible, and is backward
> > compatible. A
> > > > few
> > > > >> comments below.
> > > > >>
> > > > >> 1. It would be useful to describe a bit at the high level, how the
> > new
> > > > >> approach works. I think this can be summarized as follows. Quotas
> > can
> > > be
> > > > >> set at user, client-id or <user, client-id> levels. For a given
> > client
> > > > >> connection, the most specific quota matching the connection will
> be
> > > > >> applied. For example, if both a <user, client-id> and a <user>
> quota
> > > > match
> > > > >> a connection, the <user, client-id> quota will be used. If more
> > than 1
> > > > >> quota at the same level (e.g., a quota on a user and another quota
> > on
> > > a
> > > > >> client-id) match the connection, the user level quota will be
> used,
> > > > i.e.,
> > > > >> user quota takes precedence over client-id quota.
> > > > >>
> > > > >> 2. For the ZK data structure, would it be better to store <user,
> > > > >> client-id>
> > > > >> quota as the following. Then the format of the value in each path
> is
> > > the
> > > > >> same. The wiki also mentions that we want to include the original
> > user
> > > > >> name
> > > > >> in the ZK value. Could you describe that in an example?
> > > > >> // Zookeeper persistence path
> /clients/clientA/users/<encoded-user2>
> > > > >> {
> > > > >>     "version":1,
> > > > >>     "config": {
> > > > >>         "producer_byte_rate":"10",
> > > > >>         "consumer_byte_rate":"20"
> > > > >>     }
> > > > >> }
> > > > >>
> > > > >> 3. Could you document the format change of the ZK value in
> > > > >> /config/changes/config_change_xxx, if any?
> > > > >>
> > > > >> 4. For the config command, could we specify the sub-quota like the
> > > > >> following, instead of in the config value? This seems more
> > intuitive.
> > > > >>
> > > > >> bin/kafka-configs  --zookeeper localhost:2181 --alter --add-config
> > > > >> 'producer_byte_rate=1024,consumer_byte_rate=2048' --entity-name
> > > > >> clientA --entity-type clients --entity-name user2 --entity-type
> > users
> > > > >>
> > > > >> Thanks,
> > > > >>
> > > > >> Jun
> > > > >>
> > > > >> On Wed, Jun 15, 2016 at 10:35 AM, Rajini Sivaram <
> > > > >> rajinisiva...@googlemail.com> wrote:
> > > > >>
> > > > >> > Harsha,
> > > > >> >
> > > > >> > The sample configuration under
> > > > >> >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-55%3A+Secure+Quotas+for+Authenticated+Users#KIP-55:SecureQuotasforAuthenticatedUsers-QuotaConfiguration
> > > > >> > shows
> > > > >> > the Zookeeper data for different scenarios.
> > > > >> >
> > > > >> >    - *user1* (/users/user1 in ZK) has only user-level quotas
> > > > >> >    - *user2* (/users/user2 in ZK) defines user-level quotas and
> > > > >> sub-quotas
> > > > >> >    for clients *clientA* and *clientB*. Other client-ids of
> > *user2*
> > > > >> share
> > > > >> >    the remaining quota of *user2*.
> > > > >> >
> > > > >> >
> > > > >> > On Wed, Jun 15, 2016 at 5:30 PM, Harsha <ka...@harsha.io>
> wrote:
> > > > >> >
> > > > >> > > Rajini,
> > > > >> > >           How does sub-quotas works in case of authenticated
> > > users.
> > > > >> > >           Where are we maintaining the relation between users
> > and
> > > > >> their
> > > > >> > >           client Ids. Can you add an example of zk data under
> > > > /users.
> > > > >> > > Thanks,
> > > > >> > > Harsha
> > > > >> > >
> > > > >> > > On Mon, Jun 13, 2016, at 05:01 AM, Rajini Sivaram wrote:
> > > > >> > > > I have updated KIP-55 to reflect the changes from the
> > > discussions
> > > > in
> > > > >> > the
> > > > >> > > > voting thread (
> > > > >> > > >
> > https://www.mail-archive.com/dev@kafka.apache.org/msg51610.html
> > > ).
> > > > >> > > >
> > > > >> > > > Jun/Gwen,
> > > > >> > > >
> > > > >> > > > Existing client-id quotas will be used as default client-id
> > > quotas
> > > > >> for
> > > > >> > > > users when no user quotas are configured - i.e., default
> user
> > > > quota
> > > > >> is
> > > > >> > > > unlimited and no user-specific quota override is specified.
> > This
> > > > >> > enables
> > > > >> > > > user rate limits to be configured for ANONYMOUS if required
> > in a
> > > > >> > cluster
> > > > >> > > > that has both PLAINTEXT and SSL/SASL. By default, without
> any
> > > user
> > > > >> rate
> > > > >> > > > limits set, rate limits for client-ids will apply, retaining
> > the
> > > > >> > current
> > > > >> > > > client-id quota configuration for single-user clusters.
> > > > >> > > >
> > > > >> > > > Zookeeper will have two paths /clients with client-id quotas
> > > that
> > > > >> apply
> > > > >> > > > only when user quota is unlimited similar to now. And /users
> > > which
> > > > >> > > > persists
> > > > >> > > > user quotas for any user including ANONYMOUS.
> > > > >> > > >
> > > > >> > > > Comments and feedback are appreciated.
> > > > >> > > >
> > > > >> > > > Regards,
> > > > >> > > >
> > > > >> > > > Rajini
> > > > >> > > >
> > > > >> > > >
> > > > >> > > > On Wed, Jun 8, 2016 at 9:00 PM, Rajini Sivaram
> > > > >> > > > <rajinisiva...@googlemail.com
> > > > >> > > > > wrote:
> > > > >> > > >
> > > > >> > > > > Jun,
> > > > >> > > > >
> > > > >> > > > > Oops, sorry, I hadn't realized that the last note was on
> the
> > > > >> discuss
> > > > >> > > > > thread. Thank you for pointing it out. I have sent another
> > > note
> > > > >> for
> > > > >> > > voting.
> > > > >> > > > >
> > > > >> > > > >
> > > > >> > > > > On Wed, Jun 8, 2016 at 4:30 PM, Jun Rao <j...@confluent.io
> >
> > > > wrote:
> > > > >> > > > >
> > > > >> > > > >> Rajini,
> > > > >> > > > >>
> > > > >> > > > >> Perhaps it will be clearer if you start the voting in a
> new
> > > > >> thread
> > > > >> > > (with
> > > > >> > > > >> VOTE in the subject).
> > > > >> > > > >>
> > > > >> > > > >> Thanks,
> > > > >> > > > >>
> > > > >> > > > >> Jun
> > > > >> > > > >>
> > > > >> > > > >> On Tue, Jun 7, 2016 at 1:55 PM, Rajini Sivaram <
> > > > >> > > > >> rajinisiva...@googlemail.com
> > > > >> > > > >> > wrote:
> > > > >> > > > >>
> > > > >> > > > >> > I would like to initiate the vote for KIP-55.
> > > > >> > > > >> >
> > > > >> > > > >> > The KIP details are here: KIP-55: Secure quotas for
> > > > >> authenticated
> > > > >> > > users
> > > > >> > > > >> > <
> > > > >> > > > >> >
> > > > >> > > > >>
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-55%3A+Secure+Quotas+for+Authenticated+Users
> > > > >> > > > >> > >
> > > > >> > > > >> > .
> > > > >> > > > >> >
> > > > >> > > > >> > The JIRA  KAFKA-3492  <
> > > > >> > > https://issues.apache.org/jira/browse/KAFKA-3492
> > > > >> > > > >> > >has
> > > > >> > > > >> > a draft PR here:
> > https://github.com/apache/kafka/pull/1256
> > > .
> > > > >> > > > >> >
> > > > >> > > > >> > Thank you...
> > > > >> > > > >> >
> > > > >> > > > >> >
> > > > >> > > > >> > Regards,
> > > > >> > > > >> >
> > > > >> > > > >> > Rajini
> > > > >> > > > >> >
> > > > >> > > > >>
> > > > >> > > > >
> > > > >> > > > >
> > > > >> > > > >
> > > > >> > > > > --
> > > > >> > > > > Regards,
> > > > >> > > > >
> > > > >> > > > > Rajini
> > > > >> > > > >
> > > > >> > > >
> > > > >> > > >
> > > > >> > > >
> > > > >> > > > --
> > > > >> > > > Regards,
> > > > >> > > >
> > > > >> > > > Rajini
> > > > >> > >
> > > > >> >
> > > > >> >
> > > > >> >
> > > > >> > --
> > > > >> > Regards,
> > > > >> >
> > > > >> > Rajini
> > > > >> >
> > > > >>
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Regards,
> > > > >
> > > > > Rajini
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Regards,
> > > >
> > > > Rajini
> > > >
> > >
> >
> >
> >
> > --
> > Regards,
> >
> > Rajini
> >
>



-- 
Regards,

Rajini

Reply via email to