Thanks for your comments Jun. * Renamed the resource to consumer-group in wiki. * I don’t see a use case where admins/users would want to reserve topic names in advance. Can you describe why this would be needed.
Thanks Parth On 4/26/15, 2:01 PM, "Jun Rao" <j...@confluent.io> wrote: >A few more minor comments. > >100. To make it clear, perhaps we should rename the resource "group" to >consumer-group. We can probably make the same change in CLI as well so >that >it's not confused with user group. > >101. Currently, create is only at the cluster level. Should it also be at >topic level? For example, perhaps it's useful to allow only user X to >create topic X. > >Thanks, > >Jun > > >On Sun, Apr 26, 2015 at 12:36 AM, Gwen Shapira <gshap...@cloudera.com> >wrote: > >> 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.co >>>>>>>>>>>>>>m >> >> >> >>>>>>>>>>>> >>>>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 >> >>>>>>>>>> >> >>>>>>>>> >> >>>>>>> >> >>>>> >> >>> >> > >>