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