Ok, thanks for the feedback, Todd. I have updated the KIP with some of the points discussed here. There is more to add based on these last comments, though.
-Flavio > On 21 Oct 2015, at 23:43, Todd Palino <tpal...@gmail.com> wrote: > > On Wed, Oct 21, 2015 at 3:38 PM, Flavio Junqueira <f...@apache.org > <mailto:f...@apache.org>> wrote: > >> >>> On 21 Oct 2015, at 21:54, Todd Palino <tpal...@gmail.com> wrote: >>> >>> Thanks for the clarification on that, Jun. Obviously, we haven't been >> doing >>> much with ZK authentication around here yet. There is still a small >> concern >>> there, mostly in that you should not share credentials any more than is >>> necessary, which would argue for being able to use a different ACL than >> the >>> default. I don't really like the idea of having to use the exact same >>> credentials for executing the admin tools as we do for running the >> brokers. >>> Given that we don't need to share the credentials with all consumers, I >>> think we can work around it. >>> >> >> Let me add that a feature to separate the sub-trees of users sharing an >> ensemble is chroot. >> >> On different credentials for admin tools, this sounds doable by setting >> the ACLs of znodes. For example, there could be an admin id and a broker >> id, both with the ability of changing znodes, but different credentials. >> Would something like that work for you? >> > > It would be a nice option to have, as the credentials can be protected > differently. I would consider this a nice to have, and not an "absolutely > must have" feature at this point. > > >> This does bring up another good question, however. What will be the >> process >>> for having to rotate the credentials? That is, if the credentials are >>> compromised and need to be changed, how can that be accomplished with the >>> cluster online. I'm guessing some combination of using skipAcl on the >>> Zookeeper ensemble and config changes to the brokers will be required, >> but >>> this is an important enough operation that we should make sure it's >>> reasonable to perform and that it is documented. >> >> Right now there is no kafka support in the plan for this. But this is >> doable directly through the zk api. Would it be sufficient to write down >> how to perform such an operation via the zk api or do we need a tool to do >> it? >> > > I think as long as there is a documented procedure for how to do it, that > will be good enough. It's mostly about making sure that we can, and that we > don't put something in place that would require downtime to a cluster in > order to change credentials. We can always develop a tool later if it is a > requested item. > > Thanks! > > -Todd > > > >> >> -Flavio >> >>> >>> >>> On Wed, Oct 21, 2015 at 1:23 PM, Jun Rao <j...@confluent.io> wrote: >>> >>>> Parth, >>>> >>>> For 2), in your approach, the broker/controller will then always have >> the >>>> overhead of resetting the ACL on startup after zookeeper.set.acl is set >> to >>>> true. The benefit of using a separate migration tool is that you paid >> the >>>> cost only once during upgrade. It is an extra step during the upgrade. >>>> However, given the other things that you need to do to upgrade to 0.9.0 >>>> (e.g. two rounds of rolling upgrades on all brokers, etc), I am not >> sure if >>>> it's worth to optimize away of this step. We probably just need to >> document >>>> this clearly. >>>> >>>> Todd, >>>> >>>> Just to be clear about the shared ZK usage. Once you set >> CREATOR_ALL_ACL + >>>> READ_ACL_UNSAFE on a path, only ZK clients with the same user as the >>>> creator can modify the path. Other ZK clients authenticated with a >>>> different user can read, but not modify the path. Are you concerned >> about >>>> the reads or the writes to ZK? >>>> >>>> Thanks, >>>> >>>> Jun >>>> >>>> >>>> >>>> On Wed, Oct 21, 2015 at 10:46 AM, Flavio Junqueira <f...@apache.org> >> wrote: >>>> >>>>> >>>>>> On 21 Oct 2015, at 18:07, Parth Brahmbhatt < >>>> pbrahmbh...@hortonworks.com> >>>>> wrote: >>>>>> >>>>>> I have 2 suggestions: >>>>>> >>>>>> 1) We need to document how does one move from secure to non secure >>>>>> environment: >>>>>> 1) change the config on all brokers to zookeeper.set.acl = false >>>>> and do a >>>>>> rolling upgrade. >>>>>> 2) Run the migration script with the jass config file so it is >>>> sasl >>>>>> authenticated with zookeeper and change the acls on all subtrees back >>>> to >>>>>> World modifiable. >>>>>> 3) remove the jaas config / or only the zookeeper section from >>>> the >>>>> jaas, >>>>>> and restart all brokers. >>>>>> >>>>> >>>>> Thanks for bringing it up, it makes sense to have a downgrade path and >>>>> document it. >>>>> >>>>> >>>>>> 2) I am not sure if we should force users trying to move from unsecure >>>> to >>>>>> secure environment to execute the migration script. In the second step >>>>>> once the zookeeper.set.acl is set to true, we can secure all the >>>> subtrees >>>>>> by calling ensureCorrectAcls as part of broker initialization (just >>>> after >>>>>> makesurePersistentPathExists). Not sure why we want to add one more >>>>>> manual/admin step when it can be automated. This also has the added >>>>>> advantage that migration script will not have to take a flag as input >>>> to >>>>>> figure out if it should set the acls to secure or unsecure given it >>>> will >>>>>> always be used to move from secure to unsecure. >>>>>> >>>>> >>>>> The advantage of the third step is to make a single traversal to change >>>>> any remaining znodes with the open ACL. As you suggest, each broker >> would >>>>> do it, so the overhead is much higher. I do agree that eliminating a >> step >>>>> is an advantage, though. >>>>> >>>>>> Given we are assuming all the information in zookeeper is world >>>> readable >>>>> , >>>>>> I don¹t see SSL support as a must have or a blocker for this KIP. >>>>> >>>>> OK, but keep in mind that SSL is only available in the 3.5 branch of >> ZK. >>>>> >>>>> -Flavio >>>>> >>>>>> >>>>>> Thanks >>>>>> Parth >>>>>> >>>>>> >>>>>> >>>>>> On 10/21/15, 9:56 AM, "Flavio Junqueira" <f...@apache.org> wrote: >>>>>> >>>>>>> >>>>>>>> On 21 Oct 2015, at 17:47, Todd Palino <tpal...@gmail.com> wrote: >>>>>>>> >>>>>>>> There seems to be a bit of detail lacking in the KIP. Specifically, >>>> I'd >>>>>>>> like to understand: >>>>>>>> >>>>>>>> 1) What znodes are the brokers going to secure? Is this >> configurable? >>>>>>>> How? >>>>>>> >>>>>>> Currently it is securing all paths here except the consumers one: >>>>>>> >>>>>>> >>>>> >>>> >> https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/utils >>>>>>> /ZkUtils.scala#L56 >>>>>>> < >>>>> >>>> >> https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/util >>>>>>> s/ZkUtils.scala#L56> >>>>>>> >>>>>>> This isn't configurable at the moment. >>>>>>> >>>>>>>> 2) What ACL is the broker going to apply? Is this configurable? >>>>>>> >>>>>>> The default is CREATOR_ALL_ACL + READ_ACL_UNSAFE, which means that an >>>>>>> authenticated client can manipulate secured znodes and everyone can >>>> read >>>>>>> znodes. The API of ZkUtils accommodates other ACLs, but the current >>>> code >>>>>>> is using the default. >>>>>>> >>>>>>>> 3) How will the admin tools (such as preferred replica election and >>>>>>>> partition reassignment) interact with this? >>>>>>>> >>>>>>> >>>>>>> Currently, you need to set a system property passing the login config >>>>>>> file to be able to authenticate the client and perform writes to ZK. >>>>>>> >>>>>>> -Flavio >>>>>>> >>>>>>>> -Todd >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Oct 21, 2015 at 9:16 AM, Ismael Juma <ism...@juma.me.uk> >>>>> wrote: >>>>>>>> >>>>>>>>> On Wed, Oct 21, 2015 at 5:04 PM, Flavio Junqueira <f...@apache.org> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Bringing the points Grant brought to this thread: >>>>>>>>>> >>>>>>>>>>> Is it worth mentioning the follow up steps that were discussed in >>>>> the >>>>>>>>> KIP >>>>>>>>>>> call in this KIP document? Some of them were: >>>>>>>>>>> >>>>>>>>>>> - Adding SSL support for Zookeeper >>>>>>>>>>> - Removing the "world readable" assumption >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Grant, how would you do it? I see three options: >>>>>>>>>> >>>>>>>>>> 1- Add to the existing KIP, but then the functionality we should >> be >>>>>>>>>> checking in soon won't include it, so the KIP will remain >>>> incomplete >>>>>>>>>> >>>>>>>>> >>>>>>>>> A "Future work" section would make sense to me, but I don't know >> how >>>>>>>>> this >>>>>>>>> is normally handled. >>>>>>>>> >>>>>>>>> Ismael