Hi Gwen,
           Can you look at Parth's last reply. Does it answer your
           concerns.

Thanks,
Harsha

On Wed, May 4, 2016, at 09:25 AM, parth brahmbhatt wrote:
> Thanks for reviewing Gwen. The wiki already has details on token
> expiration
> under token acquisition process
> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-48+Delegation+token+support+for+Kafka#KIP-48DelegationtokensupportforKafka-Tokenacquisition>.
> Current proposal is that tokens will expire based on a server side
> configuration (default 24 hours) unless renewed. Renewal is only allowed
> until the max life time of token. Alternatively we could also make that
> an
> optional param and the server side default can serve as the upper bound.
> 
> To your second point it will be done exactly the same way we would
> support
> multiple keytabs. The calling client will have to put the tokens it wants
> to use in the subject instance and call produce/consume inside
> subject.doas. Each caller will have to keep track of its own subject. I
> will have to look at the code to see if we support this feature right now
> but my understanding is delegation token shouldn't need any special
> treatment as its just another type of Credential in the subject.
> 
> I would also like to know what is your opinion about infinite renewal (my
> recommendation is to not support this), tokens renewing them self(my
> recommendation is to not support this) and most importantly your choice
> between the alternatives listed on this thread
> <http://apache.markmail.org/message/ca3iakt3m6c4yygp?q=KIP-48+Support+for+delegation+tokens+as+an+authentication+mechanism>
> ( I am leaning towards the alternative-2 minus controller distributing
> secret). Thanks again for reviewing.
> 
> Thanks
> Parth
> 
> 
> 
> On Wed, May 4, 2016 at 6:17 AM, Gwen Shapira <g...@confluent.io> wrote:
> 
> > Harsha,
> >
> > I was thinking of the Rest Proxy. I didn't see your design yet, but in
> > our proxy, we have a set of producers, which will serve multiple users
> > going through the proxy. Since these users will have different
> > privileges, they'll need to authenticate separately, and can't share a
> > token.
> >
> > Am I missing anything?
> >
> > Gwen
> >
> > On Tue, May 3, 2016 at 2:11 PM, Harsha <ka...@harsha.io> wrote:
> > > Gwen,
> > >            On your second point. Can you describe a usecase where
> > >            mutliple clients ended up sharing a producer and even if they
> > >            do why can't they not use single token that producer
> > >            captures. Why would we need multiple clients with different
> > >            tokens sharing a single instance of producer.  Also in this
> > >            case other clients have access all the tokens no?
> > >
> > > Thanks,
> > > Harsha
> > >
> > >
> > > On Tue, May 3, 2016, at 11:49 AM, Gwen Shapira wrote:
> > >> Sorry for the delay:
> > >>
> > >> Two questions that we didn't see in the wiki:
> > >> 1. Is there an expiration for delegation tokens? Renewal? How do we
> > >> revoke them?
> > >> 2. If we want to use delegation tokens for "do-as" (say, submit Storm
> > >> job as my user), we will need a producer for every job (we can't share
> > >> them between multiple jobs running on same node), since we only
> > >> authenticate when connecting. Is there a plan to change this for
> > >> delegation tokens, in order to allow multiple users with different
> > >> tokens to share a client?
> > >>
> > >> Gwen
> > >>
> > >> On Tue, May 3, 2016 at 9:12 AM, parth brahmbhatt
> > >> <brahmbhatt.pa...@gmail.com> wrote:
> > >> > Bumping this up one more time, can other committers review?
> > >> >
> > >> > Thanks
> > >> > Parth
> > >> >
> > >> > On Tue, Apr 26, 2016 at 9:07 AM, Harsha <ka...@harsha.io> wrote:
> > >> >
> > >> >> Parth,
> > >> >>           Overall current design looks good to me. I am +1 on the
> > KIP.
> > >> >>
> > >> >> Gwen , Jun can you review this as well.
> > >> >>
> > >> >> -Harsha
> > >> >>
> > >> >> On Tue, Apr 19, 2016, at 09:57 AM, parth brahmbhatt wrote:
> > >> >> > Thanks for review Jitendra.
> > >> >> >
> > >> >> > I don't like the idea of infinite lifetime but I see the Streaming
> > use
> > >> >> > case. Even for Streaming use case I was hoping there will be some
> > notion
> > >> >> > of
> > >> >> > master/driver that can get new delegation tokens at fixed interval
> > and
> > >> >> > distribute to workers. If that is not the case for we can discuss
> > >> >> > delegation tokens renewing them self and the security implications
> > of the
> > >> >> > same.
> > >> >> >
> > >> >> > I did not want clients to fetch tokens from zookeeper, overall I
> > think
> > >> >> > its
> > >> >> > better if clients don't rely on our metadata store and I think we
> > are
> > >> >> > moving in that direction with all the KIP-4 improvements.  I chose
> > >> >> > zookeeper as in this case the client will still just talk to
> > broker , its
> > >> >> > the brokers that will use zookeeper which we already do for a lot
> > of
> > >> >> > other
> > >> >> > usecases + ease of development + and the ability so tokens will
> > survive
> > >> >> > even a rolling restart/cluster failure. if a majority agrees the
> > added
> > >> >> > complexity to have controller forwarding keys to all broker is
> > justified
> > >> >> > as
> > >> >> > it provides tighter security , I am fine with that option too.
> > >> >> >
> > >> >> > Given zookeeper does not support SSL we can not store master keys
> > in
> > >> >> > zookeeper as master keys will be exposed on wire. To support
> > rotation
> > >> >> > without affecting current clients is something I need to put more
> > thought
> > >> >> > in. My current proposal assumes the rotation will invalidate all
> > current
> > >> >> > tokens.
> > >> >> >
> > >> >> > I request committers to also review and post their comments so we
> > can
> > >> >> > make
> > >> >> > progress on this KIP.
> > >> >> >
> > >> >> > Thanks
> > >> >> > Parth
> > >> >> >
> > >> >> > On Tue, Apr 19, 2016 at 8:39 AM, Ashish Singh <asi...@cloudera.com
> > >
> > >> >> > wrote:
> > >> >> >
> > >> >> > > 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