Hi Parth, OK, I understand your approach much better, now. I don’t really have a strong opinion; I guess I just shared Gwen’s concern (in the hangout) that, with this approach, if a site implements their own authorizer using their own ACL implementation, it will work, but they’ll have this vestigial infrastructure for creating & maintaining ACLs that could cause confusion.
One final thought: whatever the abstraction you’re planning for to represent an ACL in the TopicConfig, could you make that pluggable? On 4/15/15, 5:15 PM, "Parth Brahmbhatt" <pbrahmbh...@hortonworks.com> wrote: >Kafka currently stores logConfig overrides specified during topic creation >in zookeeper, its just an instance of java.util.Properties converted to >json. I am proposing in addition to that we store acls and owner as well >as part of same Properties map. >There is some infrastructure around reading this config, converting it >back to Properties map and most importantly propagating any changes >efficiently which we will be able to leverage. As this infrastructure is >common to the cluster the reading (not interpreting) of config happens >outside of any authorization code. > >If the TopicConfigCache just kept the json representation and left it to >authorizer to parse it, the authorizer will have to either parse the json >for each request(not acceptable) or it will have to keep one more layer of >parsed ACL instance cache. Assuming authorizer will keep an additional >caching layer we will now have to implement some way to invalidate the >cache which means the TopicConfigCache will have to be an observable which >the Authorizer observes and invalidates its cache entries when >topicConfigCache gets updated. Seemed like unnecessary complexity with not >lot to gain so I went with TopicConfigCache interpreting the json and >caching a higher level modeled object. > >In summary, the interpretation is done for both optimization and >simplicity. If you think it is important to allow custom ACL format >support we can add one more pluggable config(acl.parser) and >interface(AclParser) or it could just be another method in Authorizer. >One thing to note the current ACL json is versioned so it is easy to make >changes to it however it won’t be possible to support custom ACL formats >with the current design. > >Thanks >Parth > >On 4/15/15, 4:29 PM, "Michael Herstine" <mherst...@linkedin.com.INVALID> >wrote: > >>Hi Parth, >> >>I’m a little confused: why would Kafka need to interpret the JSON? IIRC >>KIP-11 even says that the TopicConfigData will just store the JSON. I’m >>not really making a design recommendation here, just trying to understand >>what you’re proposing. >> >>On 4/15/15, 11:20 AM, "Parth Brahmbhatt" <pbrahmbh...@hortonworks.com> >>wrote: >> >>>Hi Michael, >>> >>>There is code in kafka codebase that reads and interprets the topic >>>config JSON which has acls, owner and logconfig properties. There are 3 >>>use cases that we are supporting with current proposal: >>> >>> * You use out of box simpleAcl authorizer which is tied to the acl >>>stored in topic config and the format is locked down. >>> * You have a custom authorizer and a custom ACL store. Ranger/Argus >>>falls under this as they have their own acl store and ui that users use >>>to configure acls on the cluster and cluster resources like topic. It >>>is >>>upto the custom authorizer to leverage the kafka acl configs or >>>completely ignore them as they have set a user expectation that only >>>acls >>>configured via their ui/system will be effective. >>> * You have a custom authorizer but no custom Acl store. You are >>>completely tied to Acl structure that we have provided in out of box >>>implementation. >>> >>>Thanks >>>Parth >>> >>>On 4/15/15, 10:31 AM, "Michael Herstine" >>><mherst...@linkedin.com.INVALID<mailto:mherst...@linkedin.com.INVALID>> >>>wrote: >>> >>>Hi Parth, >>> >>>One question that occurred to me at the end of today’s hangout: how tied >>>are we to a particular ACL representation under your proposal? I know >>>that >>>TopicConfigCache will just contain JSON— if a particular site decides >>>they >>>want to represent their ACLs differently, and swap out the authorizer >>>implementation, will that work? I guess what I’m asking is whether >>>there’s any code in the Kafka codebase that will interpret that JSON, or >>>does that logic live exclusively in the authorizer? >>> >>>On 4/14/15, 10:56 PM, "Don Bosco Durai" >>><bo...@apache.org<mailto:bo...@apache.org>> wrote: >>> >>>I also feel, having just IP would be more appropriate. Host lookup will >>>unnecessary slow things down and would be insecure as you pointed out. >>> >>>With IP, it will be also able to setup policies (in future if needed) >>>with >>>ranges or netmasks and it would be more scalable. >>> >>>Bosco >>> >>> >>>On 4/14/15, 1:40 PM, "Michael Herstine" >>><mherst...@linkedin.com.INVALID<mailto:mherst...@linkedin.com.INVALID>> >>>wrote: >>> >>>Hi Parth, >>> >>>Sorry to chime in so late, but I’ve got a minor question on the KIP. >>> >>>Several methods take a parameter named “host” of type String. Is that >>>intended to be a hostname, or an IP address? If the former, I’m curious >>>as >>>to how that’s found (in my experience, when accepting an incoming socket >>>connection, you only know the IP address, and there isn’t a way to map >>>that to a hostname without a round trip to a DNS server, which is >>>insecure >>>anyway). >>> >>> >>>On 3/25/15, 1:07 PM, "Parth Brahmbhatt" >>><pbrahmbh...@hortonworks.com<mailto:pbrahmbh...@hortonworks.com>> >>>wrote: >>> >>>Hi all, >>> >>>I have modified the KIP to reflect the recent change request from the >>>reviewers. I have been working on the code and I have the server side >>>code >>>for authorization ready. I am now modifying the command line utilities. >>>I >>>would really appreciate if some of the committers can spend sometime to >>>review the KIP so we can make progress on this. >>> >>>Thanks >>>Parth >>> >>>On 3/18/15, 2:20 PM, "Michael Herstine" >>><mherst...@linkedin.com.INVALID<mailto:mherst...@linkedin.com.INVALID>> >>>wrote: >>> >>>Hi Parth, >>> >>>Thanks! A few questions: >>> >>>1. Do you want to permit rules in your ACLs that DENY access as well as >>>ALLOW? This can be handy setting up rules that have exceptions. E.g. >>>“Allow principal P to READ resource R from all hosts” with “Deny >>>principal >>>P READ access to resource R from host H1” in combination would allow P >>>to >>>READ R from all hosts *except* H1. >>> >>>2. When a topic is newly created, will there be an ACL created for it? >>>If >>>not, would that not deny subsequent access to it? >>> >>>(nit) Maybe use Principal instead of String to represent principals? >>> >>> >>>On 3/9/15, 11:48 AM, "Don Bosco Durai" >>><bo...@apache.org<mailto:bo...@apache.org>> wrote: >>> >>>Parth >>> >>>Overall it is looking good. Couple of questionsŠ >>> >>>- Can you give an example how the policies will look like in the >>>default >>>implementation? >>>- In the operations, can we support ³CONNECT² also? This can be used >>>during Session connection >>>- Regarding access control for ³Topic Creation², since we can¹t do it >>>on >>>the server side, can we de-scope it for? And plan it as a future >>>feature >>>request? >>> >>>Thanks >>> >>>Bosco >>> >>> >>>On 3/6/15, 8:10 AM, "Harsha" <ka...@harsha.io<mailto:ka...@harsha.io>> >>>wrote: >>> >>>Hi Parth, >>> Thanks for putting this together. Overall it looks good >>>to >>> me. Although AdminUtils is a concern KIP-4 can probably >>>fix >>> that part. >>>Thanks, >>>Harsha >>> >>>On Thu, Mar 5, 2015, at 10:39 AM, Parth Brahmbhatt wrote: >>>Forgot to add links to wiki and jira. >>>Link to wiki: >>>https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authoriza >>>t >>>i >>>o >>>n >>>+ >>>Interface >>>Link to Jira: https://issues.apache.org/jira/browse/KAFKA-1688 >>>Thanks >>>Parth >>>From: Parth Brahmbhatt >>><pbrahmbh...@hortonworks.com<mailto:pbrahmbh...@hortonworks.com><mailto: >>>p >>>b >>>rahmbh...@hortonworks.com>> >>>Date: Thursday, March 5, 2015 at 10:33 AM >>>To: >>>"dev@kafka.apache.org<mailto:dev@kafka.apache.org><mailto:d...@kafka.apac >>>h >>>e >>>.org>" >>><dev@kafka.apache.org<mailto:dev@kafka.apache.org><mailto:d...@kafka.apac >>>h >>>e >>>.org>> >>>Subject: [DISCUSS] KIP-11- Authorization design for kafka security >>>Hi, >>>KIP-11 is open for discussion , I have updated the wiki with the >>>design >>>and open questions. >>>Thanks >>>Parth >>> >>> >>> >>> >>> >>> >>> >>> >>> >> >