On Mon, Apr 18, 2016 at 11:26 AM, Harsha <ka...@harsha.io> wrote:

> Unifying the two discussion threads on this KIP.
>
> Here is the response from Jitendra
>
> "The need for a large number of clients that are running all over the
> cluster that authenticate with Kafka brokers, is very similar to the
> Hadoop use case of large number of tasks running across the cluster that
> need authentication to Hdfs Namenode. Therefore, the delegation token
> approach does seem like a good fit for this use case as we have seen it
> working at large scale in HDFS and YARN.
>
>   The proposed design is very much inline with Hadoop approach. A few
>   comments:
>
> 1) Why do you guys want to allow infinite renewable lifetime for a
> token? HDFS restricts a token to a max life time (default 7 days).  A
> token's vulnerability is believed to increase with time.
>
I agree that having infinite lifetime might not be the best idea.

>
> 2) As I understand the tokens are stored in zookeeper as well, and can
> be updated there. This is clever as it can allow replacing the tokens
> once they run out of max life time, and clients can download new tokens
> from zookeeper. It shouldn't be a big load on zookeeper as a client will
> need to get a new token once in several days. In this approach you don't
> need infinite lifetime on the token even for long running clients.
>
> 3) The token password are generated using a master key. The master key
> should also be periodically changed. In Hadoop, the default renewal
> period is 1 day.?
>
IIUC, this will require brokers maintaining a list of X most recent master
keys. This list will have to be persisted somewhere, as if a broker goes
down it will have to get that list again and storing master keys on ZK is
not the best idea. However, if a broker goes down then we have much bigger
issue to deal with and client can always re-authenticate is such events.

Did you happen to take a look at other alternatives this list has suggested?

>
> Thanks for a thorough proposal, great work!"
>
>
>
> On Mon, Mar 7, 2016, at 10:28 PM, Gwen Shapira wrote:
> > Makes sense to me. Thanks!
> >
> > On Mon, Mar 7, 2016 at 9:25 PM, Harsha <ka...@harsha.io> wrote:
> > > It doesn't need any release vehicle but still the work can move
> forward.
> > > If anyone is interested in the KIP please do the review and provide the
> > > comments.
> > >
> > > -Harsha
> > >
> > > On Mon, Mar 7, 2016, at 04:59 PM, Ismael Juma wrote:
> > >> I agree that it would be good to have more time to review and discuss
> > >> KIP-48.
> > >>
> > >> Ismael
> > >>
> > >> On Tue, Mar 8, 2016 at 12:55 AM, Gwen Shapira <g...@confluent.io>
> wrote:
> > >>
> > >> > Hi Team,
> > >> >
> > >> > Since KIP-48 depends on KIP-43, which is already a bit of a risk for
> > >> > the next release - any chance we can delay delegation tokens to
> Kafka
> > >> > 0.10.1?
> > >> > With the community working on a release every 3 month, this is not
> a huge
> > >> > delay.
> > >> >
> > >> > Gwen
> > >> >
> > >> > On Fri, Feb 26, 2016 at 5:11 PM, Ashish Singh <asi...@cloudera.com>
> wrote:
> > >> > > Parth,
> > >> > >
> > >> > > Thanks again for the awesome write up. Following our discussion
> from the
> > >> > > JIRA, I think it will be easier to compare various alternatives
> if they
> > >> > are
> > >> > > listed together. I am stating below a few alternatives along with
> a the
> > >> > > current proposal.
> > >> > > (Current proposal) Store Delegation Token, DT, on ZK.
> > >> > >
> > >> > >    1. Client authenticates with a broker.
> > >> > >    2. Once a client is authenticated, it will make a broker side
> call to
> > >> > >    issue a delegation token.
> > >> > >    3. The broker generates a shared secret based on HMAC-SHA256(a
> > >> > >    Password/Secret shared between all brokers, randomly generated
> > >> > tokenId).
> > >> > >    4. Broker stores this token in its in memory cache. Broker
> also stores
> > >> > >    the DelegationToken without the hmac in the zookeeper.
> > >> > >    5. All brokers will have a cache backed by zookeeper so they
> will all
> > >> > >    get notified whenever a new token is generated and they will
> update
> > >> > their
> > >> > >    local cache whenever token state changes.
> > >> > >    6. Broker returns the token to Client.
> > >> > >
> > >> > > Probable issues and fixes
> > >> > >
> > >> > >    1. Probable race condition, client tries to authenticate with
> a broker
> > >> > >    that is yet to be updated with the newly generated DT. This can
> > >> > probably be
> > >> > >    dealt with making dtRequest block until all brokers have
> updated
> > >> > their DT
> > >> > >    cache. Zk barrier or similar mechanism can be used. However,
> all such
> > >> > >    mechanisms will increase complexity.
> > >> > >    2. Using a static secret key from config file. Will require yet
> > >> > another
> > >> > >    config and uses a static secret key. It is advised to rotate
> secret
> > >> > keys
> > >> > >    periodically. This can be avoided with controller generating
> > >> > secretKey and
> > >> > >    passing to brokers periodically. However, this will require
> brokers to
> > >> > >    maintain certain counts of secretKeys.
> > >> > >
> > >> > > (Alternative 1) Have controller generate delegation token.
> > >> > >
> > >> > >    1. Client authenticates with a broker.
> > >> > >    2. Once a client is authenticated, it will make a broker side
> call to
> > >> > >    issue a delegation token.
> > >> > >    3. Broker forwards the request to controller.
> > >> > >    4. Controller generates a DT and broadcasts to all brokers.
> > >> > >    5. Broker stores this token in its memory cache.
> > >> > >    6. Controller responds to broker’s DT req.
> > >> > >    7. Broker returns the token to Client.
> > >> > >
> > >> > > Probable issues and fixes
> > >> > >
> > >> > >    1. We will have to add new APIs to support controller pushing
> tokens
> > >> > to
> > >> > >    brokers on top of the minimal APIs that are currently proposed.
> > >> > >    2. We will also have to add APIs to support the bootstrapping
> case,
> > >> > i.e,
> > >> > >    when a new broker comes up it will have to get all delegation
> tokens
> > >> > from
> > >> > >    the controller.
> > >> > >    3. In catastrophic failures where all brokers go down, the
> tokens will
> > >> > >    be lost even if servers are restarted as tokens are not
> persisted
> > >> > anywhere.
> > >> > >    If this happens, then there are more important things to worry
> about
> > >> > and
> > >> > >    maybe it is better to re-authenticate.
> > >> > >
> > >> > > (Alternative 2) Do not distribute DT to other brokers at all.
> > >> > >
> > >> > >    1. Client authenticates with a broker.
> > >> > >    2. Once a client is authenticated, it will make a broker side
> call to
> > >> > >    issue a delegation token.
> > >> > >    3. The broker generates DT of form, [hmac + (owner, renewer,
> > >> > >    maxLifeTime, id, hmac, expirationTime)] and passes back this
> DT to
> > >> > client.
> > >> > >    hmac is generated via {HMAC-SHA256(owner, renewer,
> maxLifeTime, id,
> > >> > hmac,
> > >> > >    expirationTime) using SecretKey}. Note that all brokers have
> this
> > >> > SecretKey.
> > >> > >    4. Client then goes to any broker and to authenticate sends
> the DT.
> > >> > >    Broker recalculates hmac using (owner, renewer, maxLifeTime,
> id, hmac,
> > >> > >    expirationTime) info from DT and its SecretKey. If it matches
> with
> > >> > hmac of
> > >> > >    DT, client is authenticated. Yes, it will do other obvious
> checks of
> > >> > >    timestamp expiry and such.
> > >> > >
> > >> > > Note that secret key will be generated by controller and passed to
> > >> > brokers
> > >> > > periodically.
> > >> > > Probable issues and fixes
> > >> > >
> > >> > >    1. How to delete a DT? Yes, that is a downside here. However,
> this can
> > >> > >    be handled with brokers maintaining a blacklist of DTs, DTs
> from this
> > >> > list
> > >> > >    can be removed after expiry.
> > >> > >    2. In catastrophic failures where all brokers go down, the
> tokens will
> > >> > >    be lost even if servers are restarted as tokens are not
> persisted
> > >> > anywhere.
> > >> > >    If this happens, then there are more important things to worry
> about
> > >> > and
> > >> > >    maybe it is better to re-authenticate.
> > >> > >
> > >> > >
> > >> > >
> > >> > > On Fri, Feb 26, 2016 at 1:58 PM, Parth Brahmbhatt <
> > >> > > pbrahmbh...@hortonworks.com> wrote:
> > >> > >
> > >> > >> Hi,
> > >> > >>
> > >> > >> I have filed KIP-48 so we can offer hadoop like delegation
> tokens in
> > >> > >> kafka. You can review the design
> > >> > >>
> > >> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-48+Delegation+token+support+for+Kafka
> > >> > .
> > >> > >> This KIP depends on KIP-43 and we have also discussed an
> alternative to
> > >> > >> proposed design here<
> > >> > >>
> > >> >
> https://issues.apache.org/jira/browse/KAFKA-1696?focusedCommentId=15167800&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15167800
> > >> > >> >.
> > >> > >>
> > >> > >> Thanks
> > >> > >> Parth
> > >> > >>
> > >> > >
> > >> > >
> > >> > >
> > >> > > --
> > >> > >
> > >> > > Regards,
> > >> > > Ashish
> > >> >
>



-- 

Regards,
Ashish

Reply via email to