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