16:00:11 #startmeeting keystone 16:00:12 Meeting started Tue Oct 2 16:00:11 2018 UTC and is due to finish in 60 minutes. The chair is cmurphy. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:00:13 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 16:00:16 The meeting name has been set to 'keystone' 16:00:23 o/ 16:00:26 o/ 16:00:26 #link https://etherpad.openstack.org/p/keystone-weekly-meeting agenda 16:00:46 lbragstad is starting his 18-year indentured servitute so i am standing in 16:01:06 please add things to the agenda 16:01:17 o/ 16:02:50 #topic Outreachy project submissions 16:02:58 #link https://etherpad.openstack.org/p/keystone-outreachy-proposals keystone outreachy proposals 16:03:20 I started an etherpad to draft outreachy project submissions, it's a little more structured than the brainstorming etherpad 16:03:39 o/ 16:03:59 there's one draft there, feel free to give me feedback on it 16:04:09 and placeholders for kmalloc's ideas 16:04:24 and if you plan to propose other projects feel free to add them there 16:04:55 any thoughts on that topic? 16:05:47 What is the time frame for submissions? 16:06:07 ayoung: deadline is Oct 16 I think 16:06:29 but they start accepting them and letting applicants apply for them before that iirc so it's good to get them in asap 16:06:33 i like the tasks in there 16:07:37 ayoung: interesting, would be good to have a spec for that idea before submitting it as a project i think 16:07:39 heh "REALLY motivated" 16:08:20 cmurphy, I'll work on it 16:08:27 okay thanks ayoung 16:08:46 we've discussed it a bunch, so I think we should be able to come up with something clear fairly quickly on the keystone side 16:09:11 client might take more work, but that would probably be follow on 16:10:20 okay, let's move on, we can come back to this in open discussion if we like 16:10:33 #topic Application credentials fine grained access control spec 16:10:39 #link http://specs.openstack.org/openstack/keystone-specs/specs/keystone/stein/capabilities-app-creds.html spec 16:10:55 Yeah, that one... 16:11:01 so jgrassler has let me know that he has a bit too much on his plate to make this feasible for him to accomplish 16:11:13 Outreachy! 16:11:31 :) i worry this is a little too involved for an outreachy project 16:11:38 Heh. You Think? 16:11:41 I wouldn't have phrased it quite so diplomatically ("I fear I have to flake out on this"), but yes, that's the gist of it. 16:11:52 i wanted to ask if anyone was clamoring for a new project or would want to split up the work with me 16:12:03 cmurphy, I'll help 16:12:06 ayoung: yeah...the thought had crossed my mind, too during the previous agenda item :-) 16:12:20 ayoung: awesome, thanks 16:12:22 the fine grained stuff was kindof something I wanted 16:12:38 also i wanted to thanks jgrassler for getting the spec in shape, that was no small effort 16:13:08 cmurphy, should I update this spec to support it: https://review.openstack.org/#/c/456974/ 16:13:14 Role check on body key 16:13:26 Thanks :-) I'd meant to write the code at some stage, though... 16:13:32 that was originally for the policy-in-rbac, 16:13:41 ayoung: i'd rather we stick to the spec we agreed to on this iteration 16:14:11 cmurphy, agreed. I meant as a mitigation for things that spec couldn't cover, I could rewrite this spec to be "here's how we do that in the future" 16:14:42 things like the actions api in nova that might not map perfectly to URL+Verb along 16:14:43 alone 16:15:35 Or are we confident we can get away without the body checks. I'm ok deferring it 16:16:25 i think this iteration doesn't drastically need it because we're still doing the policy checks as well which cover the different policies for different bodies 16:16:44 ++ 16:17:06 anyways, thanks jgrassler and ayoung 16:17:09 I'll keep it in mind. Anyway, I can tackley the SQL and API changes 16:17:19 ++ 16:17:27 #topic Shared-Nothing Keystone for Multisite 16:17:34 ayoung: i'm guessing this is you 16:17:34 Is App Creds Flaskified yet? 16:17:40 not yet 16:18:00 OK, so SHared nothing is another way to say "different databases" 16:18:19 i.e. we put a keystone server at a region, and it handles only requests for that reqion 16:18:52 and I have a couple reviews outstanding in support of this approach. I'd really appreciate getting any battles about them out of the way soonish 16:19:23 I have a spec, too, that I am resurrecting, based on the Federated ID changes, that should help multis-site 16:19:51 basically, the Fed Query APIs let a user ask "what would Keystone do about this REMOTE_USER/REMOTE_GROUPS set of variables 16:20:15 it will support pre-population of values, and it will support using the Keystone data from an Application as well 16:20:32 i.e. Identity as a Service? 16:20:38 or something like that 16:20:53 So, please look at them, and tell me what you don't like 16:20:57 ayoung: we have pushed back really hard on allowing user-set IDs and I don't fully understand the reasoning this is needed now, why was the predictable ID not sufficient? 16:21:03 i think kmalloc had strong objections too 16:21:24 cmurphy, user-set IDs for Domain is to give us a top-level division between regions 16:21:35 it is expected that only the domain_id will be user-set, 16:21:46 not the userids, or project ids 16:21:58 so, I am kindof sticking with kmalloc 's reasoning on the majority 16:22:16 domains are a little different, in that the domain_id is used to generate the user-id in LDAP and, with the other path, Federation 16:23:16 it also lets us say "this domain is at this regions, that domain is at that region" in a central server, and have the rest of the data be local to the regional keystone servers 16:23:34 kmalloc, has since given his approval, at least in IRC, to this approach 16:24:30 IdPs are also (iirc) allowed to have user-set Identifiers, which will let us have a unified approach to identity across the multi-sites 16:24:47 cmurphy, any real objection, or just wondering "why now?" 16:24:55 ayoung: mostly wondering why 16:25:15 cmurphy, cool. 16:25:31 ayoung: i will read the spec and ask you more questions 16:25:35 ++ 16:26:15 cmurphy, we have at least 2 customers that are tackling this problem and I would like to set them up for success 16:26:42 I'm willing to listen to any and all wisdom on how to handle multi-site when you can't scale galera to all of the nodes 16:27:20 according to what I've heard, galera will cover ~ 9 nodes, which, if you HA at a site with 3 msql instances, lets you get up to a 3 site cluster 16:27:37 but, if galera goes down, you've lost the the whole cluster 16:27:58 and that is a non-rare occurrence 16:28:31 So the thought experiement is: what if we have a hub-and-spoke model, and try to minimize the amount of data to keep in sync between them 16:28:53 at the hub, we would have keystone and the minimal service catalog with the regional keystone only 16:29:09 hub would also have a domain-to-region mapping... 16:29:18 and I don;'t have a good answer on how to do that today 16:30:52 i think i'm missing why you need a domain to region mapping, one domain per region doesn't fit most use cases 16:30:52 Anyway, that is the goal, and I am looking for input on how to acheive it, or smart alternatives that are not just "completely separate openstack deployments" 16:31:10 cmurphy, so, the domain-to-region does not need to be one-to-one 16:31:15 ah 16:31:27 instead, it is a way of saying "if this domain is linked to this region, this regional keystone owns the data in it" 16:32:18 so kind of like a catalog for your regions 16:32:19 I think the Federated domain, where the users are mapped, would still be owned by the central 16:32:25 cmurphy, exactly, yes 16:32:53 cmurphy, I would only put the identity servers into the central catalog, though 16:33:12 if you want to see what is really supported there (nova, sahara, whatever) go to that Keystone server and look at the catalog 16:35:59 So...I'm done 16:36:03 anyone have questions for ayoung ? 16:36:25 #topic open discussion 16:36:55 fyi i won't be at office hours 16:37:12 O/ 16:37:42 kmalloc we were talking about ayoung's explicit_domain_id plan 16:38:12 Reading backlog 16:38:15 Gimme a sec 16:39:21 i fall back to the oath model 16:39:40 Oaf? 16:39:57 and predictable ids, meaning it's not "supplied" but it is something we predictably generate 16:40:01 domains being the separate case 16:40:13 meaning we need to allow some level of autoprovisioning or mechanism to supply a known domain id. 16:40:26 oath - yahoo folks doing the federation 16:40:47 the domain-to-region mapping is the key that way 16:41:45 i don't see an issue with ayoung's approach architecturally within keystone 16:42:27 and i am willing to cede a minimal level of keystone-auto-id-owning to make the model work 16:42:38 #link http://superuser.openstack.org/articles/massive-hyperscale-insfrastructure-openstack/ 16:42:40 it is a real concern in the direction everything is taking 16:42:46 cool, i'll look closer at it soon 16:43:21 looking for design docs 16:43:33 i am also ok if a local keystone generates a local "id" that is combined with a specific local domain to generate the ultimate user-id. 16:44:02 and the "generated local-id" then is transmitted to the remote keystones, meaning the id, pending the domain-id being in sync, would be consistent between deployments 16:44:34 so...sync is a problem 16:44:40 that is assuming a single keystone is the sole owner of a user resource though... so no a->b->a->c->a 16:44:45 right now, what we could do is have a listener 16:44:48 just a->c, a->b.... 16:45:01 that would try and talk to a remote server, but if that server is down, we need to hold on to the changes 16:45:15 i am ok with a "domains must be made and configured when a federated source of id is configured" 16:45:17 or, have some way to "requery all since X" when the remote site comes back up 16:45:31 there is work to do to trust a source of id, one step may be making a domain. 16:45:46 so, I am really trying to avoid data sync. THus, limiting it to domains, and the rest be "provisioned on demand with predicatble IDS" 16:46:10 keeping Federated configuration (IDP etc) in sync is a low risk 16:46:24 users and project assignements are much more likely to be dropped 16:46:31 the goal is to avoid needing to sync everything. i don't want to sync domains, i am inclined to say operationally, make domain X, and configure IDP as trusted and linked to domain x 16:46:42 it is part of the setup. 16:47:44 so, the other part is "if we need info from Region X to work with Region Y, use K2K" 16:48:03 and now we have some modicum of a framework to keep the assignements we need in sync 16:48:21 that is largely what we've been driving at. or "central IDP" and locally assignments are derived from IDP info (on demand) or concretely set. 16:48:23 like, DomainXY maps to Domain Y 16:48:42 the central idp may be keystone, may be something else with advanced mapping in the region-local keystones 16:49:30 I'm thinking specifically of knikolla 's use cases where the Cinder Server is owned by one Keystone, and the Nova server by another 16:49:51 nothing says you still can't have a central source of ID 16:50:03 which in knikolla's case, right now is a keycloak. 16:50:32 the proxy/k2k bits for service federation is separate from strict id federation 16:50:42 don't try to over engineer a single solution 16:50:45 cmurphy, does this make sense? 16:51:12 it is likely they are related (lean on similar tech) but are setup with some separation. 16:51:17 since the concerns are slightly different 16:51:27 autoprovision, consistent/predictable ids is part of it 16:51:36 ayoung: so far yes, though I'm still not 100% on why plain k2k isn't sufficient 16:51:52 but you have to look at user->service interaction and service->service interactions 16:52:05 so, k2k can fill s->s (on behalf of the user) 16:52:30 but typically users will go idp->[auth through keystone]->Nova (or similar) and not have to bounce through k2k 16:53:17 One thing we can't do today is tell a user "you can only use this region's servers" 16:53:46 realistically, we're talking about changing k2k to more of "it isn't specifically a keystone you're talking to, it is any form of ID" 16:53:51 however, if the regional keystone is the only thing that can supply tokens for those servers, you now have an auth-point for limiting access 16:53:57 can't do that solely with K2k 16:54:21 but K2K would be useful for then saying "OK, now allow user U2 to use this nova as well" 16:54:31 ayoung: we could give them a mapping that only maps to the domains in one region 16:54:38 but i guess you're saying the user can't discover that 16:54:40 cmurphy: correct. 16:55:54 Service catalog is not used to enforce, either 16:56:03 and should not be used to enforce* 16:56:12 so a user can use an endpoint not in their catalog if the token is still valid 16:56:54 So, say we have 3 tiers (Gold, Silvern Bronze) 16:57:17 3 minutes left 16:57:20 do it as 3 regions, each with their own keystone, each with a distinct service catalog 16:57:43 the enforcement should not be predicated on the SC, the SC may communicate what is really enforced (I worry about shipping the SC around as auth[z] data) 16:57:54 the only time you need to do K2K is to set up an arraingement that cuts horizontally, and that should be owned by one of the regions 16:58:50 all of this is enhancements to how keystone does federation and how sources of IDentity are handled. 17:00:03 times up 17:00:06 the end goal is: source of identity -> keystone, and keystone is locally independant/not synchronized. 17:00:09 #endmeeting