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 >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>> >>> >