I have copied Thejas from hive team in cc list. Here is what I learnt from him
* Hive calls the authorizer plugin if you execute “grant/revoke Operation to User on Table". They use this as hive provides the SQL layer and SQL has standards for grant/revoke which they follow. * If the plugin provides more entities then what can be expressed by the above statement (like unix/ldap groups or host level control) you have to go to the plugin’s CLI/UI to create this acl. So as mentioned below you will have 2 tools. One for the very basic grant/revoke access and for anything complex you have a secondary interface provided by Authorizer plugin. Thanks Parth On 4/17/15, 12:01 PM, "Jun Rao" <j...@confluent.io> wrote: >Hi, Parth, > >How does this work in Hive? I thought authorization in Hive always goes >through it's SQL cli for any authorization plugin. When integrating with >Ranger(Argus), does Hive do authorization through a separate CLI? > >Thanks, > >Jun > > >On Fri, Apr 17, 2015 at 11:01 AM, Parth Brahmbhatt < >pbrahmbh...@hortonworks.com> wrote: > >> We could do this but I think its too simplistic plus now we are adding >> authorization related options in CLI which I thought everyone wants to >> avoid. >> >> When I say its too simplistic I mean there are missing options like >> —hosts, what happens when we start supporting group now we will probably >> end up adding "—grant —groups”. I think we will just endup polluting >>kafka >> create CLI with all the different acl options or we will have 2 CLIs one >> for the basic stuff and for anything advance you will have to use a >> different tool. It might be better to just have a single separate ACL >> management CLI. >> >> Thanks >> Parth >> >> On 4/17/15, 10:42 AM, "Gwen Shapira" <gshap...@cloudera.com> wrote: >> >> >I've probably been a DBA for too long, but I imagined something like: >> >kafka-topic --topic t1 --grant user --action action >> >kafka-topic --topic t1 --revoke user --action action >> >(i.e. the commandline equivalent of "grant select on table1 to >> >gwenshap" and "revoke select on table2 from gwenshap") >> > >> >When you need gazillion of them, you generate a script with gazillion >> >of those and execute. >> > >> >Maybe it just looks reasonable to me because I'm used to it, though :) >> > >> >Or maybe including the json parsing code in TopicCommand is not so bad? >> > >> > >> > >> >On Fri, Apr 17, 2015 at 10:30 AM, Parth Brahmbhatt >> ><pbrahmbh...@hortonworks.com> wrote: >> >> * Yes, Acl pretty much captures everything. Originally I had >>resource as >> >> part of Acls, we can go back to that. >> >> * The describe can call getAcl and I plan to do so. addAcl is tricky >> >> because the user will have to specify the acls through command lines, >> >> which will probably be a location to some file. Basically the CLI >>won¹t >> >> know how to parse user input and convert it to a principal/acl that >>the >> >> plugin understands. We could add an API in authorizer that can take a >> >>file >> >> as input if we want ‹acl as an option during create. >> >> * Yes also getAcls(Principal principal). >> >> >> >> Thanks >> >> Parth >> >> >> >> >> >> On 4/17/15, 10:05 AM, "Gwen Shapira" <gshap...@cloudera.com> wrote: >> >> >> >>>On Fri, Apr 17, 2015 at 9:31 AM, Parth Brahmbhatt >> >>><pbrahmbh...@hortonworks.com> wrote: >> >>>> I was following the storm model but I think this is a reasonable >> >>>>change. I recommend changing the API names to addAcls, removeAcls >>and >> >>>>getAcls. >> >>> >> >>>And they probably just need to get List<Acl> instead of everything I >> >>>specified? Looks like Acl encapsulates everything we need. >> >>> >> >>>> Couple of points to ensure we are on same page: >> >>>> * With this approach the kafka command line will not provide a way >>to >> >>>>add/edit acls during topic creation, neither it will provide a way >>to >> >>>>modify the acls. It will be up to the authorizer to either define a >> >>>>command line utility or to allow other means to add >>acls(CLI/UI/REST). >> >>>>For the default implementation we can provide CLI. >> >>> >> >>>You looked into this deeper than I did - is there a reason >> >>>TopicCommand can't invoke addACL and getACL? >> >>> >> >>>> * We probably want to add List<Acl> getAcls(Resource resource) so >> >>>>users >> >>>>can list all acls on a topic. >> >>> >> >>>Also getAcls(Principal princ)? >> >>> >> >>>> >> >>>> I haven¹t looked at how consumer offsets are currently stored so I >> >>>>will >> >>>>have to take a look but I think that is implementation detail. >> >>>> >> >>>> Gwen,Jun and other interested parties, do you have time to jump on >>a >> >>>>quick hangout so we can go over some of the lower level details? >> >>>> >> >>>> Thanks >> >>>> Parth >> >>>> From: Tong Li <liton...@us.ibm.com<mailto:liton...@us.ibm.com>> >> >>>> Reply-To: "dev@kafka.apache.org<mailto:dev@kafka.apache.org>" >> >>>><dev@kafka.apache.org<mailto:dev@kafka.apache.org>> >> >>>> Date: Friday, April 17, 2015 at 7:34 AM >> >>>> To: "dev@kafka.apache.org<mailto:dev@kafka.apache.org>" >> >>>><dev@kafka.apache.org<mailto:dev@kafka.apache.org>> >> >>>> Subject: Re: [DISCUSSION] KIP-11: ACL Management >> >>>> >> >>>> >> >>>> Gwen, >> >>>> There is one product called ElasticSearch which has been >> >>>>quite >> >>>>successful. They recently added security, what they actually did is >> >>>>quite nice. They really separated Authentication and Authorization >> >>>>which >> >>>>many people get really confused about and often mix them up. I >>looked >> >>>>through what they did and quite impressed by it, I think there are >>many >> >>>>things we can borrow from. Here is a link to it. >> >>>>http://www.elastic.co/guide/en/shield/current/architecture.html. The >> >>>>product name is called "shield" which is implemented as an >> >>>>ElasticSearch >> >>>>plugin. The promise here is that you can have a running >>ElasticSearch, >> >>>>then you install this plugin, configure it, then your ElasticSearch >> >>>>service is secured. The goal should be really the same for Kafka, >>you >> >>>>have a Kafka service running, you install a new plugin (in this case >> >>>>security plugin), configure it, then your Kafka service is secured. >>I >> >>>>think that the key here is that we should introduce a true pluggable >> >>>>framework in Kafka which allows security, quota, encryption, >> >>>>compression, serialization/deserialization all being developed as >> >>>>plugins which can be all easily added and configured onto a running >> >>>>Kafka service, then the functions/features provided by the plugins >>will >> >>>>start working. Once we have this framework in, how a security plugin >> >>>>works internally becomes the really the concern of that plugin, for >> >>>>example, how a new user gets registered, permission granted, >>revoked, >> >>>>all these will be the concern of that plugin, rest of the Kafka >> >>>>components should not really be concerned about them. This way we >>are >> >>>>really following the design principal (Separation of concerns). >>With >> >>>>all that, what I am proposing is a true pluggable framework >> >>>>introduction >> >>>>into Kafka which I have also talked about in a previous email. For >> >>>>security we can implement a simple file based security plugin, other >> >>>>plugins such as LDAP, AD for authentication can come later, plugin >>for >> >>>>authorization such as RBAC can also come later if people care so >>much >> >>>>about using them. >> >>>> >> >>>> Thanks. >> >>>> >> >>>> Tong Li >> >>>> OpenStack & Kafka Community Development >> >>>> Building 501/B205 >> >>>> liton...@us.ibm.com<mailto:liton...@us.ibm.com> >> >>>> >> >>>> [Inactive hide details for Gwen Shapira ---04/16/2015 12:44:54 >>PM---Hi >> >>>>Kafka Authorization Fans, I'm starting a new thread on a]Gwen >>Shapira >> >>>>---04/16/2015 12:44:54 PM---Hi Kafka Authorization Fans, I'm >>starting a >> >>>>new thread on a specific sub-topic of KIP-11, since >> >>>> >> >>>> From: Gwen Shapira >> >>>><gshap...@cloudera.com<mailto:gshap...@cloudera.com>> >> >>>> To: "dev@kafka.apache.org<mailto:dev@kafka.apache.org>" >> >>>><dev@kafka.apache.org<mailto:dev@kafka.apache.org>> >> >>>> Date: 04/16/2015 12:44 PM >> >>>> Subject: [DISCUSSION] KIP-11: ACL Management >> >>>> >> >>>> ________________________________ >> >>>> >> >>>> >> >>>> >> >>>> Hi Kafka Authorization Fans, >> >>>> >> >>>> I'm starting a new thread on a specific sub-topic of KIP-11, since >> >>>> this is a bit long :) >> >>>> >> >>>> Currently KIP-11, as I understand it, proposes: >> >>>> * Authorizers are pluggable, with Kafka providing >>DefaultAuthorizer. >> >>>> * Kafka tools allow adding / managing ACLs. >> >>>> * Those ACLs are stored in ZK and cached in a new TopicCache >> >>>> * Authorizers can either use the ACLs defined and stored in Kafka, >>or >> >>>> define and use their own. >> >>>> >> >>>> I am concerned of two possible issues with this design: >> >>>> 1. Separation of concerns - only authorizers should worry about >>ACLs, >> >>>> and therefore the less code for ACLs that exist in Kafka core, the >> >>>> better. >> >>>> 2. User confusion - It sounded like we can define ACLs in Kafka >>itself >> >>>> but authorizers can also define their own, so "kafka-topics >> >>>> --describe" may show an ACL different than the one in use. This >>can be >> >>>> super confusing for admins. >> >>>> >> >>>> My alternative suggestion: >> >>>> * Authorizer API will include: >> >>>> grantPrivilege(List<Principals>, List<Privilege>) >> >>>> revokePrivilege(List<Principals>, List<Privilege>), >> >>>> getPrivilegesByPrincipal(Principal, Resource) >> >>>> .... >> >>>> (The exact API can be discussed in detail, but you get the idea) >> >>>> * Kafka tools will simply invoke these APIs when topics are added / >> >>>> modified / described. >> >>>> * Each authorizer (including the default one) will be responsible >>for >> >>>> storing, caching and using those ACLs. >> >>>> >> >>>> This way, we keep almost all ACL code with the Authorizer, where it >> >>>> belongs and users get a nice unified interface that reflects what >>is >> >>>> actually getting used in the system. >> >>>> This is pretty much how Sqoop and Hive implement their >>authorization >> >>>>APIs. >> >>>> >> >>>> What do you think? >> >>>> >> >>>> Gwen >> >>>> >> >> >> >>