Sorry, for the confusion. I'm not sure my last email is clear enough either...

Consumers will have a Principal which may belong to a group.
But consumer configuration also have a group.id, which controls how
partitions are shared between consumers and how offsets are committed.
I'm talking about those Groups.


On Fri, Apr 24, 2015 at 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+-+Authorizatio
>>>>>>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+-+Authoriza
>>>>>>>>>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+-+Authori
>>>>>>>>>>>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.INVALID
>>>>>>>>>>>>>>
>>>>>>>>>>> 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.com>
>>>>>>>>>>>>>>
>>>>>>>>>>>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