18:01:46 #startmeeting 18:01:47 Meeting started Tue May 8 18:01:46 2012 UTC. The chair is heckj. Information about MeetBot at http://wiki.debian.org/MeetBot. 18:01:48 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 18:01:59 Not much on the topic list for this week 18:02:25 Next week we've got rafaduran wanting to discuss https://bugs.launchpad.net/keystone/+bug/963098 and a related blueprint that I think he's creating 18:02:27 Launchpad bug 963098 in keystone "Keystone isn't acting on consecutive failed logins" [High,Triaged] 18:02:33 #topic open discussion 18:02:50 heckj, I need some love on the serviceId review 18:02:59 the bluprint https://blueprints.launchpad.net/keystone/+spec/improve-keystone-security 18:03:11 heckj: I have a question re: keystone database support also 18:03:21 gyee: could you put a link up here for folks to review? 18:03:24 v.next api draft link- now, tomorrow, soon? 18:03:25 and a draft https://review.openstack.org/#/c/7239/ 18:03:38 https://review.openstack.org/#/c/7010/ 18:03:47 dolphm: soon - haven't made as much progress last week and weekend as I'd hoped 18:04:15 annegentle: question? 18:04:32 #link https://review.openstack.org/#/c/7010/ <-- requesting review 18:04:47 heckj: is postgresql tested at all as a backend for the catalog? I'm trying to find the bug where dolph said he fixed it, still looking 18:04:52 #link https://blueprints.launchpad.net/keystone/+spec/improve-keystone-security <-- for discussion next week 18:04:59 heckj: I wondered if it was going to be punted to openstack-common 18:05:08 annegentle: not explicitly testing postgresql 18:05:29 annegentle: https://bugs.launchpad.net/keystone/+bug/987121 ? 18:05:30 Launchpad bug 987121 in keystone "strict constraint for database table creation" [Medium,Fix committed] 18:05:37 ok, it's https://bugs.launchpad.net/keystone/+bug/885426 18:05:38 Launchpad bug 885426 in keystone "type error with postgresql" [Medium,Fix released] 18:05:53 apparently one of the CSS OSS guys tested it for the manual they just released, and said there's still a problem. 18:06:30 annegentle: tested essex-3? 18:06:50 dolphm: no, their manual documents what shipped with 12.04 18:07:03 annegentle: that bug fix isn't in the current codebase (pre-redux) 18:07:27 annegentle: they must be seeing a new bug 18:07:27 he didn't know whether to open a new bug or reopen that old one 18:07:31 ok 18:07:52 rafaduran, let me look 18:07:56 dolph - should we reset that to triaged/confirmed and hit it now? 18:08:02 dolphm: ^^ 18:08:35 heckj: that bug is unreproducable against ksl 18:09:02 Ah - 18:09:17 annegentle: if it's still an issue, let's open a new bug with as much repro info as we can against it 18:09:32 I'll have him open a new bug against keystone then. He also was unsure if it was a distro problem. 18:09:52 annegentle, I can give it a test on Fedora or RHEL if that will help 18:10:10 ayoung_:I'm sorry, bu I'm not really sure what are you asking for 18:10:13 ayoung: sure, that would help. I want to genericize the install/deploy guide for those distros too 18:10:20 rafaduran, disregard... 18:10:36 annegentle, that is the Grail, isn't it 18:11:19 we were discussing (internal IRC) the multiple ways people automate install 18:11:51 annegentle, CC me when you open the ticket 18:12:00 ayoung: you got it 18:12:46 rafaduran, for the "3 times and you are "(locked) out" issue, we were discussing whether this is a generic Keystone problem or should it just be for the Keystone Database impl 18:13:18 It seems like many people that have their own Identity Managment would get account locking from a centralized source already...ie LDAP 18:13:32 :) 18:13:49 especially AD, I had my locked the other day 18:14:11 Sorry gyy, thought i was better at hacking your account. I'll get it right next time :) 18:15:25 but keystone password policy might be a nice to have though 18:15:29 rafaduran, but regarding the general "imporve security" I suspect we should focus on reusing what has been done for HTTPD 18:15:43 as opposed to trying to bolt things on to eventlet 18:15:54 which leads to my next topic... 18:16:03 ayoung: but reporting and rate limit doesn't conflict that 18:16:17 rafaduran, agreed that reporting stands alone. 18:16:21 Not sure about rate limit 18:16:27 you might be right there. 18:16:55 There also might be something in HTTPD to perform that as well. 18:17:03 ayoung, is the HTTPD SSL stuff ready for review yet? We are looking to push the 2-way SSL back in... 18:17:19 liemmn, SSL or Client cert? 18:17:26 HTTPD SSL works 18:17:27 2-way SSL 18:17:31 client cert 18:17:43 liemmn, OK, so that Requires HTTPD 18:17:47 yep 18:18:01 and so I was asking if we can make that the one and only, or if we need to keep eventlet around? 18:18:15 heckj, ^^ is really a question for you 18:18:31 sorry - distracting. reading 18:18:46 liemmn, however, I have a paste I want to share which is the general approach 18:19:07 sure... please shoot it my way and I can take a look... thx 18:19:16 http://fpaste.org/9PLL/ 18:19:29 lots of duplicated code there from higher, but the gist is this 18:19:41 configure HTTPD to do authentication for you, 18:19:48 and then in Keystone, the rule is 18:19:58 1. Look for UserId/ Password in the message itself 18:20:04 2. Look for a token 18:20:09 3. Look for REMOTE_USER 18:20:20 REMOTE_USER means that HTTPD authenticated you already 18:20:31 ayoung: we should keep both around from an internal code point of view. 18:21:41 ayoung: we could also really use some documentation in the ReST files (doc/source) walking someone through how to configure to take advantage of the 2-way SSL and such. 18:22:09 heckj, for 2 Way SSL , I'm not there yet, but I would be happy to once I get it working. 18:22:19 ayoung, that's for authentication only right? what about token validation? 18:22:31 From the middleware perspective, there is still a need to have both 2-way SSL and normal token validation... i.e., I only allow these hosts with these signed certs to do valiidate token. 18:22:34 It is going to be slightly different for Fedora and Debian based distros due to the way that HTTPD gets set up. We already see that in Devstack 18:22:46 gyee, same general rule 18:22:55 except the user part doesn;t apply 18:23:08 so only look for admin auth token and then REMOTE_USER 18:23:16 and then confuirm that remote user has admin privs 18:24:10 heckj, yeah, lots of docs for ayoung 18:24:15 heckj, how about for a devstack install? Is it OK if we go HTTPD there? 18:25:15 ayoung: it should be an option for the devstack setup as well, but I don't see anything wrong with the idea. 18:25:35 heckj, I see Eventlet being troublesome 18:25:41 also 18:25:47 Devstack is getting pretty complex 18:25:59 and I would like to avoid putting more knobs to turn in there 18:26:08 It comes down to most people using the default options 18:26:18 except maybe for the piece they are working on. 18:26:28 So I'd like, in devstack, for httpd to be the default 18:26:36 ayoung: why do you think eventlet is a problem? 18:27:07 ayoung: that's the right place to start, but I'm not sure I agree that it *should* be default when I haven't seen it working yet. I don't doubt your work, just want to see it operational before we make it a default 18:27:17 rafaduran, 1. SSL support is spotty in Python, not just Eventlet. 2. IPv6, 3.Client Certs and other auth versions. 18:27:20 heckj, understood 18:27:26 but 18:27:35 if I am making it work as a devstack patch 18:27:43 I write it one way if it is going to be the one true approach 18:27:54 and another way if it is going to be just an option 18:28:34 rafaduran, rafaduran there are also issues in the Eventlet_>SQL code that we are seeing else where that I fear are going to bite us 18:29:00 IMHO, SSL should be an option... For someone who wants to get started quickly with Keystone, certificates is cumbersome. Make testing more cumbersome too. 18:29:12 liemmn, that is correct 18:29:26 certs are only an option if the site admin sets them up 18:29:52 the nice thing about fronting with HTTPD is that they can even use basic-auth without changing the Python side of things 18:30:06 the changes are confined to /etc/httpd/conf.d/keystone.conf 18:30:10 (on Fedora) 18:30:29 liemmn, but, if you want to do , say Kerberos (AD) you get that, too 18:31:26 yeah... reading your blog on setup howto :) 18:32:08 are we unit testing with httpd, too? 18:33:01 liemmn, good question...I would argue that if you are running a webserver, you are probably not "Unit testing" but that is neither here nor there 18:33:10 ayoung, for certificate authentication, how do you map user certificate to keystone user ID? 18:33:45 gyee, I was thinking that REMOTE_USER should be username. So it is probably the Principal in the X509 18:34:10 that configurable in your implementation? 18:34:14 gyee, I don't think we want to put the UserID into the Certificates, do you? 18:34:47 gyee, no, but Client Certs are not done or tested yet anyway. 18:34:50 user name sounds good to me 18:35:03 Iwas focusing on getting Keystone to work with Nova first. 18:35:12 I have it working with Glance. 18:35:32 I am looking at http://fpaste.org/9PLL/ 18:35:46 how does httpd translate user cert into user_ref? 18:36:16 Line 12 18:36:25 gyee, just to set expectations corectly: I just wrote but have not tested that code...it was more a "thinking along these lines" 18:36:50 self.identity_api.get_user_by_name(context=context, user_name=context['REMOTE_USER']) 18:36:58 ayoung: a user can be authenticated for a given tenant too? 18:37:08 oh ok, I'll wait for your rst doc then 18:37:15 I do think we want to test 2-way SSL with unit tests... I am a big fan of unit tests... We were doing it before; we should be able to do it now. 18:37:33 +2 18:37:35 liemmn, agreed. The question, then, is how to run HTTPD for unit tests 18:37:58 I have no answer yet, but... just something to keep in mind when it comes to configuration :) 18:39:19 I'd guess something along the lines of : "see if you can run HTTPD listening on 5000 or 35757 as the current user, reading all config info out of the git tree:" 18:40:12 liemmn, but I'd almost think that Eventlet+basic_auth would be a good first step 18:40:32 assuming that Eventlet then sets REMOTE_USER, the rest of the Python code would remain unchanged 18:43:18 The client needs to validate server cert as well... so, need HTTPD there. 18:43:24 liemmn, so Eventlet , SSL and Client certs should really be a sn upstream Eventlet feature, not anything specific to any Openstack 18:43:57 liemmn, is that really unit testing Keystone, or just that SSL is set up? 18:44:00 yeah, actually, if my memory serves me correctly, that's where I made the changes... 18:44:20 I mean, you can always run curl -k ... 18:45:00 liemmn, OK, so there should be a pretty simple way to run and test SSL in Eventlet as well as HTTP, if you can find your notes, send them to me 18:45:35 liemmn: would love to see the same ^^ if you're finding them 18:45:37 he's code were on the E3 branch I think 18:46:19 cc2330a8e1c1d55e6ae23d05ab5d09d3fd511ea7 18:46:19 before the KSL cut over 18:46:24 (digging up old mails... :) ) 18:46:39 https://review.openstack.org/#/c/1038/ 18:47:37 #link https://review.openstack.org/#/c/1038/ <-- two way SSL from prior to KSL integration 18:47:39 (that was my very first commit in Openstack... so, I f'up a lot... laugh it up :) ) 18:47:49 yeah 18:48:06 126 sslsocket = eventlet.wrap_ssl(socket, certfile=certfile, 18:48:07 127 keyfile=keyfile, 18:48:07 128 server_side=True, cert_reqs=cert_reqs, 18:48:07 129 ca_certs=ca_certs) 18:48:16 that seems to be the heart of it... 18:48:21 https://review.openstack.org/#/c/1038/9/keystone/common/wsgi.py 18:48:21 yep 18:49:12 should be a fairly small effort to get it working with eventlet 18:50:36 heckj, I keep hearing that SSL support in Python is problematic. Buy oviously Swift has been running this way for years...what am I missing? Do real world Swift deployments just run with Hardware SSL ? 18:51:11 ayoung: you should run swift with external ssl termination (in the load balancer or something like that) 18:51:18 ayoung: I'm not sure what's behind the "SSL in python is problematic" - I haven't done much with it personally to know what the issues are or have been. 18:51:55 python httplib2 does not do server cert validation 18:52:09 notmyname, doesn't that defeat the purpose of using eventlet or a similarly event driven web server? 18:52:54 ayoung: https://github.com/notmyname/ssl_eventlet_slowloris 18:53:27 heckj, IIUC it comes down to Python taking the GIL when doing the SSL, which means that a web server blocks for each request, but I am not sure if that is the whole story 18:53:34 ayoung: it's not as much a problem with eventlet as much as how python exposes the socket to eventlet. but I'd like to explore more on this (it's near the bottom of my todo list) 18:54:46 notmyname, would swift benefit from HTTPD support? 18:55:19 we can have that conversation later...times almost up for this meeting and I've waxed poetic 18:55:27 heh 18:55:30 5 minutes left 18:57:11 heckj, I've started the domain bp impl 18:57:16 anything last minute before I close this down? 18:57:22 gyee: excellent! 18:57:24 should I stash the stuff in contrib or identity? 18:57:46 in the absence in /v3.0 18:57:53 start with contrib/ - and we'll work on moving/merging when we get /v3 settled 18:57:59 cool 18:58:11 quick question... heckj, how are the v3 api comming? 18:58:23 any etherpad? 18:58:40 leimmn: way back to the begining of the meeting - didn't get the time I wanted this past week & weekend to work on it. 18:58:44 No etherpad 18:59:07 will be in google docs for feedback - etherpad is just a touch too unstructured for what I want 18:59:21 cool... please keep me and gyee in the loop.... thx 18:59:26 absolutely 18:59:32 Okay - that's it for today! 18:59:35 #endmeeting