On Fri, Nov 15, 2013 at 11:16:19AM +0100, Zane Bitter wrote: > On 14/11/13 19:58, Christopher Armstrong wrote: > > On 14/11/13 18:51, Randall Burt wrote: > > > > Perhaps, but I also miss important information as a legitimate > > caller as > > to whether or not my scaling action actually happened or I've been a > > little too aggressive with my curl commands. The fact that I get > > anything other than 404 (which the spec returns if its not a > > legit hook) > > means I've found *something* and can simply call it endlessly in > > a loop > > causing havoc. Perhaps the web hooks *should* be authenticated? This > > seems like a pretty large hole to me, especially if I can max > > someone's > > resources by guessing the right url. > > > > > > Web hooks MUST be authenticated. > > > > > > > >Do you mean they should have an X-Auth-Token passed? Or an X-Trust-ID? > > Maybe an X-Auth-Token, though in many cases I imagine it would be > derived from a Trust. In any event, it should be something provided > by Keystone because that is where authentication implementations > belong in OpenStack. > > >The idea was that webhooks are secret (and should generally only be > >passed around through automated systems, not with human interaction). > >This is usually how webhooks work, and it's actually how they work now > >in Heat -- even though there's a lot of posturing about signed requests > >and so forth, in the end they are literally just secret URLs that give > >you the capability to perform some operation (if you have the URL, you > >don't need anything else to execute them). I think we should simplify > >this to to just be a random revokable blob. > > This is the weakest possible form of security - the whole secret > gets passed on the wire for every request and logged in innumerable > places. There's no protection at all against replay attacks (other > than, hopefully, SSL). > > A signature, a timestamp and a nonce all seem like prudent > precautions to add.
So maybe we just use tokens and drop the whole pre-signed URL thing - ceilometer can obtain a token, and call the AS API via the normal method (i.e a call to a client lib, providing a token) The main case where tokens are inconvenient is in-instance, where we'll have to refresh them before they expire (24 hours by default), but in-instance agents won't talk to the AS API directly, so why don't we just simplify the discussion and say the AS API has to use normal token auth? Steve _______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev