Hey Colin, I think one big advantage of the broker side config is that it can not be ignored by the malicious client, right?
Thanks, Dong On Tue, May 30, 2017 at 3:53 PM, Dong Lin <lindon...@gmail.com> wrote: > Do we have an old version of bin/kafka-topics.sh which creates topic via > ZK and still allows user to access ZK with ACL? Another concern is that > some user may not have ACL service deployed in their cluster. If neither of > these is issue, then I would prefer the zookeeper approach instead of > adding a new broker config if the zookeeper approach is doable. > > However, regardless of whether we secure the zookeeper from unauthorized > user, I think KIP-108 should provide a solution to guarantee that all topic > creation logic goes through the topic creation policy. > > Thanks, > Dong > > On Tue, May 30, 2017 at 3:39 PM, Colin McCabe <cmcc...@apache.org> wrote: > >> It seems like, to make it really secure, we need the enforcement to be >> done at the ZooKepeer level. Any broker or client-side configuration >> can just be ignored by a malicious client. Do we have documentation or >> code that configures ZK to prevent unprivileged users from modifying the >> topic configurations? >> >> best, >> Colin >> >> >> On Tue, May 30, 2017, at 15:02, Dong Lin wrote: >> > Hey Ismael, >> > >> > I agree that it makes sense not to cover ZK-based topic creation with >> the >> > topic creation policy and limit ZK access to brokers only going forward. >> > My >> > point is that we need a way to disable ZK-based topic creation so that >> > all >> > topic creation goes through the topic creation policy as specified in >> > KIP-108. Does this make sense? >> > >> > One example solution is to add a broker-side config >> > "enable.zookeeper.topic.creation" >> > which defaults to "true". If user has overridden this config to be >> > "false", >> > then controller will delete the znode /brokers/topics/{topic} that is >> not >> > created by the controller. We probably need some trick to differentiate >> > between znode created by controller and znode created by outdated tools. >> > For example, the new controller code can add a new field "isController" >> > in >> > the znode /brokers/topics/{topic} when it creates this new znode. Then >> if >> > the znode doesn't have this field AND there is no child under this >> znode, >> > controller can be sure it is created by outdated tools and remove this >> > znode from zookeeper. Users who are using outdated tools to create topic >> > will find that the topic is not created. >> > >> > Dong >> > >> > On Tue, May 30, 2017 at 2:24 PM, Ismael Juma <ism...@juma.me.uk> wrote: >> > >> > > Hi Dong, >> > > >> > > No, ZK-based topic creation doesn't go through the policy since it >> doesn't >> > > go through the broker. Given that, I am not sure how the broker config >> > > would work. Can you please elaborate? It seems like the way forward >> is to >> > > limit ZK access to brokers only. >> > > >> > > Ismael >> > > >> > > On Tue, May 30, 2017 at 10:19 PM, Dong Lin <lindon...@gmail.com> >> wrote: >> > > >> > > > Hey Ismael, >> > > > >> > > > Thanks for the KIP. This is definitely useful. >> > > > >> > > > Does the KIP apply the topic creation policy to ZK-based topic >> creation? >> > > If >> > > > not, which seems to be the case from my understanding, should we >> have a >> > > new >> > > > broker config to disable ZK-based topic creation? This seems >> necessary to >> > > > prevent user from using stray builds to evade the topic creation >> policy. >> > > > >> > > > Thanks, >> > > > Dong >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > On Mon, Jan 9, 2017 at 1:42 PM, Roger Hoover < >> roger.hoo...@gmail.com> >> > > > wrote: >> > > > >> > > > > Got it. Thanks, Ismael. >> > > > > >> > > > > On Mon, Jan 9, 2017 at 10:42 AM, Ismael Juma <ism...@juma.me.uk> >> > > wrote: >> > > > > >> > > > > > Hi Roger, >> > > > > > >> > > > > > That's a good question. The server defaults are passed via the >> > > > > `configure` >> > > > > > method of the `Configurable` interface that is implemented by >> > > > > > `CreateTopicPolicy`. I'll mention this explicitly in the KIP. >> > > > > > >> > > > > > Ismael >> > > > > > >> > > > > > On Mon, Jan 9, 2017 at 6:04 PM, Roger Hoover < >> roger.hoo...@gmail.com >> > > > >> > > > > > wrote: >> > > > > > >> > > > > > > This is great. Thanks, Ismael. >> > > > > > > >> > > > > > > One question. When TopicDetails are passed to the policy >> > > > > implementation, >> > > > > > > would the server defaults already have been merged? If not, I >> > > think >> > > > > the >> > > > > > > policy also needs access to the server defaults. >> > > > > > > >> > > > > > > Cheers, >> > > > > > > >> > > > > > > Roger >> > > > > > > >> > > > > > > On Fri, Jan 6, 2017 at 9:26 AM, Ismael Juma < >> ism...@juma.me.uk> >> > > > wrote: >> > > > > > > >> > > > > > > > Thanks for the review Jun. Yes, that's a good point, I have >> > > updated >> > > > > the >> > > > > > > > KIP. >> > > > > > > > >> > > > > > > > Ismael >> > > > > > > > >> > > > > > > > On Fri, Jan 6, 2017 at 5:15 PM, Jun Rao <j...@confluent.io> >> > > wrote: >> > > > > > > > >> > > > > > > > > Hi, Ismael, >> > > > > > > > > >> > > > > > > > > Thanks for the KIP. Looks reasonable to me. To be >> consistent >> > > with >> > > > > the >> > > > > > > > > pattern used in other pluggable interfaces, we probably >> should >> > > > make >> > > > > > the >> > > > > > > > new >> > > > > > > > > interface configurable and closable? >> > > > > > > > > >> > > > > > > > > Jun >> > > > > > > > > >> > > > > > > > > On Fri, Jan 6, 2017 at 4:16 AM, Ismael Juma < >> ism...@juma.me.uk >> > > > >> > > > > > wrote: >> > > > > > > > > >> > > > > > > > > > Thanks Dan and Colin for the feedback. I updated the >> KIP to >> > > > > include >> > > > > > > the >> > > > > > > > > > addition of a validation mode. Since we need to bump the >> > > > protocol >> > > > > > > > version >> > > > > > > > > > for that, I also added an error message per topic to the >> > > > > response. >> > > > > > I >> > > > > > > > had >> > > > > > > > > > the latter as "Future Work", but I actually felt that it >> > > should >> > > > > be >> > > > > > in >> > > > > > > > the >> > > > > > > > > > first version (good to have feedback confirming that). >> > > > > > > > > > >> > > > > > > > > > Let me know if the changes look good to you. >> > > > > > > > > > >> > > > > > > > > > Ismael >> > > > > > > > > > >> > > > > > > > > > On Thu, Jan 5, 2017 at 9:54 PM, Colin McCabe < >> > > > cmcc...@apache.org >> > > > > > >> > > > > > > > wrote: >> > > > > > > > > > >> > > > > > > > > > > Yeah, I agree... having a validation mode would be >> nice. >> > > We >> > > > > > should >> > > > > > > > be >> > > > > > > > > > > explicit that passing validation doesn't 100% >> guarantee >> > > that >> > > > a >> > > > > > > > > > > subsequent call to create the topic will succeed, >> though. >> > > > > There >> > > > > > is >> > > > > > > > an >> > > > > > > > > > > obvious race condition there-- for example, with a >> plugin >> > > > which >> > > > > > > > > consults >> > > > > > > > > > > some external authentication system, there could be a >> > > change >> > > > to >> > > > > > the >> > > > > > > > > > > privileges in between validation and attempted >> creation. >> > > > > > > > > > > >> > > > > > > > > > > It also seems like we should try to provide a helpful >> > > > exception >> > > > > > > > message >> > > > > > > > > > > for the cases where topic creation fails. This might >> > > involve >> > > > > > > adding >> > > > > > > > > > > more detail about error conditions to >> > > CreateTopicsRequest... >> > > > > > right >> > > > > > > > now >> > > > > > > > > > > it just returns an error code, but a text message >> would be >> > > a >> > > > > nice >> > > > > > > > > > > addition. >> > > > > > > > > > > >> > > > > > > > > > > cheers, >> > > > > > > > > > > Colin >> > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > > On Thu, Jan 5, 2017, at 13:41, dan wrote: >> > > > > > > > > > > > it would be nice to have a dry-run or validate >> ability >> > > > added >> > > > > to >> > > > > > > > this >> > > > > > > > > > kip. >> > > > > > > > > > > > since we are offloading validation to a 3rd party >> > > > > implementor a >> > > > > > > > > random >> > > > > > > > > > > > user >> > > > > > > > > > > > can't know a priori (based solely on kafka configs) >> > > > whether a >> > > > > > > call >> > > > > > > > > > should >> > > > > > > > > > > > succeed without actually creating the topic. >> > > > > > > > > > > > >> > > > > > > > > > > > a similar case is in connect where there is a >> separate >> > > > > endpoint >> > > > > > > > > > > > <https://github.com/apache/kaf >> ka/blob/trunk/connect/ >> > > > > > > > > > > runtime/src/main/java/org/apac >> > > he/kafka/connect/runtime/rest/ >> > > > > > > > resources/ >> > > > > > > > > > > ConnectorPluginsResource.java#L49-L58> >> > > > > > > > > > > > to attempt to validate a connect configuration >> without >> > > > > actually >> > > > > > > > > > creating >> > > > > > > > > > > > the connector. >> > > > > > > > > > > > >> > > > > > > > > > > > thanks >> > > > > > > > > > > > dan >> > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > On Thu, Jan 5, 2017 at 7:34 AM, Ismael Juma < >> > > > > ism...@juma.me.uk >> > > > > > > >> > > > > > > > > wrote: >> > > > > > > > > > > > >> > > > > > > > > > > > > Hi all, >> > > > > > > > > > > > > >> > > > > > > > > > > > > We've posted "KIP-108: Create Topic Policy" for >> > > > discussion: >> > > > > > > > > > > > > >> > > > > > > > > > > > > https://cwiki.apache.org/confl >> uence/display/KAFKA/KIP- >> > > > > > > > > > > > > 108%3A+Create+Topic+Policy >> > > > > > > > > > > > > >> > > > > > > > > > > > > Please take a look. Your feedback is appreciated. >> > > > > > > > > > > > > >> > > > > > > > > > > > > Thanks, >> > > > > > > > > > > > > Ismael >> > > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >