Ok, thanks for spotting it.

-Flavio

> On 22 Oct 2015, at 05:54, Jun Rao <j...@confluent.io> wrote:
> 
> It seems that in the secure -> unsecure plan, step 3 needs to be done
> before step 2.
> 
> Thanks,
> 
> Jun
> 
> On Wed, Oct 21, 2015 at 3:59 PM, Flavio Junqueira <f...@apache.org> wrote:
> 
>> 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
>> 
>> 

Reply via email to