18:05:10 #startmeeting keystone 18:05:11 Meeting started Tue Nov 25 18:05:10 2014 UTC and is due to finish in 60 minutes. The chair is morganfainberg. Information about MeetBot at http://wiki.debian.org/MeetBot. 18:05:12 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 18:05:13 anything on the agenda? 18:05:15 The meeting name has been set to 'keystone' 18:05:34 So quick house keeping 18:05:44 this is a short week for all the US folks 18:05:50 have a good thanks giving! 18:05:51 /turkey 18:05:59 /ham 18:06:16 joesavak, dolphm, (turkey, ham, stuffing) 18:06:27 #topic HM Discussion: Can we create a domain below a project? or we must keep domains on the top and projects below 18:06:28 pie! 18:06:33 raildo, o/ 18:06:36 \o 18:06:37 turkey day! 18:06:56 So... During the Summit we discuss a lot of things about HM, but some discussions remained open, of these questions is:Can we create a domain below a project (just a project, not a project that change to be a domain)? or we must keep domains on the top and projects below? 18:07:21 I'm remember that morganfainberg like the first option and ayoung the second... 18:07:22 we are still maintaining a domain is an administrative boundary containing projects & users; and a project is a collection of resources right? 18:07:32 joesavak, yes 18:07:35 raildo, sortof 18:07:37 I would say this 18:07:42 joesavak, the idea is domains will become projects with special properties 18:07:45 domains should only be able to nest under domains 18:07:56 joesavak, but without those special flags, they can't be the administrative 18:08:01 boundry 18:08:06 that's cool - then no "domains" under "projects" 18:08:12 having domain->project->project->domain 18:08:14 not good 18:08:18 ayoung, ++ 18:08:18 +1 ayoung 18:08:30 ayoung, why? 18:08:45 how is it "not good" 18:08:49 it may be sub-optimal. 18:08:53 we can allow it later if we find there is compelling reason, but I don't see that it is a good fit 18:09:12 confuses authorization at the higher levels, and creates administration headaches for assignments 18:09:15 and then if someone tells me that he wants only to create instances (I sell him a project ) .. otherwise .. if he wants to resell , then I sell him a domain : different contracts 18:09:19 how is that sub optimal? it's almost a simplification 18:09:37 dolphm, sub-optimal to have domain -> project -> project -> domain 18:09:41 dolphm, was my question 18:09:59 not domain -> domain -> domain -> not domains after here cause this is a project 18:10:01 ok...so domains are organizational boundaries. So If I resell to you, and you resell to her, and she resells to you, there is a clear chain 18:10:12 putting projects in between, though, muddies that 18:10:34 morganfainberg, I'm ok with domain -> domain -> domain 18:10:41 (sorry for being late) 18:10:50 IN fact, I think we need it explicitly for the reseller case 18:10:56 ayoung, in our implementation is not allowed cycle 18:10:59 ayoung, yes .. and buying for resell or buying to create instances are kept with different contract (and prices) 18:11:01 i'm inclined to say domains can be anywhere. 18:11:15 it's an attribute on a project 18:11:17 I thought a domain was a special type of project? 18:11:20 morganfainberg: I tend to agree 18:11:20 ayoung, you can't say that you want to create instances (less expensive) and then resell 18:11:21 its more than that 18:11:30 a deployer (e.g. joesavak) can choose that domains can only be at the top 18:11:33 it is going to be an entry that pulls in an identity source 18:11:40 morganfainberg: we had reasoning to make that property immutable once set though 18:11:50 dolphm, did we? 18:11:58 * dolphm is looking through notes 18:12:07 ayoung: is there something other than complexity that you are concerned about (apologies if you already stated this and I missed it) 18:12:08 i figured a deployer could tear down the domain attribute at somepoint. 18:12:19 henrynash, we just started, you didn't miss much/anything 18:12:23 dolphm, you're saying that, if a change a project to be a domain, i can't remove this "flag"? 18:12:34 morganfainberg: i think that's exactly what we wanted to disallow 18:12:41 morganfainberg - that's fine - and flexible - "deployer choice" 18:12:47 dolphm, i honestly don't remember that. 18:12:58 but if thats the case, then yes, domains can't go under projects. 18:13:07 henrynash, I have to admit, I am having trouble voicing it. It was one of those things that we discussed at the summit and it became clear that keeping the org tree clear made sense 18:13:10 it makes life really unfriendly 18:13:19 morganfainberg: if the deployer can do anything to manipulate a customer's customer's domain, privacy & security are violated 18:13:47 dolphm, ah, right the administrative block thing 18:14:05 we need OpenStack as a Service 18:14:16 Cloud as a Service 18:14:25 dolphm, ok - that is the addon built on top of it 18:14:32 joesavak, if we go for 'just domains under domains', we can establish different contracts (and then pricing) to people that want to 1) create instances 2) resell 18:14:39 what's the major difference between projects and domains? just that domains hold users? 18:14:49 great, So I'll put this discussion in the Reseller spec :) 18:14:53 there's a basic level of trust between a deployer and a reseller customer - that the deployer wouldn't touch the reseller customer's customer unless asked to - so authorization may have to allow that in some cases 18:14:53 gabriel-bezerra, and (future looking) roles 18:15:06 morganfainberg, I think that the issues is: what does it mean if the parent of a domain is project that is not a domain. There was some wierdness there 18:15:14 dolphm: surely that’s a contractual thing in reality…the domain attributes on teh project that is the root of the reseller encapsulates the contractual agreement….teh deployer can’t change it without breaking the contract 18:15:18 ayoung: ++ 18:15:18 gabriel-bezerra: domains (or private projects) also provide an authorization boundary 18:15:31 domains under domains for resellers make sense 18:15:34 can't we have just a project tree and keep domain something that points to a project? 18:15:46 henrynash, ++ 18:15:48 then domains will keep the roles and users 18:15:50 ayoung: can you articulate said weirdness 18:16:12 ayoung, i think the wierdness is the part that isn't clear 18:16:14 the point was to make domains essentially a project with a flag to indicate some idp stuff, why does it matter if that comes below a project? 18:16:28 jamielennox: ++ 18:16:32 ayoung: in terms of inheritance from parent domains…the projects are essentially invisible up the tree 18:16:37 jamielennox, that was my view. 18:16:39 the domain -> domain -> domain restriction provides a simplification that i'm a fan of - lower risk of security bugs :) 18:16:54 dolphm, i agree 18:16:59 dolphm, i think the best approach since we decided that domain is not toggle-off-able 18:16:59 it's also a constraint we can relax later 18:17:08 dolphm, that is my feeling, too 18:17:09 dolphm, is we make the constraint a check in 1 place 18:17:19 so it's super easy to relax if we need to. 18:17:36 dolphm, ++ 18:17:43 what's the constraint/restriction - a list of projects? 18:18:04 joesavak, that the parent of a domain can only be another domain 18:18:06 for now. 18:18:15 ok, i'd be happy with domain to domain as a starting point and let us figure out issues, then remove the check later 18:18:19 ok 18:18:22 henrynash, I think it comes down to being able to track who delegated to whom at the organizational level. Having a project between delegations doesn't really make sense to me. It also limites who can make a new domain 18:18:25 so you can't set the "domain flag" if the parent is a project 18:18:31 joesavak, we implement like we allowed domains under projects .. but we block it with a constraint that could be easily removed later 18:18:46 gotcha - thanks 18:18:47 but i say this only from the standpoint that "turning off" the domain flag is unlikely to be something we *really* want people to do 18:19:11 morganfainberg, you mean project becoming a domain and than back to project? 18:19:17 rodrigods, correct 18:19:43 morganfainberg, yeah, wouldn't allow it 18:19:44 morganfainberg, and then we delete that domain's users? 18:19:57 rodrigods, so then domains can't be under projects ;) 18:20:04 rodrigods to save headaches to start 18:20:10 we can loosen the restriction later 18:20:11 morganfainberg, ++ 18:20:13 morganfainberg, ++ 18:20:31 fine with that as a starting point 18:20:32 great :) 18:20:32 rodrigods, but i'd like to keep that limitation very isolated, so we can easily relax it if we want 18:20:47 morganfainberg, makes sense, we'll keep it in mind 18:21:29 dolphm, and my view is very much changed by the "immutable" domain flag. 18:21:35 dolphm, thanks ;) 18:22:00 ok so... more HM! 18:22:01 morganfainberg: that was probably your idea 6 months ago anyway 18:22:03 just a point I was in doubt... will there be any difference from the top level domain (which we have today) and the others? 18:22:11 any action from the discussion? 18:22:18 bknudson, not really? 18:22:20 #agreed domains become projects in the backend 18:22:24 I mean.. the top domain will also be a "domained" project? 18:22:24 dolphm, ++ 18:22:27 #agreed but the parent of a domain must be another domain 18:22:29 bknudson, I'll put this in the Reseller Spec 18:22:39 htruta, the top level domains just have no parent 18:22:47 they are the same as any other domain in the system 18:22:48 #agreed once a project is marked as a "domain", that attribute is immutable 18:23:08 morganfainberg, htruta and we return them when querying for v3 domains 18:23:19 samuelms: ++ 18:23:24 ok so. 18:23:27 #topic Hierarchical Multitenancy Improvements Spec 18:23:34 samuelms, morganfainberg: that's what i Thought. tks 18:23:36 #link https://review.openstack.org/#/c/135309/ 18:23:41 rodrigods, raildo, o/ 18:23:45 htruta, np 18:23:52 We need do start to review the HM spec for Kilo :) 18:23:56 kilo-1* 18:24:08 raildo, FYI, the spec deadline is Kilo-2. 18:24:08 yeah, there are some proposals that might need your input 18:24:18 but yes, we should review the specs sooner vs later 18:24:18 morganfainberg, ok 18:24:33 the earlier the spec lands, the earlier you can work on the code :) 18:24:40 and know it's accepted. 18:24:40 morganfainberg, ++ 18:24:41 that is. 18:24:51 And will be great if we have the other patches related to the basic implementation about HM merged to kilo-1: 18:24:56 morganfainberg, and have a complete set of reseller features still in kilo 18:24:58 raildo, ++ 18:25:06 #link https://review.openstack.org/#/c/117786/ 18:25:07 samuelms, i would like to see that if possible. 18:25:07 samuelms, ++ 18:25:12 #link https://review.openstack.org/#/c/130277/ 18:25:18 #link https://review.openstack.org/#/c/117787/ 18:25:20 :d 18:25:22 :D 18:25:31 can we get rid of the topic branch? 18:25:44 bknudson, as soon as those merge and we resolve master merge 18:25:52 bknudson, but yes we will get rid of the topic branch soon 18:25:52 morganfainberg, ++ 18:26:11 morganfainberg, btw, htruta is working in the LDAP tests 18:26:21 will commit today/tomorrow 18:26:31 * morganfainberg is going to wedge a quick topic in the middle of the agenda here. 18:26:54 morganfainberg, rodrigods: yes... those awkward tests hehe 18:26:57 samulems, rodigods: did we resolve how we will check permission for resturns a hierarchy of projects? 18:26:58 ? 18:27:08 it seems like more work to keep the branch around 18:27:13 and diverging 18:27:18 henrynash, using list_projects_for_user 18:27:26 when we could just merge the branch back now as it is and move the reviews over to master. 18:27:27 when returning the refs 18:27:43 bknudson, we're already diverged the current CRUD patch should merge shortly 18:27:44 bknudson, ++ 18:27:46 and returning a full hierarchy, when asking only for the ids 18:27:57 bknudson, figure at this point we should just merge the 2 open on the topic and resovle the master merge 18:28:05 bknudson, then all other work goes onto master 18:28:36 bknudson, or at least the most recent one on the topic branch that has a reasonable history. 18:28:50 rodrigods, ++ 18:28:55 henrynash, subtree_as_list returns the full project ref, but we omit the projects the user hasn't access to 18:28:56 bknudson, this one: https://review.openstack.org/#/c/117786/ 18:29:15 henrynash, subtree_ids (new spec) will return a dict with the hierarchy and only the ids 18:30:06 morganfainberg: we also need to resolve with the merge against the assognment split…ideally I’d have like the hieracical projects to land post-split - and am happy to help with the merge 18:30:26 we lost the rebase race :( 18:30:30 henrynash, ++ 18:30:33 ok so lets do next topic 18:30:39 so we can get to assignment split 18:30:42 :) 18:30:55 #Topic Replace Extensions 18:31:06 since we are talking about new functionality (HM+Reseller) 18:31:23 #link https://review.openstack.org/#/c/133809/ 18:31:37 please review the spec to reclassify experimental vs extensions 18:32:01 i'd like to see us move away from the extention terminology for new code / features / APIs 18:32:08 ok 18:32:19 #topic Functional Testing for Federation 18:32:22 vsilva, ol 18:32:22 morganfainberg, ++ 18:32:23 so apologies I haven’t produced a new version of the spec that takes into account all the new comments - I will do soon 18:32:36 (that was to replace extensions topic) 18:32:39 henrynash, no worries. 18:32:50 So, I remember a lot of people talking about improving testing for keystone, and that would be discussed on the summit. 18:33:06 vsilva, o/ 18:33:32 I asked around and you don't seem to have decided anything. Shouldn't we start to move in that direction? I know for a fact that one important part of keystone doesn't have real testing (federation) 18:33:33 vsilva: i've started understanding all of the infra pieces for this 18:33:49 marekd, ^ 18:34:09 there is a general community direction that i've been following - it's not Keystone specific 18:34:28 vsilva, i am working on some local env so i can help with the federation testing 18:34:29 cool, dstanek. I'd love to help 18:34:33 dstanek, ++ 18:34:35 my goal is to get the right infra things rigged up before turkey day 18:34:35 dstanek, to put functional tests on tempest? 18:34:37 we're supposed to get all of the functional keystone tests out of tempest 18:34:42 morganfainberg, great 18:34:57 vsilva: i'm not actually writing the tests though - at least not yet - just making the place for them to go 18:35:00 yeah samuelms the idea is that QA shouldn't be responsible for all of that 18:35:11 samuelms: out of tempest and into keystone 18:35:11 tempest folks realized that tempest doesn't scale if it houses all the tests for everything ever 18:35:25 i talked to mtreinish about this at the summit and since 18:35:44 we can move things out of tempest, but there is going to be a delay on getting those tests dropped from tempest 18:35:45 morganfainberg: what did I do? 18:35:55 oh functional testing stuff 18:35:59 they don't have the metrics yet to apply the policy of "tests haven't failed" 18:36:01 mtreinish, yep 18:36:02 mtreinish, yes 18:36:03 vsilva: marekd: missing_stevemar: it would be up to you guys to write the tests :-) 18:36:32 so we *should* move the tests, but we will be waiting for them to actually drop from tempest - for $reasons$ 18:36:34 dstanek, great. I'm sure marekd will also be happy to help. 18:36:38 dstanek: so do you think there'd be a special config that sets up keystone in federated config? 18:36:50 I assume devstack doesn't support setting up federation 18:36:53 bknudson: yes 18:36:53 bknudson, i *hear* we have multi-node gate on the horizon 18:37:14 dstanek: we have to do it with devstack hooks right? 18:37:15 so.. i would assume a special environment that does federation and k2k. 18:37:23 it's going to require a saml provider... what's going to do that? 18:37:31 lbragstad: that's the way i'm doing it now 18:37:57 bknudson, either something contrived *or* see if we can coerce IPA [soon to work on ubuntu**] to issue SAML 18:38:10 ideally we'll be able to support an infinite amount of federation setups to test against...maybe not infinite 18:38:17 bknudson, i am also looking for someone to help us gate ADFS Saml -> keystone 18:38:21 but it's a challenge 18:39:18 this is going to be great 18:39:35 we seem to have dropped the testing section from the spec template 18:39:44 bknudson: you can still add one 18:40:39 morganfainberg, cool .. Where do the roles go? 18:40:42 p 18:40:44 :p 18:40:46 morganfainberg, IPA is not going to issues SAML 18:40:49 Ipisilon is 18:41:01 ayoung, ++ 18:41:03 https://git.fedorahosted.org/git/ipsilon.git 18:41:10 ayoung, that-project-you-guys-have-that-i-cant-keep-track-of-yet 18:41:15 https://git.fedorahosted.org/cgit/ipsilon.git/tree/README 18:41:18 ;) 18:41:42 morganfainberg, it is baiscally our teams effort to provide a SAML provider on top of exising LDAP services 18:41:49 ayoung, sounds good. 18:42:00 either case, we will find a way to issue assertions 18:42:30 henrynash, you here? 18:42:31 #link https://git.fedorahosted.org/cgit/ipsilon.git/tree/README 18:42:34 yrs 18:42:39 henrynash, ready for the fun topic? 18:42:39 yes, even 18:42:45 ayoung, thanks! 18:42:50 hit it 18:42:58 #topic Splitting the assignment component: Where do the roles go? 18:43:02 o/ 18:43:04 #link https://review.openstack.org/#/c/130954/ 18:43:10 roles go with domains 18:43:16 (sung to the tune of “who let the dogs out) 18:43:48 ayoung, roles and domains are close friends now :) 18:43:56 so I posted the details of the questions that is up in the air to the dev mailing listr 18:44:07 http://lists.openstack.org/pipermail/openstack-dev/2014-November/051481.html) 18:44:10 henrynash, i want to start with saying we should really *not* do per-domain-assignment-mapping-enginers 18:44:32 henrynash, that is setting off every single one of the *this is an awful idea* bells when i read it 18:44:32 …and if I’m honest, I don’t really know if anyone would want to :-) 18:44:37 morganfainberg, ++ for this 18:44:38 henrynash, so lets leave that off the table. 18:44:49 henrynash, we can circle back later if there is a case for it 18:45:01 henrynash, what was the name of the email 18:45:08 disregard 18:45:16 so to catch everyone up, the issue is do role definitions fo in the “resource” or “assignment” piece of the split 18:45:19 henrynash, morganfainberg if we'd go for putting roles out of resource ... that could be a fourth backend called 'conectors' .. where we should put attributes for rbac (for eg) 18:45:27 ayoung, [openstack-dev] [Keystone] Splitting up the assignment component 18:45:33 how about have a backend for roles? 18:45:39 bknudson, ^++ 18:45:44 henrynash, I think that there are two types 18:45:57 henrynash, one is capabilites, and reusable groups of capabilities 18:46:02 one bit of info that is not in my mail is that today assignment manager does NOT map the role IDs into Names/Refs for token generation 18:46:05 that exists outside the domain abstraction 18:46:14 second is the private roles...those go with domains 18:46:18 bknudson, what I just said .. 'conectors' backend .. things we use to link actors to targets through the engine 'assignment' 18:46:25 ayoung, lets leave the "private" role bit to the side here. 18:46:44 morganfainberg, no...lets keep it in the discussion, but deprioritize it for implementation 18:46:45 morganfainberg: so teh assignment manager returns role_ids to the token provdiers and they map this into roel names 18:46:46 ayoung, i think that is largely orthogonal in this case. 18:47:08 morganfainberg, I wish that were the case. I don't really think they are the same thing 18:47:29 ayoung, for the sake of this conversation, they are. because they muddy things up a lot to start 18:47:32 so...lets at least ack that they exist, and need to be treated differently than the current set of roles 18:47:34 ayoung, lets come back to them 18:48:14 morganfainberg, so, the other side is capabilities 18:48:29 we start at the bottom with the unified policy discussion 18:48:35 what about having a fourth backend to put roles/addition attributes (in the case of abac) .. 18:48:36 henrynash, you're still tightly coupled across thes systems. 18:48:38 samuelms, you have a link for your work on that? 18:48:50 samuelms, i don't think another backend will actually help here. 18:48:55 morganfainberg: how so? 18:49:07 henrynash, the assignment backend still needs to know the role ids. 18:49:07 I think that it might make sense to put them with policy 18:49:21 ayoung, really? 18:49:24 yes 18:49:35 ayoung, about the fourth backend ? just thought about this .. 18:49:35 rodrigods, it follows from this: 18:49:52 policy is built up from capabilites. Roles are the intermediate state 18:50:00 ayoung, can we back up 18:50:04 morgainfainberg: as it does project_ids and user_ids 18:50:05 now, our current policy backend treats policy as a blob 18:50:25 ayoung, waaay backup 18:50:36 morganfainberg, if people here have not yet read http://adam.younglogic.com/2014/11/dynamic-policy-in-keystone/ they should 18:50:46 ayoung, and we aren't takling policy here 18:50:54 ayoung, so, lets stay a bit more focused 18:50:54 morganfainberg, roles are policy 18:50:57 ayoung, no they are not. 18:51:11 ayoung, we are talking about what is occuring *before* policy 18:51:30 morgainfainberg: i guess that’s teh crux of my argument….assignments is a mapping between entities that are defined elsewere….and is there a real argument that role is any different than user, group, project or domain? 18:51:53 the changes henrynash is advocating should work in both cases current and/or new policy stuff 18:52:04 morganfainberg: agreed 18:52:05 ayoung, this is where does that info go. 18:52:14 morganfainberg, ++ 18:52:16 henrynash, roles are the connectors between identity and resources .. I still think we should put that in a fourth backend 18:52:21 without understanding where we are heading it is just busy work 18:52:22 ayoung, so lets focus there and we can expand to policy which is next logical step 18:52:58 o/ (sorry, for being crazy late) 18:53:00 henrynash, i think roles are a construct of your assignment backend. 18:53:17 samuelms: so let’s concentarting on deciding IF they should be with assignments…if not, then that’s a separate discussion of where they do go 18:53:24 henrynash, my concern here is the deisgn is falling into the SQL trap - we use SQL so we design for SQL. 18:53:31 OK, so let me agree with Henry. The assignments backend should be pulling in roles from somewhere else. And that somewhere else should be the policy backend. 18:53:32 henrynash, ++ 18:53:43 I like ayoung's idea of policy and roles being tightly coupled. 18:53:46 if we're ok with that, and we realize we're locking things in 18:53:50 I thought the point was to make it so you don't need SQL for role assignments? 18:54:18 i'm trying to see what i'm missing from the where roles go 18:54:31 so we're adding another layer of rule XXX maps to role Y 18:54:39 if the role assignments are pluggable, the roles should be too 18:54:46 when then gets transformed into role-named-y? 18:54:46 if your role assignment backend doesn't need defined roles then you don't have to create any 18:54:53 why should we need the extra step? 18:54:59 henrynash, ^ i think that's my question 18:55:02 morganfainberg, we kindof have that layer already, though 18:55:15 is_admin and _admin_or_owner are poorly named versions of that 18:55:17 how do you know what the answer from assignment is to the role 18:55:32 morganfainberg, please reask 18:55:35 henrynash, are we really creating 2 extra systems here? 18:55:53 assigment gives an answer of attributes turn into X 18:56:13 then we need to now know that X is really resource / role / actor combo 18:56:19 morganfainberg, henrynash if we have abac ... where should we put attributes? 18:56:29 so, all we're doing ehre is making an extra abstraction to process something? 18:57:09 i'm not seeing how the role-assignment backend works / adds value if all it's doing is adding an extra layer that we largely do all the same work we're doing now 18:57:09 samuelms, attributes come from multiple sources. They all end up in the auth ref and get processed by the policy engine 18:57:11 morganfainberg: but are we? teh support for roleID<->RoleRef is just encoding the particualr policy language taht teh otehr servcies expect…..I’m not sure that’s realated to the realtionships between the entities 18:57:21 what Keystone does is RBAC on top of ABAC 18:57:38 ABAC is the mechanism. RBAC is the organizational scheme 18:57:46 ayoung, ++ 18:57:58 henrynash, so how does this work? 18:58:01 morganfainberg, Ok...so let me give you a concrete example 18:58:13 lets say we have a single sign on system that allows us to manage hosts 18:58:22 think something like an IDP, but for machines 18:58:29 ayoung, not sure .. if we think in sets .. abac contains rbac, right? 18:58:32 maybe something that does secure DNS, etc 18:58:43 now, Keystone is going to map users from an idp to host access 18:58:45 (2minutes) 18:58:53 the hosts are inside of groups that we could use as proejcts 18:58:57 morgainfainberg: role-assignment backend IS the relationship bit, the resource bit is the translation into what the other parts of opemstac understand 18:59:20 so we pull in the projects from this system as a domain, but here it is providing the projects, not the users 18:59:26 henrynash, ++ 18:59:42 keystone then provides a management layer to map users to those projects...users from multiple IdPs 19:00:02 So keystone needs to keep the definition of Roles separate from the projects themselves 19:00:16 ayoung, we're going to need to continue in -keystone 19:00:21 7pm UTC 19:00:22 cus, in this case, the projects might be every bit as immutable as users out of LDAP 19:00:40 please continue in #openstack-keystone 19:00:43 I'll take it up there 19:00:49 #endmeeting