Github user revans2 commented on the issue:

    https://github.com/apache/storm/pull/2208
  
    Sorry I have been out of town or I would have joined the conversation 
sooner.
    
    Yes @HeartSaVioR is correct.  The code is really confusing and overly 
complicated.  I comes from when we were adding in security to storm.  It is a 
long story where we ran into several bugs/limitations in ZK itself that 
prevented us from doing what we initial wanted to do.  It also comes from the 
really confusing way that ZK handles authentication.
    
    ZK supports both SASL authentication which is per connection, and a special 
digest authentication with can be per command and can override the connection 
authentication if any.  (don't confuse this special built in ZK digest 
authentication with the SASL digest authentication which ZK also supports, as 
they are different) SASL authentication with ZK is handled through the jaas 
conf.  There is a "Client" section that says how you want to authenticate with 
the zookeeper servers.  Using kerberos for this is the recommended way to 
authenticate ZK as it very secure.  STORM_ZOOKEEPER_AUTH_SCHEME allows you to 
use the built in ZK digest auth scheme in the daemons.  This is really only 
there for testing purposes.  Although it could work in production if you wanted 
it to, it just will be no where near as secure as kerberos is.
    
    One of the issues we ran into with allowing the workers to communicate with 
ZK was that the workers needed some way to authenticate with ZK that didn't 
expire.  We could force everyone to send a TGT to the worker and then use that 
to authenticate with ZK, but TGTs expire and so users would have to push a new 
one periodically.  So we made the decision that we would use the built in ZK 
digest like a ticket.  We would randomly generate a 128 bit number as the 
secret, and then let nimbus setup the ACLs in ZK to only allow a user with that 
128 bit secret to access the data.
    
    That is how it currently works.  We didn't really like that and wanted to 
leave open the possibility of using a different auth scheme with ZK in the 
future.  That is why we have the configs as a string and not a boolean.  If we 
want to update the documentation for the cofnigs we can.  But I would say for 
now just mark them as being internal configs relating to security that the end 
user should not actually set.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to