18:02:21 #startmeeting Keystone 18:02:23 Meeting started Tue Dec 3 18:02:21 2013 UTC and is due to finish in 60 minutes. The chair is ayoung. Information about MeetBot at http://wiki.debian.org/MeetBot. 18:02:24 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 18:02:26 The meeting name has been set to 'keystone' 18:02:35 Oyez Oyez.... 18:02:38 #ayoung beat me to typing it. 18:02:54 https://wiki.openstack.org/wiki/Meetings/KeystoneMeeting#Weekly_Keystone_team_meeting 18:03:05 morganfainberg really wanted to be king for the day 18:03:14 jamielennox, i'd just delegate it. 18:03:22 #topic Tempest change for assignments-doesn't-check-identity 18:03:25 morganfainberg: that's the point of being king 18:03:34 The floor recognized bknudson 18:03:36 ok, I put this one on there. 18:03:38 recognizes 18:03:52 so henrynash (not here) had commented in a previous commit 18:04:07 that we shouldn't be checking against identity API from assignments 18:04:19 e.g., grant role or whatever shouldn't check that the user exists. 18:04:33 which makes some sense especially if using LDAP... 18:04:38 bknudson, agreed. In the case of Federation, we will not be able to do active lookups 18:04:39 user could go away right after you check it. 18:04:49 so I made that change in keystone 18:04:53 but it fails tempest 18:05:08 bknudson, so 3-way tempest change? 18:05:10 because they added a test that if user doesn't exist then should fail 18:05:14 bknudson, are the tempest tests too restrictive? 18:05:19 bknudson, how are we going to cleanup the data 18:05:22 ayoung: that's kind of my question 18:05:29 OK, lets put in a change request to drop that test from tempest 18:05:34 the identity spec doesn't say that it fails specifically 18:05:34 I would imagine roles assignment will need to be cleanup at some point 18:05:42 just like expired tokens 18:05:46 It should not fail 18:05:57 i would agree, it shouldn't fail 18:05:58 its just a rule that will never be triggered 18:06:03 for the tempest change, I'll need a blueprint, and not sure if we had one. 18:06:20 it's probably the federation one 18:06:20 bknudson, use the split assignment/identity one? 18:06:23 bknudson, can't we use the Keystone blueprint? File it under Federation 18:06:25 bknudson, or federation 18:06:35 split id is better 18:06:46 ok, I'll point to the split ID one. 18:06:57 I think that's all I needed. 18:07:12 #topic REMOTE_USER auth v2 and v3 mismatch 18:07:13 My change to the tempest test was to accept either NotFound or success. 18:07:16 they didn't like that. 18:07:21 bknudson, also, iirc tempest likes you to @skip the test, then change keystone, then unskip/fix test 18:07:33 bknudson, at least that was needed for the token 403 vs 404 one 18:07:39 morganfainberg, in this case, just drop the test, or the check 18:07:52 ayoung, right, i meant if we were keeping the test. 18:08:07 It seems "correct" to me to actually accept either 404 or 200 in this case... 18:08:24 since identity api doesn't really say what it does 18:08:42 Alright, moving on to REMOTE USER 18:08:47 maybe you had a chance to look at this 18:08:56 but v2 doesn't use plugin so does remote auth its way 18:09:03 v3 uses plugins so does remote auth its way 18:09:17 so you can easily put yourself in a situation where v2 remote auth works and v3 doesn't 18:09:21 this is the user w/ @ in the name? 18:09:22 or vice-versa 18:09:28 bknudson, so you want to make V2 honor the v3 plugins? 18:09:29 and other... oddities 18:09:39 yes, the problem is typically handling @ in the name 18:09:52 since that's what our supplied external auth plugins do differently 18:10:12 ayoung: I think it makes sense for v2 to use whatever plugin is used for v3... 18:10:18 bknudson, no reason the v2 token controller can't call the v3 plugins. 18:10:24 but I haven't looked into if there's any reason it wouldn't work. 18:10:30 problem solved. 18:10:35 Next topic? 18:10:36 ayoung, as long as you wedge in issue_v2_token. 18:10:40 doesn't that change how v2 auth works? 18:10:40 ayoung, but not a big deal 18:10:43 morganfainberg, nah, 18:10:53 plugin just does authentication 18:11:01 jamielennox: it doesn't have to change how v2 auth works if you use the "correct" plugin? 18:11:02 it doesn't get into the token creation code 18:11:11 ayoung, doesn't it also issue the token? erm call the token issuancE? 18:11:17 ayoung, i might be thjinking something else 18:11:26 but, I haven't looked into it 18:11:26 jamielennox, it would be a backwards compatible change 18:11:32 morganfainberg, this is auth plugins, not token provider 18:11:40 ayoung, hm. ok. 18:11:51 bknudson: so you want to expose the plugins as configurable to v2 as well - default to the old form? 18:11:56 there's already work in progress to clean up auth plugins, so I think we let that progress and then can consider using plugin for v2 18:12:14 V2 can call https://github.com/openstack/keystone/blob/master/keystone/auth/plugins/external.py if it REMOTE_USER gets triggered 18:12:28 jamielennox: I would guess that for backwards compat they'll have to be separately configurable. 18:12:34 from here...https://github.com/openstack/keystone/blob/master/keystone/token/controllers.py#L281 18:13:01 bknudson, i think there is still a fix needed in the V3 plugin... inconsistent behavior (as we discussed before) but it's not as bad as v2 vs v3 at the moment 18:13:03 bknudson: yea, because the default needs to be different between versions - that works for me 18:13:22 morganfainberg, we can always make more plugins 18:13:28 ayoung, right. 18:13:37 we good to move on? 18:13:43 yes, thanks. 18:13:53 is there a reason we can't just use the v3 one? 18:13:54 oh, one more q 18:14:00 backporting the fix... worth it? 18:14:14 bknudson, lets see how invasive it is, but I suspect no 18:14:14 because as it stands if using REMOTE_AUTH you would only be able to use v2 or v3 at the moment anyway 18:14:27 apparently we made backwards-incompat change in H 18:14:37 and V2 vs V3 is broken in H 18:14:47 maybe we just say that you have to write your own external auth plugin. 18:14:55 (for H) 18:15:02 since we're not going to backport 18:15:04 bknudson, we could provide one out of tree 18:15:18 but..if we do that, we should just put it in a bug fix 18:16:05 good to move on? 18:16:09 I think it would be hard to justify the backport 18:16:13 let's move on. 18:16:20 #topic reviews for icehouse blueprints 18:16:30 #topic reviews for icehouse blueprints: API Version Discover 18:16:41 #link https://review.openstack.org/#/c/38414 18:16:52 Merged 18:17:05 #topic reviews for icehouse blueprints: Add federation API 18:17:16 #link https://review.openstack.org/#/c/51980 18:17:34 added some comments on patch #12 18:17:40 There is a lot in those three docs. 18:17:42 woohoo! 18:18:01 *alot* 18:18:15 i will upload a new version of the spec soon 18:18:15 Might I suggest that we only -1 something for structural changes, not verbage or editing, to get a firm contract? 18:18:24 ayoung: i should upload some CRUD for IDPs on gerrit tomorrow (my timezone) 18:18:30 stevemar, any thought on splitting that review? 18:18:44 or do you want all three to live/die together? 18:18:45 ayoung, it doesn't bother me that it's all in one 18:18:54 OK 18:18:58 +1 ayoung 18:19:10 stevemar, you feel like you are making progress? Ice2 will be here before you know it 18:19:15 I think splitting wd work better 18:19:23 +1 atiwari 18:19:35 atiwari: FWIW, i think so too 18:19:56 ayoung, too much content in one review 18:19:56 marekd is submitting a patch to keystone for the idp changes, (based on the current spec state) 18:20:14 it could almost be broken up into commit for each blueprint... 18:20:18 lets prioritze the mapping one. That stands alone, and will be useful even if we don't get the whole Federation BP iplemented by I2. 18:20:47 ayoung, yeah, i'm starting to actively work on the impl for that one now, i think the current api spec is close 18:21:01 chadwicks folk like it, so thats a big plus 18:21:06 Federation and IdP can go into I3. They would be disabled by default, but that is probably OK for people that want Federation support to explicitly enable it. 18:21:16 ayoung, ++ i think that is fine 18:21:32 yep, of course 18:21:47 ayoung, isn't there a long running Keystone policy that API changes need to be done by I2? 18:21:51 ayoung, for J we can enable it by default. actually kindof like the new feature, disabled by default, next cycle enable if desired / fix and enable 18:21:52 #action stevemar to split API reviews into Mapping and Federation reviews 18:21:57 okay, i can break up the api spec into multiple reviews 18:21:59 morganfainberg, yep 18:22:24 gyee, yes, but the SPEC will be done and this shouldn't have any api incompatible changes (extension) 18:22:51 gyee (or just disabled even if not an extension) 18:22:51 #topic reviews for icehouse blueprints: Revocation Events 18:23:04 #link https://review.openstack.org/#/c/59546 18:23:12 This one is mine. Please beat it up accordingly 18:23:52 this needs to go in by I2, and I suspect we will also want to add config options to disable some of the features in the current token infrastructure that are providing pain: 18:24:02 ayoung, that is looking good (based upon convos at the summit) 18:24:06 namely, the need to explicitly enumerate tokens 18:24:19 morganfainberg, that's what scares me 18:24:28 ayoung, yes, please lets make that die a horrible death. enumerating tokens == bad 18:25:12 morganfainberg, so I want to make it optional, and make the new revocation architecture optional as well. If someone doesn't want revocations, that should be OK. 18:25:13 ayoung, the revocation events are signed too right? 18:25:23 gyee, I wasn' 18:25:30 t doing that as a first approximation 18:25:31 ayoung, correct. eventually events should be the way to go. 18:25:42 but we could add on a signature envelope. 18:25:47 I mean we need to CMS envelope them, just like tokens 18:25:58 ayoung, we should sign the envelope, we do it already for TRL. 18:26:03 gyee, in theory, we could make Keystone sign anything it publishes....it would be a content wrappper 18:26:11 Accpest:JSON+CMS 18:26:14 or summat 18:26:22 Accpets 18:26:33 #action ayoung to look into signing revocation events 18:26:58 #link any thoughts on https://blueprints.launchpad.net/keystone/+spec/service-scoped-role-definition 18:27:00 ayoung, and i'll (hopefully) have the last bugs worked out on key-value-store token stuff so you can base anything you need on that. 18:27:08 ayoung: i actually like the Accepts: idea - i'm not sure if anyone would use it though 18:27:21 data model will be scope-type = (user|project|domain) and then scope Id 18:27:49 jamielennox, I'd like to see if there is a standard out there we could use for signing...but yeah, it seesm like it should be an "add on" for any API 18:27:50 now resource scoped as per Devid Chadwick 18:28:03 atiwari, hold on 18:28:24 #topic reviews for icehouse blueprints: KDS 18:28:36 #link https://review.openstack.org/#/c/59600 18:28:47 this is the first of a long chain of jamielennox 's pathces for KDS 18:29:10 the Nova team especially is waiting for this 18:29:11 this is still fairly raw - but because I am introducing a whole new framework i'm assuming there will be some beating on the architecture 18:29:29 so the first couple of reviews can be done without understanding the crypto 18:29:50 jamielennox, ayoung , i just did an oslo sync and ended up with a far different oslo result 18:29:54 jamielennox, you bhave unit tests in the latter reviews that should server as examples 18:29:58 are we missing things in the openstack-common.conf? 18:29:59 seems like we should get the KDS spec first 18:30:12 bknudson, in parallel 18:30:21 and i'm not sure how much in oslo-incubator changed since that review was posted. 18:30:25 we can get the infrastructure for KDS in place while we finalize the spec 18:30:27 morganfainberg: oh - mine was a few days ago 18:30:33 maybe it's changed 18:30:49 i'll update the patch 18:30:49 #action do updated oslo sync 18:30:55 and you're missing the py3kcompat stuff from the update.py run etc 18:31:11 not sure if this will apply in time, but I think oslo/nova teams were working on a consistency document for syncs from oslo 18:31:26 jamielennox, http://pastebin.com/ZYKEgi0y is what i got. 18:31:26 morganfainberg: has that changed in that time? i did a fairly standard oslo update 18:31:36 morganfainberg: and some discussion about reworking update.py 18:31:36 lbragstad, we will have to sync again. THis is just geting the deps in that KDS needs 18:31:58 jamielennox i just ran with the openstack-common.conf as a config and it was missing files you had in yours, just an FYI 18:32:14 ayoung: right, yeah that makes sense. Just a heads up in case any of that work has an impact on this 18:32:21 lbragstad, nod. 18:32:32 it was something that was discussed in the cross project meeting last week I htin k 18:32:34 think* 18:32:41 #topic Icehouse 1 18:32:51 #link https://launchpad.net/keystone/+milestone/icehouse-1 18:32:52 i really should start attending the cross-project meetings 18:33:05 One more note on KDS. I'm taking a pass through the spec today. 18:33:07 All BPs implemented 18:33:12 w00t! 18:33:13 nkinder, sounds good 18:33:21 nkinder: thanks 18:33:51 oooh, i need to put a series of idenitty proxy tests in still *doh* 18:33:53 nkinder, as I said, we are going to try and get in infrastructure in place in parallel, so we don't need to wait for a finalized spec in order to get jamielennox moving 18:33:54 * morganfainberg scribbles a todo 18:34:20 I posted several comments on the KDS spec on path set 15 ... not sure if those were rejected or what. 18:34:40 #topic service or resource scoped role definition 18:34:47 atiwari, you;re up 18:34:50 great 18:35:13 so, are we cool with Davis's thoughts 18:35:16 #link https://blueprints.launchpad.net/keystone/+spec/service-scoped-role-definition 18:35:20 resource scoped role-def 18:35:25 ? 18:35:28 atiwari, looking 18:35:41 bknudson: patch set 16 addresses many of those 18:35:43 #link https://etherpad.openstack.org/p/service-scoped-role-definition 18:36:13 ok, I'll go through and make the same comments again if it wasn't addressed. 18:36:13 something like link: http://paste.openstack.org/show/54377/ 18:36:43 atiwari, where is the active portion of that document 18:36:50 the etherpad 18:36:54 yes 18:37:22 atiwari, where is the active portion of the etherpad that has David's comments? 18:37:24 link : https://etherpad.openstack.org/p/service-scoped-role-definition line 90 to 107 18:38:22 atiwari, there is a misconnect 18:38:24 disconnect 18:38:26 look at link: http://paste.openstack.org/show/54379/ 18:38:39 Domains and Services are resources that Keystone knows about. Files are not 18:39:07 I think it is for future extension 18:39:24 ayoung, +1 18:39:46 but that approach is workable 18:40:27 so lets ignore Files etc for the moment. THe question you and I have been arguing is "do we scope a role definition to a service, or do we make only of the existing scoping mechanisms" 18:40:40 does that sum it up? 18:41:01 yes 18:41:17 You've been saying "scope a role definition to a project." I'e pushed back on that. 18:41:19 I've 18:41:29 so..here is my thinking, to lay it out for the rest of the team: 18:41:33 and in my opinion scoping to service is need to address my use case 18:41:43 and the service scoped token BP 18:41:51 link:https://blueprints.launchpad.net/keystone/+spec/service-scoped-tokens 18:42:07 So I see Service scoping as a shortsighted limitation. THere are at least two things it fails to address: 18:42:22 1. Scope a role to multiple endpoints for a service (but not all) 18:42:31 2. Scoped a role to multiple services (but not all) 18:42:46 Role defintions are, currently, a cross cutting concern 18:42:55 ayoung, that is why David'd proposal is good for both 18:43:06 a role is on a project or domain, and is equally applicable across all services 18:43:21 atiwari, has a requirement to scope a role definition to a specific service 18:43:26 ayoung, I am not saying no but it role name which is cross cutting 18:43:40 role-def entity can be separate for all service 18:43:47 so David's scope and my Namespaceing are solving the same proble, 18:43:49 m 18:44:07 ayoung, no 18:44:14 atiwari, hold on 18:44:19 I am truing to explain to the team... 18:44:43 ok 18:45:08 It is a question of Namespacing a role definitin, and then proving access rules for who can modify a role defintion. To me, this is separate from what the role gets assigned to 18:45:32 The goal is to be able to distinguish betwee "admin" for "keystone" and "admin" for "glance" 18:45:50 that, in the existing approach, is not really covered by role assignments 18:46:02 it could be handled by using projects, however 18:46:21 for example, we could make a project (under the default or admin domain) called Keystone, and another one called glance 18:46:41 then, to do administrative tasks on glance, you would need the admin role on the glance procet. 18:46:50 That is an implicit mapping of role to service 18:47:06 atiwari, 's proposals so far have been around making it an explicit link 18:47:23 have a role called glance-admin 18:47:28 so instead of a user having a role on project, they would have a role on a sevice 18:47:37 bknudson, that is basically namespacing 18:47:45 ayoung: (when you're finished) are these exclusive? My immediate thought is that when have a role on a project you only get that role in the token if you scope it to the project - if as you say we have a role on a service wouldn't we need to scope the token to a service to make that work 18:48:17 jamielennox, let me address bknudson first, and then I'll come back to that 18:48:22 ayoung: +1, then the service can just define a policy rule to control access 18:48:36 ayoung: That is essentially the interim solution I've been working on for Heat 18:48:41 bknudson, so he wants the glance admin to be able to define multiple roles, and do so independantly of what other people are creating and managing 18:48:44 so somebody could do this already with roles and policy.json updates ? 18:48:57 ayoung, role assignment must be abstracted from service (or resource) for which assignment is done 18:48:57 basically, the ability to delegate to other users the ability to create role definitions 18:49:20 bknudson, the assignment side can be done, but not the creation 18:49:28 creation of new role defs in a delegated manner is new 18:49:32 and, I think, innovative 18:49:46 the question, then, is how to decide "who can create a new role" 18:50:08 what if we put roles in domains? 18:50:13 bknudson, or projects 18:50:17 bknudson, that was my thought 18:50:43 domain-owned roles? 18:50:47 then, a user with the role "roleadmin" on the "glance" project can manage the set of roles for the "glance" proejct, which is mapped to the "glance" service 18:50:53 are they namespaced to the project? 18:51:00 bknudson, that is my proposal 18:51:38 bknudson, so glance would get a top level role "glance" 18:51:50 bknudson: would they need to be or is it just something we need to specify in policy? 18:51:51 that would be created by superadmin, and assigned to the glance proejct 18:52:25 jamielennox: I'm just wondering if someone creates "role1" in "glance" can someone else create "role1" in "cinder" 18:52:26 this would be immutable, but "roleadmin"s in the "glance" proejct" could create roles underneath it 18:52:46 namespace or role name should not be service name 18:52:47 and is "role1" in "glance" the same as "role1" in "cinder" or is it different? 18:52:48 bknudson, they would get namespaced "glance":"admin" adn "cinder":"admin" 18:52:59 that is tight coupling with resource name 18:53:03 atiwari, I would replace "should not" with "does not have to be" 18:53:13 bknudson: yea - i got that, but is it something we need to mangle the role name of can we just say in the policy file "role1" in "cinder" somehow 18:53:26 atiwari, I would suggest it as documentation. 18:53:54 one other thing: role Ids would be immutable, but role names would not. 18:53:58 ayoung, at the same time nested role-def are confusing and hard to implement 18:54:03 my view 18:54:41 ayoung, only problem is policy acts on role names, not IDs 18:54:49 atiwari, so, you could do something like this: 18:54:58 don't believe middleware set the role IDs either 18:55:00 ayoung, I am advocation name space should be made of something immutable 18:55:05 all the standard Openstack services are put into one of three projects: 18:55:10 like system generated id 18:55:14 ayoung: agree with gyee - renaming roles will be a problem 18:55:17 we would need to be careful that a scoped role is not named the same as a normal (unscoped) role to avoid ambiguity in the policy files. 18:55:18 os-id: (keystone, KDS) 18:55:29 os_core (Nova, glance, swift) 18:55:37 os-apps (Marconi etc) 18:56:01 and you could do admin on multiple services based on the role a user has in that project, as opposed to specific to the service 18:56:19 nkinder, so..we discussed reserving a separator 18:56:20 nkinder: with the way that policy is written now, but can we change it so that we can specify "cinder:role1" in policy which is role1 in cinder without having to namespace them 18:56:27 : or \ or -> or something 18:56:31 to indicate nesting 18:56:33 nkinder, we'll need role filtering based on scope 18:56:43 ayoung, that is not a workble because we have 1 to 1 with service and admin 18:56:51 if the policy file has to specify the namespace, that works fine 18:57:00 i.e. nova only interested in nova roles 18:57:05 atiwari, 1 to 1 is the degenerate case 18:57:08 gyee +1 18:57:16 that's basically what atiwari is trying to address 18:57:19 no it is not 18:57:23 ayoung: so i'm comfotable with roles belonging to a project or a domain 18:57:47 if nova manage his role and and swift manage his 18:57:50 ok, so nova would only care about "nova:" scoped roles, but doesn't it care about non-scoped roles too? 18:57:52 if we are going to let user's add roles it's out only choice 18:57:52 we already use domains for namespacing, so that seemed like the more natural fit 18:57:55 what is the problem 18:58:05 nkinder, i think that depends on the policy.json 18:58:10 is if a user has a role on the glance service/project, and sends a token with that role assignment in it to the nova service, nova will ignore it. 18:58:12 and keystone admin can manage all 18:58:15 if needed 18:58:22 nkinder, so deployer action. not implementation action 18:58:25 nkinder, "care about" only for admin operations 18:58:38 2 minutes remaining 18:59:46 So my take :services are not containers, and should not become containers. Services will not own role definitions directly, but rather will be paired with a project to manage the role definitions. 18:59:49 so all I am trying to get is Nova/ Swift role-def is managed by nova/swift admin of keystone admin 19:00:03 we should just be careful about avoiding ambiguity to prevent one from accidentally granting access when they don't intend to. 19:00:24 ayoung, that is why we should look for David's proposal 19:00:42 Times up 19:00:46 which is not tight linking 19:00:48 #endmeeting