Certainly. I think it is reasonable to create a separate KIP to enforce the
topic creation policy. After all the administrator needs a guarantee that
the policy that they have specified in the broker will be enforce --
otherwise the feature doesn't seem complete.

On Tue, May 30, 2017 at 4:45 PM, Ismael Juma <ism...@juma.me.uk> wrote:

> I am not sure if the additional complexity in the Controller is worth it
> for this use case. It seems like it would be better to swap the tools to
> use AdminClient and then restrict access to ZK (via ACLs and/or network
> segmentation). Either way, that proposal should be done via a separate KIP
> as KIP-108 was specifically about create topic requests that are done via
> the Kafka protocol.
>
> Ismael
>
> On Wed, May 31, 2017 at 12:37 AM, Dong Lin <lindon...@gmail.com> wrote:
>
> > On Tue, May 30, 2017 at 4:26 PM, Colin McCabe <cmcc...@apache.org>
> wrote:
> >
> > > On Tue, May 30, 2017, at 15:55, Dong Lin wrote:
> > > > Hey Colin,
> > > >
> > > > I think one big advantage of the broker side config is that it can
> not
> > be
> > > > ignored by the malicious client, right?
> > >
> > > Hi Dong,
> > >
> > > The scenario I was thinking of is where a malicious client communicates
> > > directly with ZooKeeper, bypassing the broker.  As far as I can see,
> > > nothing that we do on the broker can prevent this from happening.  It
> > > has to be blocked by ZooKeeper itself.
> > >
> >
> > I see. I agree that malicious client can still create the topic via
> > zookeeper if we don't have ACL. The approach using the new config can
> > prevent non-malicious client from using old script to create topic via
> > zookeeper.
> >
> >
> > >
> > > >
> > > > 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.
> > >
> > > Unfortunately, the latest version of kafka-topics.sh still creates
> > > topics by talking directly to ZK.  It has not been converted to use the
> > > new AdminClient, although that is planned.
> > >
> >
> > Yep. Thus the new config-based approach still has its advantage over
> > ZK-based approach because it ensures that non-malicious user will not
> > create topic via zookeeper.
> >
> >
> > >
> > > best,
> > > Colin
> > >
> > >
> > > > >
> > > > > 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
> > > > >> > > > > > > > > > > > >
> > > > >> > > > > > > > > > >
> > > > >> > > > > > > > > >
> > > > >> > > > > > > > >
> > > > >> > > > > > > >
> > > > >> > > > > > >
> > > > >> > > > > >
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >>
> > > > >
> > > > >
> > >
> >
>

Reply via email to