Thanks for clarifying, Parth. I think you are taking the right approach here.

On Fri, Apr 24, 2015 at 11:46 AM, Parth Brahmbhatt
<pbrahmbh...@hortonworks.com> wrote:
> Sorry Gwen, completely misunderstood the question :-).
>
> * Does everyone have the privilege to create a new Group and use it to
> consume from Topics he's already privileged on?
>         Yes in current proposal. I did not see an API to create group but if 
> you
> have a READ permission on a TOPIC and WRITE permission on that Group you
> are free to join and consume.
>
>
> * Will the CLI tool be used to manage group membership too?
>         Yes and I think that means I need to add ―group. Updating the KIP. 
> Thanks
> for pointing this out.
>
> * Groups are kind of ephemeral, right? If all consumers in the group
> disconnect the group is gone, AFAIK. Do we preserve the ACLs? Or do we
> treat the new group as completely new resource? Can we create ACLs
> before the group exists, in anticipation of it getting created?
>         I have considered any auto delete and auto create as out of scope for 
> the
> first release. So Right now I was going with preserving the acls. Do you
> see any issues with this? Auto deleting would mean authorizer will now
> have to get into implementation details of kafka which I was trying to
> avoid.
>
> Thanks
> Parth
>
> On 4/24/15, 11:33 AM, "Gwen Shapira" <gshap...@cloudera.com> wrote:
>
>>We are not talking about same Groups :)
>>
>>I meant, Groups of consumers (which KIP-11 lists as a separate
>>resource in the Privilege table)
>>
>>On Fri, Apr 24, 2015 at 11:31 AM, Parth Brahmbhatt
>><pbrahmbh...@hortonworks.com> wrote:
>>> I see Groups as something we can add incrementally in the current model.
>>> The acls take principalType: name so groups can be represented as group:
>>> groupName. We are not managing group memberships anywhere in kafka and I
>>> don’t see the need to do so.
>>>
>>> So for a topic1 using the CLI an admin can add an acl to grant access to
>>> group:kafka-test-users.
>>>
>>> The authorizer implementation can have a plugin to map authenticated
>>>user
>>> to groups ( This is how hadoop and storm works). The plugin could be
>>> mapping user to linux/ldap/active directory groups but that is again
>>>upto
>>> the implementation.
>>>
>>> What we are offering is an interface that is extensible so these
>>>features
>>> can be added incrementally. I can add support for this in the first
>>> release but don’t necessarily see why this would be absolute necessity.
>>>
>>> Thanks
>>> Parth
>>>
>>> On 4/24/15, 11:00 AM, "Gwen Shapira" <gshap...@cloudera.com> wrote:
>>>
>>>>Thanks.
>>>>
>>>>One more thing I'm missing in the KIP is details on the Group resource
>>>>(I think we discussed this and it was just not fully updated):
>>>>
>>>>* Does everyone have the privilege to create a new Group and use it to
>>>>consume from Topics he's already privileged on?
>>>>* Will the CLI tool be used to manage group membership too?
>>>>* Groups are kind of ephemeral, right? If all consumers in the group
>>>>disconnect the group is gone, AFAIK. Do we preserve the ACLs? Or do we
>>>>treat the new group as completely new resource? Can we create ACLs
>>>>before the group exists, in anticipation of it getting created?
>>>>
>>>>Its all small details, but it will be difficult to implement KIP-11
>>>>without knowing the answers :)
>>>>
>>>>Gwen
>>>>
>>>>
>>>>On Fri, Apr 24, 2015 at 9:58 AM, Parth Brahmbhatt
>>>><pbrahmbh...@hortonworks.com> wrote:
>>>>> You are right, moved it to the default implementation section.
>>>>>
>>>>> Thanks
>>>>> Parth
>>>>>
>>>>> On 4/24/15, 9:52 AM, "Gwen Shapira" <gshap...@cloudera.com> wrote:
>>>>>
>>>>>>Sample ACL JSON and Zookeeper is in public API, but I thought it is
>>>>>>part of DefaultAuthorizer (Since Sentry and Argus won't be using
>>>>>>Zookeeper).
>>>>>>Am I wrong? Or is it the KIP?
>>>>>>
>>>>>>On Fri, Apr 24, 2015 at 9:49 AM, Parth Brahmbhatt
>>>>>><pbrahmbh...@hortonworks.com> wrote:
>>>>>>> Thanks for clarifying Gwen, KIP updated.
>>>>>>>
>>>>>>> I tried to make the distinction by creating a section for all public
>>>>>>>APIs
>>>>>>>
>>>>>>>https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authorizat
>>>>>>>io
>>>>>>>n+
>>>>>>>In
>>>>>>> terface#KIP-11-AuthorizationInterface-PublicInterfacesandclasses
>>>>>>>
>>>>>>> Let me know if you think there is a better way to reflect this.
>>>>>>>
>>>>>>> Thanks
>>>>>>> Parth
>>>>>>>
>>>>>>> On 4/24/15, 9:37 AM, "Gwen Shapira" <gshap...@cloudera.com> wrote:
>>>>>>>
>>>>>>>>+1 (non-binding)
>>>>>>>>
>>>>>>>>Two nitpicks for the wiki:
>>>>>>>>* Heartbeat is probably a READ and not CLUSTER operation. I'm pretty
>>>>>>>>sure new consumers need it to be part of a consumer group.
>>>>>>>>* Can you clearly separate which parts are the API (common to every
>>>>>>>>Authorizer) and which parts are DefaultAuthorizer implementation? It
>>>>>>>>will make reviews and Authorizer implementations a bit easier to
>>>>>>>>know
>>>>>>>>exactly which is which.
>>>>>>>>
>>>>>>>>Gwen
>>>>>>>>
>>>>>>>>On Fri, Apr 24, 2015 at 9:28 AM, Parth Brahmbhatt
>>>>>>>><pbrahmbh...@hortonworks.com> wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I would like to open KIP-11 for voting.
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>> Parth
>>>>>>>>>
>>>>>>>>> On 4/22/15, 1:56 PM, "Parth Brahmbhatt"
>>>>>>>>><pbrahmbh...@hortonworks.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>>Hi Jeff,
>>>>>>>>>>
>>>>>>>>>>Thanks a lot for the review. I think you have a valid point about
>>>>>>>>>>acls
>>>>>>>>>>being duplicated and the simplest solution would be to modify acls
>>>>>>>>>>class
>>>>>>>>>>so they hold a set of principals instead of single principal. i.e
>>>>>>>>>>
>>>>>>>>>><user_a,user_b> has <READ,WRITE,DESCRIBE> Permissions on <Topic1>
>>>>>>>>>>from
>>>>>>>>>><Host1, Host2, Host3>.
>>>>>>>>>>
>>>>>>>>>>I think the evaluation order only matters for the permissionType
>>>>>>>>>>which
>>>>>>>>>>is
>>>>>>>>>>Deny acls should be evaluated before allow acls. To give you an
>>>>>>>>>>example
>>>>>>>>>>suppose we have following acls
>>>>>>>>>>
>>>>>>>>>>acl1 -> user1 is allowed to READ from all hosts.
>>>>>>>>>>acl2 -> host1 is allowed to READ regardless of who is the user.
>>>>>>>>>>acl3 -> host2 is allowed to READ regardless of who is the user.
>>>>>>>>>>
>>>>>>>>>>acl4 -> user1 is denied to READ from host1.
>>>>>>>>>>
>>>>>>>>>>As stated in the KIP we first evaluate DENY so if user1 tries to
>>>>>>>>>>access
>>>>>>>>>>from host1 he will be denied(acl4), even though both user1 and
>>>>>>>>>>host1
>>>>>>>>>>has
>>>>>>>>>>acl’s for allow with wildcards (acl1, acl2).
>>>>>>>>>>If user1 tried to READ from host2 , the action will be allowed and
>>>>>>>>>>it
>>>>>>>>>>does
>>>>>>>>>>not matter if we match acl3 or acl1 so I don’t think the
>>>>>>>>>>evaluation
>>>>>>>>>>order
>>>>>>>>>>matters here.
>>>>>>>>>>
>>>>>>>>>>“Will people actually use hosts with users?” I really don’t know
>>>>>>>>>>but
>>>>>>>>>>given
>>>>>>>>>>ACl’s are part of our Public APIs I thought it is better to try
>>>>>>>>>>and
>>>>>>>>>>cover
>>>>>>>>>>more use cases. If others think this extra complexity is not worth
>>>>>>>>>>the
>>>>>>>>>>value its adding please raise your concerns so we can discuss if
>>>>>>>>>>it
>>>>>>>>>>should
>>>>>>>>>>be removed from the acl structure. Note that even in absence of
>>>>>>>>>>hosts
>>>>>>>>>>from
>>>>>>>>>>ACL users will still be able to whitelist/blacklist host as long
>>>>>>>>>>as
>>>>>>>>>>we
>>>>>>>>>>start supporting principalType = “host”, easy to add and can be an
>>>>>>>>>>incremental improvement. They will however loose the ability to
>>>>>>>>>>restrict
>>>>>>>>>>access to users just from a set of hosts.
>>>>>>>>>>
>>>>>>>>>>We agreed to offer a CLI to overcome the JSON acl config
>>>>>>>>>>https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authori
>>>>>>>>>>za
>>>>>>>>>>ti
>>>>>>>>>>on
>>>>>>>>>>+I
>>>>>>>>>>n
>>>>>>>>>>terface#KIP-11-AuthorizationInterface-AclManagement(CLI). I still
>>>>>>>>>>like
>>>>>>>>>>Jsons but that probably has something to do with me being a
>>>>>>>>>>developer
>>>>>>>>>>:-).
>>>>>>>>>>
>>>>>>>>>>Thanks
>>>>>>>>>>Parth
>>>>>>>>>>
>>>>>>>>>>On 4/22/15, 11:38 AM, "Jeff Holoman" <jholo...@cloudera.com>
>>>>>>>>>>wrote:
>>>>>>>>>>
>>>>>>>>>>>Parth,
>>>>>>>>>>>
>>>>>>>>>>>This is a long thread, so trying to keep up here, sorry if this
>>>>>>>>>>>has
>>>>>>>>>>>been
>>>>>>>>>>>covered before. First, great job on the KIP proposal and work so
>>>>>>>>>>>far.
>>>>>>>>>>>
>>>>>>>>>>>Are we sure that we want to tie host level access to a given
>>>>>>>>>>>user?
>>>>>>>>>>>My
>>>>>>>>>>>understanding is that the ACL will be (omitting some fields)
>>>>>>>>>>>
>>>>>>>>>>>user_a, host1, host2, host3
>>>>>>>>>>>user_b, host1, host2, host3
>>>>>>>>>>>
>>>>>>>>>>>So there would potentially be a lot of redundancy in the configs.
>>>>>>>>>>>Does
>>>>>>>>>>>it
>>>>>>>>>>>make sense to have hosts be at the same level as principal in the
>>>>>>>>>>>hierarchy? This way you could just blanket the allowed / denied
>>>>>>>>>>>hosts
>>>>>>>>>>>and
>>>>>>>>>>>only have to worry about the users. So if you follow this, then
>>>>>>>>>>>
>>>>>>>>>>>we can wildcard the user so we can have a separate list of just
>>>>>>>>>>>host-based
>>>>>>>>>>>access. What's the order that the perms would be evaluated if a
>>>>>>>>>>>there
>>>>>>>>>>>was
>>>>>>>>>>>more than one match on a principal ?
>>>>>>>>>>>
>>>>>>>>>>>Is the thought that there wouldn't usually be much overlap on
>>>>>>>>>>>hosts?
>>>>>>>>>>>I
>>>>>>>>>>>guess I can imagine a scenario where I want to offline/online
>>>>>>>>>>>access
>>>>>>>>>>>to a
>>>>>>>>>>>particular hosts or set of hosts and if there was overlap, I'm
>>>>>>>>>>>doing
>>>>>>>>>>>a
>>>>>>>>>>>bunch of alter commands for just a single host. Maybe this is too
>>>>>>>>>>>contrived
>>>>>>>>>>>an example?
>>>>>>>>>>>
>>>>>>>>>>>I agree that having this level of granularity gives flexibility
>>>>>>>>>>>but I
>>>>>>>>>>>wonder if people will actually use it and not just * the hosts
>>>>>>>>>>>for
>>>>>>>>>>>a
>>>>>>>>>>>given
>>>>>>>>>>>user and create separate "global" list as i mentioned above?
>>>>>>>>>>>
>>>>>>>>>>>The only other system I know of that ties users with hosts for
>>>>>>>>>>>access
>>>>>>>>>>>is
>>>>>>>>>>>MySql and I don't love that model. Companies usually standardize
>>>>>>>>>>>on
>>>>>>>>>>>group
>>>>>>>>>>>authorization anyway, are we complicating that issue with the
>>>>>>>>>>>inclusion
>>>>>>>>>>>of
>>>>>>>>>>>hosts attached to users? Additionally I worry about the debt of
>>>>>>>>>>>big
>>>>>>>>>>>JSON
>>>>>>>>>>>configs in the first place, most non-developers find them
>>>>>>>>>>>non-intuitive
>>>>>>>>>>>already, so anything to ease this I think would be beneficial.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>Thanks
>>>>>>>>>>>
>>>>>>>>>>>Jeff
>>>>>>>>>>>
>>>>>>>>>>>On Wed, Apr 22, 2015 at 2:22 PM, Parth Brahmbhatt <
>>>>>>>>>>>pbrahmbh...@hortonworks.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Sorry I missed your last questions. I am +0 on adding ―host
>>>>>>>>>>>>option
>>>>>>>>>>>>for
>>>>>>>>>>>> ―list, we could add it for symmetry. Again if this is only a
>>>>>>>>>>>>CLI
>>>>>>>>>>>>change
>>>>>>>>>>>>it
>>>>>>>>>>>> can be added later if you mean adding this in authorizer
>>>>>>>>>>>>interface
>>>>>>>>>>>>then
>>>>>>>>>>>>we
>>>>>>>>>>>> should make a decision now.
>>>>>>>>>>>>
>>>>>>>>>>>> Given a choice I would like to actually keep only one option
>>>>>>>>>>>>which
>>>>>>>>>>>>is
>>>>>>>>>>>> resource based get (remove even the get based on principal). I
>>>>>>>>>>>>see
>>>>>>>>>>>>those
>>>>>>>>>>>> (getAcl for principal or host) as special filtering case which
>>>>>>>>>>>>can
>>>>>>>>>>>>easily
>>>>>>>>>>>> be achieved by a third party tool by doing "list all topics"
>>>>>>>>>>>>and
>>>>>>>>>>>>calling
>>>>>>>>>>>> getAcls for each topic and applying filtering logic on that.  I
>>>>>>>>>>>>really
>>>>>>>>>>>> don’t see the need to make those first class citizens of the
>>>>>>>>>>>>authorizer
>>>>>>>>>>>> interface given these kind of queries will be issued outside of
>>>>>>>>>>>>broker
>>>>>>>>>>>>JVM
>>>>>>>>>>>> so they will not benefit from the caching and because the
>>>>>>>>>>>>storage
>>>>>>>>>>>>will
>>>>>>>>>>>>be
>>>>>>>>>>>> indexed on resource both these options even as a first class
>>>>>>>>>>>>API
>>>>>>>>>>>>will
>>>>>>>>>>>>just
>>>>>>>>>>>> scan all topic acls and apply filtering logic.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks
>>>>>>>>>>>> Parth
>>>>>>>>>>>>
>>>>>>>>>>>> On 4/22/15, 11:08 AM, "Parth Brahmbhatt"
>>>>>>>>>>>><pbrahmbh...@hortonworks.com>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> >Please see all the available options here
>>>>>>>>>>>> >
>>>>>>>>>>>>
>>>>>>>>>>>>https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Autho
>>>>>>>>>>>>ri
>>>>>>>>>>>>za
>>>>>>>>>>>>ti
>>>>>>>>>>>>on
>>>>>>>>>>>>+
>>>>>>>>>>>>I
>>>>>>>>>>>> >nterface#KIP-11-AuthorizationInterface-AclManagement(CLI) . I
>>>>>>>>>>>>think
>>>>>>>>>>>>it
>>>>>>>>>>>> >covers both hosts and operations and allows to specify a list
>>>>>>>>>>>>for
>>>>>>>>>>>>both.
>>>>>>>>>>>> >
>>>>>>>>>>>> >Thanks
>>>>>>>>>>>> >Parth
>>>>>>>>>>>> >
>>>>>>>>>>>> >From: Tom Graves
>>>>>>>>>>>><tgraves...@yahoo.com<mailto:tgraves...@yahoo.com>>
>>>>>>>>>>>> >Reply-To: Tom Graves
>>>>>>>>>>>><tgraves...@yahoo.com<mailto:tgraves...@yahoo.com>>
>>>>>>>>>>>> >Date: Wednesday, April 22, 2015 at 11:02 AM
>>>>>>>>>>>> >To: Parth Brahmbhatt
>>>>>>>>>>>>
>>>>>>>>>>>>><pbrahmbh...@hortonworks.com<mailto:pbrahmbh...@hortonworks.com
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>,
>>>>>>>>>>>> >"dev@kafka.apache.org<mailto:dev@kafka.apache.org>"
>>>>>>>>>>>> ><dev@kafka.apache.org<mailto:dev@kafka.apache.org>>
>>>>>>>>>>>> >Subject: Re: [DISCUSS] KIP-11- Authorization design for kafka
>>>>>>>>>>>>security
>>>>>>>>>>>> >
>>>>>>>>>>>> >Thanks for the explanations Parth.
>>>>>>>>>>>> >
>>>>>>>>>>>> >On the configs questions, the way I see it is its more likely
>>>>>>>>>>>>to
>>>>>>>>>>>> >accidentally give everyone access, especially since you have
>>>>>>>>>>>>to
>>>>>>>>>>>>run
>>>>>>>>>>>>a
>>>>>>>>>>>> >separate command to change the acls. If there was some config
>>>>>>>>>>>>for
>>>>>>>>>>>> >defaults, a cluster admin could change that to be nobody or
>>>>>>>>>>>>certain
>>>>>>>>>>>>set
>>>>>>>>>>>> >of users, then grant others permissions.  This would also
>>>>>>>>>>>>remove
>>>>>>>>>>>>the
>>>>>>>>>>>>race
>>>>>>>>>>>> >between commands.  This is something you can always add later
>>>>>>>>>>>>though
>>>>>>>>>>>>if
>>>>>>>>>>>> >people request it.
>>>>>>>>>>>> >
>>>>>>>>>>>> >So in kafka-acl.sh how do I actually tell it what the
>>>>>>>>>>>>operation
>>>>>>>>>>>>is?
>>>>>>>>>>>> >kafka-acl.sh --topic testtopic --add --grandprincipal
>>>>>>>>>>>>user:joe,user:kate
>>>>>>>>>>>> >
>>>>>>>>>>>> >where does READ, WRITE, etc go?  Can specify as a list so I
>>>>>>>>>>>>don't
>>>>>>>>>>>>have
>>>>>>>>>>>>to
>>>>>>>>>>>> >run this a bunch of times for each.
>>>>>>>>>>>> >
>>>>>>>>>>>> >Do you want to have a --host option for --list so that admins
>>>>>>>>>>>>could
>>>>>>>>>>>>see
>>>>>>>>>>>> >what acls apply to specific host(s)?
>>>>>>>>>>>> >
>>>>>>>>>>>> >Tom
>>>>>>>>>>>> >
>>>>>>>>>>>> >
>>>>>>>>>>>> >
>>>>>>>>>>>> >On Wednesday, April 22, 2015 11:38 AM, Parth Brahmbhatt
>>>>>>>>>>>>
>>>>>>>>>>>>><pbrahmbh...@hortonworks.com<mailto:pbrahmbh...@hortonworks.com
>>>>>>>>>>>>>>>
>>>>>>>>>>>>wrote:
>>>>>>>>>>>> >
>>>>>>>>>>>> >
>>>>>>>>>>>> >
>>>>>>>>>>>> >FYI, I have modified the KIP to include group as resource. In
>>>>>>>>>>>>order
>>>>>>>>>>>>to
>>>>>>>>>>>> >access “joinGroup” and “commitOFfset” APIs the user will need
>>>>>>>>>>>>a
>>>>>>>>>>>>read
>>>>>>>>>>>> >permission on topic and WRITE permission on group.
>>>>>>>>>>>> >
>>>>>>>>>>>> >I plan to open a VOTE thread by noon if there are no more
>>>>>>>>>>>>concerns.
>>>>>>>>>>>> >
>>>>>>>>>>>> >Thanks
>>>>>>>>>>>> >Parth
>>>>>>>>>>>> >
>>>>>>>>>>>> >On 4/22/15, 9:03 AM, "Tom Graves"
>>>>>>>>>>>>
>>>>>>>>>>>>><tgraves...@yahoo.com.INVALID<mailto:tgraves...@yahoo.com.INVAL
>>>>>>>>>>>>>ID
>>>>>>>>>>>>>>>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>> >
>>>>>>>>>>>> >>Hey everyone,
>>>>>>>>>>>> >>Sorry to jump in on the conversation so late. I'm new to
>>>>>>>>>>>>Kafka.
>>>>>>>>>>>>I'll
>>>>>>>>>>>> >>apologize in advance if you have already covered some of my
>>>>>>>>>>>>questions.  I
>>>>>>>>>>>> >>read through the wiki and had some comments and questions.
>>>>>>>>>>>> >>1) public enum Operation needs EDIT changed to ALTER
>>>>>>>>>>>> >
>>>>>>>>>>>> >>    Done.
>>>>>>>>>>>> >
>>>>>>>>>>>> >>2) Does the Authorizer class need a setAcls?  Rather then
>>>>>>>>>>>>just
>>>>>>>>>>>>add
>>>>>>>>>>>>to
>>>>>>>>>>>>be
>>>>>>>>>>>> >>able to set to explicit list and overwrite what was there?  I
>>>>>>>>>>>>see
>>>>>>>>>>>>the
>>>>>>>>>>>> >>kafka-acl.sh lists a removeall so I guess you could do
>>>>>>>>>>>>removeall
>>>>>>>>>>>>and
>>>>>>>>>>>>then
>>>>>>>>>>>> >>add.  I also don't see a removeall in the Authorizer class,
>>>>>>>>>>>>is
>>>>>>>>>>>>it
>>>>>>>>>>>>going
>>>>>>>>>>>> >>to loop through them all to remove each one?
>>>>>>>>>>>> >
>>>>>>>>>>>> >    There is an overloaded version of removeAcls in the
>>>>>>>>>>>>interface
>>>>>>>>>>>>that
>>>>>>>>>>>> >takes
>>>>>>>>>>>> >in resource as the only input and as described in the javadoc
>>>>>>>>>>>>all
>>>>>>>>>>>>the
>>>>>>>>>>>>acls
>>>>>>>>>>>> >attached to that resource will be deleted. To cover the setAcl
>>>>>>>>>>>>use
>>>>>>>>>>>>case
>>>>>>>>>>>> >the caller can first call remove and then add.
>>>>>>>>>>>> >
>>>>>>>>>>>> >>3) Can someone tell me what the use case to do acls based on
>>>>>>>>>>>>the
>>>>>>>>>>>>hosts?
>>>>>>>>>>>> >>I can see some possibilities just wondering if we can
>>>>>>>>>>>>concrete
>>>>>>>>>>>>ones
>>>>>>>>>>>>where
>>>>>>>>>>>> >>one user is allowed from one host but not another.
>>>>>>>>>>>> >
>>>>>>>>>>>> >    I am not sure if I understand the question given the use
>>>>>>>>>>>>case
>>>>>>>>>>>>you
>>>>>>>>>>>> >described in your question is what we are trying to cover with
>>>>>>>>>>>>use
>>>>>>>>>>>>of
>>>>>>>>>>>> >hosts in Acl. There are some additional use cases like “allow
>>>>>>>>>>>>access
>>>>>>>>>>>>to
>>>>>>>>>>>> >any user from host1,host2” but I think primarily it gives the
>>>>>>>>>>>>admins
>>>>>>>>>>>>the
>>>>>>>>>>>> >ability to define acls at a more granular level.
>>>>>>>>>>>> >
>>>>>>>>>>>> >>4) I'm a bit unclear how the "resource" works in the
>>>>>>>>>>>>Authorizer
>>>>>>>>>>>>class.
>>>>>>>>>>>> >>From what I see we have 2 resources - topics and cluster.
>>>>>>>>>>>>If I
>>>>>>>>>>>>want
>>>>>>>>>>>>to
>>>>>>>>>>>> >>add an acl to allow "joe" to CREATE for the cluster then I
>>>>>>>>>>>>call
>>>>>>>>>>>>addAcls
>>>>>>>>>>>> >>with  Acl("user: joe", ALLOW, Set(*), Set(CREATE)) and
>>>>>>>>>>>>"cluster"?
>>>>>>>>>>>>What
>>>>>>>>>>>> >>if I want to call addAcls for DESCRIBE on a topic?  Is the
>>>>>>>>>>>>resource
>>>>>>>>>>>>then
>>>>>>>>>>>> >>"topic" or is it the topic name?
>>>>>>>>>>>> >
>>>>>>>>>>>> >    We now have 3 resources(added group), please see the
>>>>>>>>>>>>updated
>>>>>>>>>>>>doc.
>>>>>>>>>>>>The
>>>>>>>>>>>> >CREATE acl that you described is correct. For any topic
>>>>>>>>>>>>operation
>>>>>>>>>>>>you
>>>>>>>>>>>> >should use topic name as the resource name and for group the
>>>>>>>>>>>>user
>>>>>>>>>>>>will
>>>>>>>>>>>> >provide groupId as resource name.
>>>>>>>>>>>> >
>>>>>>>>>>>> >>5) reassigning partitions is a CLUSTER_ACTION or superuser?
>>>>>>>>>>>>Its
>>>>>>>>>>>>not
>>>>>>>>>>>> >>totally clear to me the differences between these.  what
>>>>>>>>>>>>about
>>>>>>>>>>>>increasing
>>>>>>>>>>>> >># of partitions?
>>>>>>>>>>>> >
>>>>>>>>>>>> >    I see this as an alter topic operation so it is at topic
>>>>>>>>>>>>level
>>>>>>>>>>>>and
>>>>>>>>>>>>the
>>>>>>>>>>>> >user must have alter permissions on topic.
>>>>>>>>>>>> >
>>>>>>>>>>>> >>6) groups are mentioned, are we supporting right away or is
>>>>>>>>>>>>that
>>>>>>>>>>>>a
>>>>>>>>>>>>follow
>>>>>>>>>>>> >>on item? (is there going to be a kafka.supergroups)
>>>>>>>>>>>> >
>>>>>>>>>>>> >    I think it can be a separate jira just for braking down
>>>>>>>>>>>>the
>>>>>>>>>>>>code
>>>>>>>>>>>> >review
>>>>>>>>>>>> >in smaller chunk. We will support it in first version but I
>>>>>>>>>>>>think
>>>>>>>>>>>>if
>>>>>>>>>>>>we
>>>>>>>>>>>> >can not do it for any reason that should not block a release
>>>>>>>>>>>>with
>>>>>>>>>>>>all
>>>>>>>>>>>>the
>>>>>>>>>>>> >other authZ work. We made deliberate design choices (like
>>>>>>>>>>>>introducing
>>>>>>>>>>>>a
>>>>>>>>>>>> >principalType in KafkaPrinciapl) to allow supporting groups as
>>>>>>>>>>>>an
>>>>>>>>>>>> >incremental change.
>>>>>>>>>>>> >
>>>>>>>>>>>> >>7) Are there config options for setting acls when I create my
>>>>>>>>>>>>topic?
>>>>>>>>>>>>Or
>>>>>>>>>>>> >>do I have to create my topic and then run the kafka-acl.sh
>>>>>>>>>>>>script
>>>>>>>>>>>>to
>>>>>>>>>>>>set
>>>>>>>>>>>> >>them?  Although its very small, there would be possible race
>>>>>>>>>>>>there
>>>>>>>>>>>>that
>>>>>>>>>>>> >>someone could start producing to topic before acls are set.
>>>>>>>>>>>> >
>>>>>>>>>>>> >    We discussed this yesterday and we agreed to go with
>>>>>>>>>>>>kafka-acl.sh.
>>>>>>>>>>>>Yes
>>>>>>>>>>>> >there is a very very small window of vulnerability but I think
>>>>>>>>>>>>that
>>>>>>>>>>>>really
>>>>>>>>>>>> >does not warrant to change the decision in this case.
>>>>>>>>>>>> >
>>>>>>>>>>>> >>8) are there configs for cluster level acl defaults?  Or does
>>>>>>>>>>>>it
>>>>>>>>>>>>default
>>>>>>>>>>>> >>to superusers on bringing up new cluster and you have to
>>>>>>>>>>>>modify
>>>>>>>>>>>>with
>>>>>>>>>>>>cli.
>>>>>>>>>>>> >>thanks,Tom
>>>>>>>>>>>> >
>>>>>>>>>>>> >    No defaults, the default is superusers will have full
>>>>>>>>>>>>access.
>>>>>>>>>>>>I
>>>>>>>>>>>>don’t
>>>>>>>>>>>> >think making assumptions about ones security requirement
>>>>>>>>>>>>should
>>>>>>>>>>>>be
>>>>>>>>>>>>our
>>>>>>>>>>>> >burden.
>>>>>>>>>>>> >
>>>>>>>>>>>> >
>>>>>>>>>>>> >>
>>>>>>>>>>>> >>    On Tuesday, April 21, 2015 7:10 PM, Parth Brahmbhatt
>>>>>>>>>>>>
>>>>>>>>>>>>>><pbrahmbh...@hortonworks.com<mailto:pbrahmbh...@hortonworks.co
>>>>>>>>>>>>>>m>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>wrote:
>>>>>>>>>>>> >>
>>>>>>>>>>>> >>
>>>>>>>>>>>> >> I have added the notes to KIP-11 Open question sections.
>>>>>>>>>>>> >>
>>>>>>>>>>>> >>Thanks
>>>>>>>>>>>> >>Parth
>>>>>>>>>>>> >>
>>>>>>>>>>>> >>On 4/21/15, 4:49 PM, "Gwen Shapira"
>>>>>>>>>>>> >><gshap...@cloudera.com<mailto:gshap...@cloudera.com>> wrote:
>>>>>>>>>>>> >>
>>>>>>>>>>>> >>>Adding my notes from today's call to the thread:
>>>>>>>>>>>> >>>
>>>>>>>>>>>> >>>** Deny or Allow all by default? We will add a configuration
>>>>>>>>>>>>to
>>>>>>>>>>>> >>>control this. The configuration will default to “allow” for
>>>>>>>>>>>>backward
>>>>>>>>>>>> >>>compatibility. Security admins can set it to "deny"
>>>>>>>>>>>> >>>
>>>>>>>>>>>> >>>** Storing ACLs for default authorizers: We'll store them in
>>>>>>>>>>>>ZK.
>>>>>>>>>>>>We'll
>>>>>>>>>>>> >>>support pointing the authorizer to any ZK.
>>>>>>>>>>>> >>>The use of ZK will be internal to the default authorizer.
>>>>>>>>>>>>Authorizer
>>>>>>>>>>>> >>>reads ACLs from cache every hour. We proposed having
>>>>>>>>>>>>mechanism
>>>>>>>>>>>> >>>(possibly via new ZK node) to tell broker to refresh the
>>>>>>>>>>>>cache
>>>>>>>>>>>> >>>immediately.
>>>>>>>>>>>> >>>
>>>>>>>>>>>> >>>** Support deny as permission type - we agreed to keep this.
>>>>>>>>>>>> >>>
>>>>>>>>>>>> >>>** Mapping operations to API: We may need to add Group as a
>>>>>>>>>>>>resource,
>>>>>>>>>>>> >>>with JoinGroup and OffsetCommit require privilege on the
>>>>>>>>>>>>consumer
>>>>>>>>>>>> >>>group.
>>>>>>>>>>>> >>>This can be something we pass now and authorizers can
>>>>>>>>>>>>support
>>>>>>>>>>>>in
>>>>>>>>>>>> >>>future. - Jay will write specifics to the mailing list
>>>>>>>>>>>>discussion.
>>>>>>>>>>>> >>>
>>>>>>>>>>>> >>>On Tue, Apr 21, 2015 at 4:32 PM, Jay Kreps
>>>>>>>>>>>> >>><jay.kr...@gmail.com<mailto:jay.kr...@gmail.com>> wrote:
>>>>>>>>>>>> >>>> Following up on the KIP discussion. Two options for
>>>>>>>>>>>>authorizing
>>>>>>>>>>>> >>>>consumers
>>>>>>>>>>>> >>>> to read topic "t" as part of group "g":
>>>>>>>>>>>> >>>> 1. READ permission on resource /topic/t
>>>>>>>>>>>> >>>> 2. READ permission on resource /topic/t AND WRITE
>>>>>>>>>>>>permission
>>>>>>>>>>>>on
>>>>>>>>>>>> >>>>/group/g
>>>>>>>>>>>> >>>>
>>>>>>>>>>>> >>>> The advantage of (1) is that it is simpler. The
>>>>>>>>>>>>disadvantage
>>>>>>>>>>>>is
>>>>>>>>>>>>that
>>>>>>>>>>>> >>>>any
>>>>>>>>>>>> >>>> member of any group that reads from t can commit offsets
>>>>>>>>>>>>as
>>>>>>>>>>>>any
>>>>>>>>>>>>other
>>>>>>>>>>>> >>>> member of a different group. This doesn't effect data
>>>>>>>>>>>>security
>>>>>>>>>>>>(who
>>>>>>>>>>>> >>>>can
>>>>>>>>>>>> >>>> access what) but it is a bit of a management issue--a
>>>>>>>>>>>>malicious
>>>>>>>>>>>>person
>>>>>>>>>>>> >>>>can
>>>>>>>>>>>> >>>> cause data loss or duplicates for another consumer by
>>>>>>>>>>>>committing
>>>>>>>>>>>> >>>>offset.
>>>>>>>>>>>> >>>>
>>>>>>>>>>>> >>>> I think I favor (2) but it's worth it to think it through.
>>>>>>>>>>>> >>>>
>>>>>>>>>>>> >>>> -Jay
>>>>>>>>>>>> >>>>
>>>>>>>>>>>> >>>> On Tue, Apr 21, 2015 at 2:43 PM, Parth Brahmbhatt <
>>>>>>>>>>>> >>>>
>>>>>>>>>>>>pbrahmbh...@hortonworks.com<mailto:pbrahmbh...@hortonworks.com>>
>>>>>>>>>>>> >>>>wrote:
>>>>>>>>>>>> >>>>
>>>>>>>>>>>> >>>>> Hey Jun,
>>>>>>>>>>>> >>>>>
>>>>>>>>>>>> >>>>> Yes and we support wild cards for all acl entities
>>>>>>>>>>>>principal,
>>>>>>>>>>>>hosts
>>>>>>>>>>>> >>>>>and
>>>>>>>>>>>> >>>>> operation.
>>>>>>>>>>>> >>>>>
>>>>>>>>>>>> >>>>> Thanks
>>>>>>>>>>>> >>>>> Parth
>>>>>>>>>>>> >>>>>
>>>>>>>>>>>> >>>>> On 4/21/15, 9:06 AM, "Jun Rao"
>>>>>>>>>>>> >>>>><j...@confluent.io<mailto:j...@confluent.io>> wrote:
>>>>>>>>>>>> >>>>>
>>>>>>>>>>>> >>>>> >Harsha, Parth,
>>>>>>>>>>>> >>>>> >
>>>>>>>>>>>> >>>>> >Thanks for the clarification. This makes sense. Perhaps
>>>>>>>>>>>>we
>>>>>>>>>>>>can
>>>>>>>>>>>> >>>>>clarify the
>>>>>>>>>>>> >>>>> >meaning of those rules in the wiki.
>>>>>>>>>>>> >>>>> >
>>>>>>>>>>>> >>>>> >Related to this, it seems that we need to support
>>>>>>>>>>>>wildcard
>>>>>>>>>>>>in
>>>>>>>>>>>> >>>>>cli/request
>>>>>>>>>>>> >>>>> >protocol for topics?
>>>>>>>>>>>> >>>>> >
>>>>>>>>>>>> >>>>> >Jun
>>>>>>>>>>>> >>>>> >
>>>>>>>>>>>> >>>>> >On Mon, Apr 20, 2015 at 9:07 PM, Parth Brahmbhatt <
>>>>>>>>>>>> >>>>>
>>>>>>>>>>>>>pbrahmbh...@hortonworks.com<mailto:pbrahmbh...@hortonworks.com>
>>>>>>>>>>>>>>
>>>>>>>>>>>> >>>>>wrote:
>>>>>>>>>>>> >>>>> >
>>>>>>>>>>>> >>>>> >> The iptables on unix supports the DENY operator, not
>>>>>>>>>>>>that
>>>>>>>>>>>>it
>>>>>>>>>>>> >>>>>should
>>>>>>>>>>>> >>>>> >> matter. The deny operator can also be used to specify
>>>>>>>>>>>>³allow
>>>>>>>>>>>>user1
>>>>>>>>>>>> >>>>>to
>>>>>>>>>>>> >>>>> >>READ
>>>>>>>>>>>> >>>>> >> from topic1 from all hosts but host1,host2². Again we
>>>>>>>>>>>>could
>>>>>>>>>>>>add a
>>>>>>>>>>>> >>>>>host
>>>>>>>>>>>> >>>>> >> group semantic and extra complexity around that, not
>>>>>>>>>>>>sure
>>>>>>>>>>>>if
>>>>>>>>>>>>its
>>>>>>>>>>>> >>>>>worth
>>>>>>>>>>>> >>>>> >>it.
>>>>>>>>>>>> >>>>> >> In addition with DENY operator you are now not forced
>>>>>>>>>>>>to
>>>>>>>>>>>>create a
>>>>>>>>>>>> >>>>> >>special
>>>>>>>>>>>> >>>>> >> group just to support the authorization use case. I am
>>>>>>>>>>>>not
>>>>>>>>>>>> >>>>>convinced
>>>>>>>>>>>> >>>>> >>that
>>>>>>>>>>>> >>>>> >> the operator it self is really all that confusing.
>>>>>>>>>>>>There
>>>>>>>>>>>>are 3
>>>>>>>>>>>> >>>>>practical
>>>>>>>>>>>> >>>>> >> use cases:
>>>>>>>>>>>> >>>>> >> - Resource with no acl what so ever -> allow access to
>>>>>>>>>>>>everyone (
>>>>>>>>>>>> >>>>>just
>>>>>>>>>>>> >>>>> >>for
>>>>>>>>>>>> >>>>> >> backward compatibility, I would much rather fail close
>>>>>>>>>>>>and
>>>>>>>>>>>>force
>>>>>>>>>>>> >>>>>users
>>>>>>>>>>>> >>>>> >>to
>>>>>>>>>>>> >>>>> >> explicitly grant acls that allows access to all
>>>>>>>>>>>>users.)
>>>>>>>>>>>> >>>>> >> - Resource with some acl attached -> only users that
>>>>>>>>>>>>have
>>>>>>>>>>>>a
>>>>>>>>>>>> >>>>>matching
>>>>>>>>>>>> >>>>> >>allow
>>>>>>>>>>>> >>>>> >> acl are allowed (i.e. ³allow READ access to topic1 to
>>>>>>>>>>>>user1
>>>>>>>>>>>>from
>>>>>>>>>>>> >>>>>all
>>>>>>>>>>>> >>>>> >> hosts², only user1 has READ access and no other user
>>>>>>>>>>>>has
>>>>>>>>>>>>access of
>>>>>>>>>>>> >>>>>any
>>>>>>>>>>>> >>>>> >> kind)
>>>>>>>>>>>> >>>>> >> - Resource with some allow and some deny acl attached
>>>>>>>>>>>>->
>>>>>>>>>>>>users
>>>>>>>>>>>>are
>>>>>>>>>>>> >>>>> >>allowed
>>>>>>>>>>>> >>>>> >> to perform operation only when they satisfy allow acl
>>>>>>>>>>>>and
>>>>>>>>>>>>do
>>>>>>>>>>>>not
>>>>>>>>>>>> >>>>>have
>>>>>>>>>>>> >>>>> >> conflicting deny acl. Users that have no acl(allow or
>>>>>>>>>>>>deny)
>>>>>>>>>>>>will
>>>>>>>>>>>> >>>>>still
>>>>>>>>>>>> >>>>> >>not
>>>>>>>>>>>> >>>>> >> have any access. (i.e. ³allow READ access to topic1 to
>>>>>>>>>>>>user1
>>>>>>>>>>>>from
>>>>>>>>>>>> >>>>>all
>>>>>>>>>>>> >>>>> >> hosts except host1 and host², only user1 has access
>>>>>>>>>>>>but
>>>>>>>>>>>>not
>>>>>>>>>>>>from
>>>>>>>>>>>> >>>>>host1
>>>>>>>>>>>> >>>>> >>an
>>>>>>>>>>>> >>>>> >> host2)
>>>>>>>>>>>> >>>>> >>
>>>>>>>>>>>> >>>>> >> I think we need to make a decision on deny primarily
>>>>>>>>>>>>because
>>>>>>>>>>>>with
>>>>>>>>>>>> >>>>> >> introduction of acl management API, Acl is now a
>>>>>>>>>>>>public
>>>>>>>>>>>>class
>>>>>>>>>>>>that
>>>>>>>>>>>> >>>>>will
>>>>>>>>>>>> >>>>> >>be
>>>>>>>>>>>> >>>>> >> used by Ranger/Santry and other authroization
>>>>>>>>>>>>providers.
>>>>>>>>>>>>In
>>>>>>>>>>>> >>>>>Current
>>>>>>>>>>>> >>>>> >>design
>>>>>>>>>>>> >>>>> >> the acl has a permissionType enum field with possible
>>>>>>>>>>>>values
>>>>>>>>>>>>of
>>>>>>>>>>>> >>>>>Allow
>>>>>>>>>>>> >>>>> >>and
>>>>>>>>>>>> >>>>> >> Deny. If we chose to remove deny we can assume all
>>>>>>>>>>>>acls
>>>>>>>>>>>>to
>>>>>>>>>>>>be
>>>>>>>>>>>>of
>>>>>>>>>>>> >>>>>allow
>>>>>>>>>>>> >>>>> >> type and remove the permissionType field completely.
>>>>>>>>>>>> >>>>> >>
>>>>>>>>>>>> >>>>> >> Thanks
>>>>>>>>>>>> >>>>> >> Parth
>>>>>>>>>>>> >>>>> >>
>>>>>>>>>>>> >>>>> >> On 4/20/15, 6:12 PM, "Gwen Shapira"
>>>>>>>>>>>> >>>>><gshap...@cloudera.com<mailto:gshap...@cloudera.com>>
>>>>>>>>>>>>wrote:
>>>>>>>>>>>> >>>>> >>
>>>>>>>>>>>> >>>>> >> >I think thats how its done in pretty much any system
>>>>>>>>>>>>I
>>>>>>>>>>>>can
>>>>>>>>>>>>think
>>>>>>>>>>>> >>>>>of.
>>>>>>>>>>>> >>>>> >> >
>>>>>>>>>>>> >>>>> >>
>>>>>>>>>>>> >>>>> >>
>>>>>>>>>>>> >>>>>
>>>>>>>>>>>> >>>>>
>>>>>>>>>>>> >>
>>>>>>>>>>>> >>
>>>>>>>>>>>> >>
>>>>>>>>>>>> >>
>>>>>>>>>>>> >
>>>>>>>>>>>> >
>>>>>>>>>>>> >
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>--
>>>>>>>>>>>Jeff Holoman
>>>>>>>>>>>Systems Engineer
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>
>>>
>

Reply via email to