| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2024-10-16 | |||
| 21:06:27 | sean-k-mooney[m] | that is however that role is defiend now | |
| 21:07:59 | admiyo | And that is OK, so long as you don't also need the other. So anything which is rule:context_is_admin" is essentially something reserved for system administators | |
| 21:08:28 | admiyo | for example (first one I saw) #"os_compute_api:os-admin-actions:reset_state": "rule:context_is_admin" | |
| 21:08:53 | admiyo | so the only people that can perform a reset_state operation on a server is a system administrator, right? | |
| 21:09:41 | admiyo | #"os_compute_api:os-aggregates:set_metadata": "rule:context_is_admin" | |
| 21:09:43 | admiyo | and so on? | |
| 21:10:07 | sean-k-mooney[m] | yes reset state is very dangourse | |
| 21:10:09 | admiyo | #"os_compute_api:os-assisted-volume-snapshots:delete": "rule:context_is_admin" | |
| 21:10:28 | sean-k-mooney[m] | it basically bypassing all oru saftey checks and has a high probability of requireing db surgery | |
| 21:10:42 | sean-k-mooney[m] | so reset state is not someing that and end user should every be able to do | |
| 21:11:09 | sean-k-mooney[m] | the assisted volume snapshot api | |
| 21:11:18 | sean-k-mooney[m] | is not ment to be used for humans | |
| 21:11:25 | sean-k-mooney[m] | its reseved exclustivly for cinder | |
| 21:11:52 | sean-k-mooney[m] | in the future admin will not be able to call it and it will require the service role instead | |
| 21:12:10 | sean-k-mooney[m] | aggerate metadata is also systems scoped | |
| 21:12:29 | sean-k-mooney[m] | so all of the above are examples of things only global admisn should be able to do | |
| 21:12:56 | sean-k-mooney[m] | aggreate metadata is basically to allow openstack admins to map capablity to speicifc hosts | |
| 21:13:04 | sean-k-mooney[m] | i.e. to reserve hyperviors for specific tenants | |
| 21:13:19 | admiyo | OK I think I see how things are going. | |
| 21:13:21 | sean-k-mooney[m] | or partions kvm hosts for hyperv ectra | |
| 21:14:47 | sean-k-mooney[m] | service can escualte on behalf of users in some cases where appriate. i.e. if you do a cinder snapshot of a volume as a normal user cinder willl call novas assisted snapshot api as an admin if and only if the volume is attached to a nova instace | |
| 21:14:58 | admiyo | sean-k-mooney[m], understand that in order to implement this, Keystone had to break its users. | |
| 21:15:06 | sean-k-mooney[m] | where that is required we are trying to move those endpoint to the service role | |
| 21:15:29 | admiyo | I still think this is fragile, but I can see where it is sufficient | |
| 21:15:53 | sean-k-mooney[m] | as far as i am ware the usage of admin i am descibeing has been there since 2013 | |
| 21:16:26 | sean-k-mooney[m] | i think longer but i started working on quantom in 2013 at the end of havana | |
| 21:16:46 | admiyo | Yes, it predated essex. It was designed broken | |
| 21:17:20 | sean-k-mooney[m] | so we now have 12 years of oeprators expecting this global admin behvior | |
| 21:17:44 | admiyo | Yep. But it also had serious side effects | |
| 21:18:02 | sean-k-mooney[m] | yep both good and bad | |
| 21:18:06 | admiyo | don't think of the people that use the system. Think of the people that decided not to because they could not expose their APIs to their end users | |
| 21:18:16 | admiyo | I think it seriously affected adoption. | |
| 21:18:40 | sean-k-mooney[m] | what i dont get is you could alwasy use custom policy | |
| 21:18:45 | admiyo | It is the same problem as having to do everything as root in a linux system. Fine if you are the only one using it.... | |
| 21:19:03 | admiyo | And I did serious education on using custom policy at the time. | |
| 21:19:19 | sean-k-mooney[m] | so downstream we impemented the reader roled using custom policy in wallaby | |
| 21:19:30 | admiyo | But it was hard to make custom policy that worked across a whole deployment consistently | |
| 21:19:46 | admiyo | The defaults varied from project to project | |
| 21:20:12 | sean-k-mooney[m] | right so since the reader role was not aviable in wallaby in every proejct we litally wrote custome policy for every service to make it consitnt | |
| 21:20:37 | admiyo | https://www.youtube.com/watch?v=5G-LYCfABJY | |
| 21:20:49 | admiyo | I am so sorry | |
| 21:22:00 | admiyo | It was made harder when everyone decided to move policy in to code, and hard-code the defaults. Before, when everyone had to use a policy file, it was simpler to say "replace yours with this one" | |
| 21:22:35 | admiyo | And when Red Hat went with TripleO and everything had to be generated from a Puppet manifest, I made an honest effort, and then gave up | |
| 21:22:52 | admiyo | I really felt like people wanted to keep it broken. | |
| 21:23:01 | admiyo | #"os_compute_api:os-migrations:index": "rule:context_is_admin" | |
| 21:23:02 | sean-k-mooney[m] | well redhat also offcialy does not supprot custom policy | |
| 21:23:25 | admiyo | Well admiyo officially does not support Red Hat, and now you know why | |
| 21:23:35 | sean-k-mooney[m] | mainly because custoemr have litrally currpted nova’s db before by messing up neutrons policy file | |
| 21:23:40 | sean-k-mooney[m] | such that all instance lost all ports | |
| 21:23:56 | JayF | sean-k-mooney[m]: I'm waiting for the first bug report w/ironic enabling RBAC defaults, along those lines | |
| 21:24:09 | admiyo | Yeah, as I recall there were some interesting policy enforcement in Neutron.... | |
| 21:24:44 | sean-k-mooney[m] | it was actully a tirdparty vendor who i wont name who provide a core plugin with custom policy | |
| 21:25:35 | admiyo | So migrations should never be done by an end user....I think I get that. They don't know about physical hosts....but that does seem like a draconian setup. Seems like there could be cases where you want to let users trigger their own migrations. But I get it. | |
| 21:26:14 | sean-k-mooney[m] | we dont today because its a potinal ddos vector | |
| 21:26:27 | sean-k-mooney[m] | but in the future we do plan to allow that via the manager role | |
| 21:27:03 | sean-k-mooney[m] | so member would not be able to but if you cant some one manager in a project they would be able to trigger a live migation | |
| 21:27:37 | sean-k-mooney[m] | we are also considring if we could allow them to select a host but thats tbd | |
| 21:28:08 | sean-k-mooney[m] | admiyo: ond of our custoemer does nto allow normal admins to live migrate by the way. they have a super admin role for that | |
| 21:28:39 | admiyo | OK. Remember, you also have implied roles, so admin can imply a lower level role and that gives them the ability to move forward. | |
| 21:28:45 | admiyo | so superadmin implies admin | |
| 21:28:49 | sean-k-mooney[m] | basically they had one team that did all the openstack admin and another team that did all the hardware/software mantahcne and patching | |
| 21:29:38 | sean-k-mooney[m] | they actully impmented it by making live migration require a dedicatd live_migration role and used a custom policy overried just for that | |
| 21:30:09 | admiyo | And by the way, according to Keystone, projects can still be nested, so if you assign an inheritable role on a parent or domain, you get it for the full hierarchy, but that means that administrators need to get a token specifically scoped to the project they want to affect | |
| 21:30:20 | admiyo | and I can see how that would be annoying in Horizon.... | |
| 21:31:27 | sean-k-mooney[m] | so i dont remember the details but with unifed limists there have been other changes to how nesting works | |
| 21:32:09 | admiyo | heh...yeah. Another lost battle. | |
| 21:32:25 | admiyo | Did you end up going with the two level approach? | |
| 21:32:38 | sean-k-mooney[m] | yes | |
| 21:32:44 | sean-k-mooney[m] | although its not on by default yet | |
| 21:32:49 | sean-k-mooney[m] | but we have supprot innova | |
| 21:33:00 | sean-k-mooney[m] | glance now only uses unifed limits | |
| 21:33:00 | admiyo | even if a quota is subdivided, you still need to check the overall quota of the project and all the parent projects. | |
| 21:33:15 | sean-k-mooney[m] | we are trying to swap to it by defaut in the next release or two | |
| 21:33:29 | admiyo | there is no real benefit or reason to limit it to two levels. | |
| 21:33:47 | sean-k-mooney[m] | so i dont think any of the service really supprot nested projects | |
| 21:34:30 | sean-k-mooney[m] | at least we dont have special logic to walk the tree | |
| 21:34:55 | admiyo | But for access control, especially admin functionality, you can make use of it. Remember, a domain IS a project. And even domain have a root, the defult project, so you can make roles that roll-on-down-the-hill\ | |
| 21:35:07 | sean-k-mooney[m] | so depending on how much of that is common in the keyston auth middleware ectra your milage will vary | |
| 21:35:51 | sean-k-mooney[m] | you can but you need to use a project scoped token becaue nova does not know about domains | |
| 21:36:02 | sean-k-mooney[m] | nor does neutron or glance ectra | |
| 21:36:16 | sean-k-mooney[m] | heat might | |
| 21:38:53 | admiyo | yeah, you can use a project sccoped token | |
| 21:39:03 | admiyo | but they don't know about nesting | |
| 21:39:10 | admiyo | so you need a token scoped to the project | |
| 21:39:28 | sean-k-mooney[m] | yep | |
| 21:39:38 | admiyo | but you automatically have access to that if you have the role assignment on the domain-as-aproject | |
| 21:39:43 | admiyo | and yes, domains were a mistake | |
| 21:40:10 | admiyo | OK, let me look at the keystone role assignemnt api. that is the real question | |
| 21:40:10 | sean-k-mooney[m] | well domains are kind for for the VPC/reseller usecse | |
| 21:40:23 | sean-k-mooney[m] | but that is not very common | |
| 21:40:51 | admiyo | NO, domains should have just been nested proejcts (tennants) on the proejct side, and IdPs on the user side | |
| 21:41:08 | admiyo | domains as groupings of projects was a mistake | |
| 21:41:22 | sean-k-mooney[m] | probably | |
| 21:41:40 | admiyo | but they predated Federated Identity. But IdP is the logical grouping for users, not domains | |
| 21:41:41 | sean-k-mooney[m] | im not really aware of domains being used by any of our custoemrs | |
| 21:41:55 | sean-k-mooney[m] | it would be a good question for the openstack user survay | |
| 21:41:56 | admiyo | this is all 20.20 hindsight | |
| 21:42:42 | admiyo | Although I do remember rendering insufficient resistenace to domains, thinking they should be projects. And I do rmeember being to person reminding people they were projects, not tennants. So I am very much to blame | |
| 21:44:12 | sean-k-mooney[m] | there is one feature that i have always wanted in keystone since your here. i wish there was a way to get a token form an sshkey like i want to just use the openstack client but assocating a public key with my user and using my private key to sign in | |
| 21:44:48 | sean-k-mooney[m] | the other feature is more a nova one but people have asked use to provide a token to vms liek k8s does | |