16:00:19 #startmeeting policy 16:00:19 Meeting started Wed Jul 19 16:00:19 2017 UTC and is due to finish in 60 minutes. The chair is lbragstad. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:00:20 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 16:00:23 The meeting name has been set to 'policy' 16:00:30 ping raildo, ktychkova, rderose, htruta, hrybacki, atrmr, gagehugo, lamt, thinrichs, edmondsw, ruan, ayoung, morgan, raj_singh, johnthetubaguy, knikolla, nhelgeson 16:00:41 in case anyone is around 16:00:53 o/ 16:01:04 #link https://etherpad.openstack.org/p/keystone-policy-meeting 16:01:07 agenda ^ 16:01:07 o/ 16:01:11 o/ 16:01:14 o/ 16:01:16 * morgan lurks 16:01:31 alright - let's go ahead and get started 16:01:36 #topic open discussion 16:01:37 :) 16:01:58 we don't have anything on the agenda - which i think is fine since a lot of folks are focused on finishing up feature work 16:02:18 but we can certainly have open discussion 16:02:33 I'm seeking another +2 on https://review.openstack.org/#/c/482359/ 16:03:30 pretty bad bug we introduced in pike with our policy changes 16:03:55 yeah - we should get that into pike for sure 16:04:01 (no release note needed) 16:04:14 right... it worked before, and it will work again once we get this change merged 16:05:18 something else i wanted to run by the group before I start working on it 16:05:23 #link https://review.openstack.org/#/c/464763/ 16:05:30 ^ so that's the specification for global roles 16:05:38 which i have a wip implementation up for 16:06:11 and this question is an implementation detail, but how do we want to denote global scope in the request for a token? 16:06:15 anyone have ideas there? 16:07:09 cc morgan ^ 16:07:11 "scope": {"global": True} ? 16:07:24 hm 16:07:30 i don't know if we need to do that 16:07:34 edmondsw: yeah - that's was samueldmq said too https://review.openstack.org/#/c/464763/15/specs/keystone/backlog/global-roles.rst 16:07:39 but i'm fine with it 16:07:50 morgan why wouldn't we need to? 16:07:52 do we explicitly say we will always have a scope block? 16:07:59 if we don't, we could just omit the scope block 16:08:11 morgan no, can't do that... there is a difference between globally-scoped and unscoped 16:08:13 or empty scope = global 16:08:26 no roles = unscoped 16:08:39 ? 16:08:44 no global roles == unscoped? 16:08:46 you don't specify roles on a token request 16:08:58 wait for in the requesT? 16:09:03 oh wait i was thinking in the response 16:09:14 morgan: yeah the request 16:09:23 sure we can do global = true 16:09:33 not a huge fan of it, but i can 16:09:37 't think of a better way 16:09:42 same here 16:09:44 yeah - i couldn't really either 16:09:49 and samueldmq said the same thing 16:10:07 it's also pretty consistent with scoping to a domain or project 16:10:15 hm. 16:10:27 i don't like it needing to be explicitly "true" 16:10:47 morgan: would you prefer "scope": "global" ? 16:10:49 what happens if you scope: {project: xxxxx, global: true} 16:10:51 "scope": {"type": "global"} ? 16:10:58 edmondsw: that would be better 16:11:04 morgan: i would say that is a 4XX 16:11:12 lbragstad +1 16:11:23 actually that more accurately dictates what i want to implement in a more generic auth route 16:11:24 that'd be like scoping to a project and a domain at the same time 16:11:28 s/dictates/mirrors 16:11:52 lbragstad: ^ what edmondsw suggested looks way better 16:11:56 type: "global" 16:12:09 morgan: ok - so how would we convert that to support projects and domain? 16:12:15 you'd have to supply an ID with it 16:12:25 we could support type: project, id: XXXX 16:12:26 lbragstad I'm not following 16:12:40 just leave projects and domains as they are 16:12:41 but we wouldn't change anything for project/domain scoping today 16:12:42 morgan: yeah - project would require another field in the request for the id 16:12:51 i.e., type isn't required for them 16:12:58 edmondsw: ++ 16:12:59 right 16:13:14 if we do an iteration on auth to move it to /auth (See backlog) we can make type required there 16:13:17 it would be a little weird to have the inconsistency - but i do see the reason for it 16:13:17 oh, are we talking about the response now? 16:13:30 i'm still focused on the request 16:13:34 lbragstad: we could support both mechanisms 16:13:39 and i'd just support it 16:13:43 so yeah, no changes to project or domain-scoped requests, I think 16:13:46 type: "project", id: XXX 16:13:49 would be trivial to add it 16:13:53 but not needed 16:14:00 * lbragstad grabs an etherpad 16:14:08 we would continue to support "project: id-xxxxx" 16:14:20 #link https://etherpad.openstack.org/p/keystone-global-roles-scratchpaper 16:14:26 if you did want to support type: "project" on /auth, you'd still need a project: {} block, not just an id, so it could be a name and domain name, etc. 16:14:47 as it is today 16:16:38 lbragstad: so, i think we always accept type 16:16:45 but it's optional for project/domain, 16:16:50 ? 16:16:53 *shrug* 16:16:56 yep 16:17:30 ok - so the top three are already implemented 16:17:39 and we have to support those 16:18:13 really? we support "scoped": "unscoped"?! 16:18:16 *sigh* 16:18:18 yeah.... 16:18:19 wow that is terrible 16:18:21 ugh 16:18:25 what the hell. 16:18:30 I thought unscoped was just not specifying the scope block 16:18:32 when did that creep in? 16:18:38 a long time ago 16:18:43 i spent a day trying to figure it out 16:18:50 can you also just not specify the scope block? 16:18:53 edmondsw: right 16:19:00 ok, I didn't imagine that, at least 16:19:01 ok so we could do "scope": "global" 16:19:04 edmondsw: but not if the user has a default project and a role on that default project 16:19:06 *sobs" 16:19:16 oh, default projects... ugh... 16:19:23 that's a v2 thing, right? So we can get rid of it soon? 16:19:25 yeah default projects should have died 16:19:26 no 16:19:28 it's also in v3 16:19:30 boo 16:19:35 well - kind of 16:19:39 yeah.. lets just... pretend it isn't 16:19:40 for now 16:19:41 it's in v3 enough to be a pain 16:19:44 lol 16:19:53 it's kinda there but not really... 16:20:01 it certainly wasn't a clean break 16:20:21 keystone v4! with new auth! ;) 16:20:25 edmondsw: actually 16:20:31 v4, no auth in /v4 16:20:33 let's do it 16:20:43 morgan that was just to get your reaction :P 16:20:51 and i'm being serious 16:20:54 edmondsw: we're already sold on it 16:21:04 yeah, I know 16:21:28 morgan: i have a post it on my monitor to try and write up what we discussed in atlanta 16:21:36 yeah 16:21:36 I guess default projects aren't really part of the auth API, so they could go away in v4? 16:22:06 edmondsw: no, they could be removed in a new auth version 16:22:09 * edmondsw thinks this is more like a keystone meeting than a policy meeting 16:22:12 anyway 16:22:21 there is't much in policy atm to talk about 16:22:22 anyway 16:22:25 since it's a major revision - it could go away 16:22:48 yeah - this is helpful, i mostly wanted to try and figure out what it would look like for requesting a global token 16:23:15 so lets *not* do scope: global 16:23:23 lets do scope { type: global } 16:23:28 it is *more* consistent 16:23:57 if we went the type route eventually - we would need to port the existing project and domain scoping to it 16:24:06 trivial to do so 16:24:20 type supersedes non-specified project block 16:24:36 if we have "scope": "unscoped" should we just have "scope": "global" instead of "scope": {"type": "global"} ? 16:24:49 allowing scope { type: project, project: {id: xxx}, domain: {id: yyy}} 16:25:03 and we would support type: unscoped 16:25:19 oh fff. 16:25:23 this is not discoverable 16:25:29 *sigh* 16:25:49 edmondsw: i would prefer to add support for type: unscoped 16:25:57 than more non-dict forms of the scope-key 16:25:58 morgan fine by me 16:26:03 yeah 16:26:14 * morgan notes we need to make this discoverable 16:26:21 but that is a separate issue. 16:26:49 morgan now you have me concerned about how we make this discoverable... 16:26:49 morgan: which part specifically isn't discoverable? 16:27:05 lbragstad that keystone supports global scoping 16:27:26 ^^ 16:27:32 bah 16:27:40 we need a GET /auth/scopes 16:27:42 endpoint 16:27:58 * morgan grabs laptop to wire up /auth as soon as tests for new-filesystem catalog are done 16:28:48 lbragstad: /auth/ having info for this is probably a good place to start. 16:29:36 the first step for making this discoverable would be allowing keystone to answer "what scopes do you support?" 16:29:37 right? 16:29:42 yeah 16:29:52 and i don't want to add that to /v3/auth if that makes sense 16:30:26 i mean we can... but i think /v3/auth doesn't actually do anything interesting with a GET right now 16:30:30 and no token 16:30:37 so, i don't want to change that behavior 16:31:52 yeah - that's fine 16:32:03 this feels like something we could do with versionless auth 16:32:08 or at least start fresh with 16:32:11 yeah 16:32:13 morgan: https://github.com/openstack/keystone/blob/025e844fc485c23be1de033473f3cadd7486b642/keystone/auth/core.py#L231-L244 16:32:28 yeah. 16:33:23 morgan: some of the `unscoped` bits bled into https://github.com/openstack/keystone/blob/025e844fc485c23be1de033473f3cadd7486b642/keystone/auth/schema.py#L56-L61 16:34:04 yep 16:34:32 but - that issues pre-existed our jsonschema validation 16:34:36 which was done in 2014 16:34:43 it's been there a while 16:34:45 yah 16:34:51 anyway 16:35:47 ok - so in summary 16:36:09 it sounds like if we do global roles and want to scope globally 16:36:21 we can do so with "scope": {"type": "global"} 16:36:45 which would be inconsistent with the rest of how scope is done 16:36:55 but it would be consistent if/when we do versionless auth 16:38:45 or - we could do "scope": {"global": "true"} to be more consistent with project and domain scoping 16:40:16 sure. but i don't think a different key matters 16:40:18 in this case 16:40:27 most consistent with current would be "scope": "global" 16:40:31 as much as i hate it 16:40:46 ok - so 16:40:58 1.) "scope": {"type": "global"} 16:41:01 and that is just because of prior art for unscoped 16:41:12 2.) "scope": {"global": "true"} 16:41:17 3.) "scope": "global" 16:41:38 3 would be the most consistent given the warts with "unscoped" 16:41:45 4.) "scope": {"global": {"yes_really": True}} 16:42:02 ++ 16:42:09 correct, 3 is most consistent with v3 auth 16:42:20 2. is most consistent with other "scoped" operations 16:42:27 2 isn't as bad and still offers consistency with project and domain scoping 16:42:40 1 is the best overall option, but is most inconsistent with v3 auth 16:42:41 but the "global": "true" part doesn't really make much sense 16:43:08 so, i vote either 1 or 3 16:43:13 i don't like 2 at all 16:43:19 ok 16:43:26 * lbragstad votes for #4 16:43:44 i can detail both options in the spec 16:43:51 wfm 16:44:17 cool - i think that's all I had for open discussion 16:44:22 anyone have anything else? 16:45:55 alright - looks like we'll get some time back 16:45:57 thanks all 16:45:58 #endmeeting