| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-10-03 | |||
| 19:44:01 | sdague | mriedem: it's been a while | |
| 19:45:34 | mriedem | several other bugs like this: create instance, attach volume, snapshot instance (the snapshot image has bdms in it now), create another instance, rebuild that 2nd instance with the snapshot image with image-defined-bdms, kablammo | |
| 19:45:52 | sdague | melwitt: right, I guess if you have flavors with a wide range of disk storage sizes, vs. coupling them to the mem/cpu sizing | |
| 19:47:05 | sdague | mriedem: so... I feel like there were enough interesting side conversations about the key_pair thing that they probably warrent a summary email, they will not capture very cleanly in 2 specs and 4 irc threads | |
| 19:47:10 | sdague | I can write that up if you like | |
| 19:47:34 | melwitt | yeah, must be. I haven't really heard this come up before, so it's probably like you said, for most ppl the limiting factor is cpu/mem | |
| 19:48:17 | mriedem | sdague: that's probably a good idea | |
| 19:53:09 | mriedem | is any of the accessIPv4 still valid? | |
| 19:53:16 | mriedem | *accessIPv4 stuff | |
| 19:53:30 | mriedem | that seems to be another one of those legacy things which we don't test but it's all over the api | |
| 19:53:38 | mriedem | like diskConfig | |
| 19:54:27 | sdague | it's user facing | |
| 19:54:32 | sdague | and user updatable | |
| 19:54:43 | sdague | sometimes it gets filled out, depending on the config | |
| 19:55:06 | sdague | if you update it yourself, we don't validate it, it's just reflected | |
| 19:55:23 | sdague | mriedem: ok, because it's been a while, a rebuild doesn't go through the scheduler, right? | |
| 19:55:47 | sdague | you get to rebuild in place, which means it's probably faster because your base image is already tehre | |
| 19:55:51 | sdague | correct? | |
| 19:56:02 | mriedem | sdague: rebuild (not evacuate) bypasses the scheduler yes | |
| 19:56:04 | sdague | I'm trying to make sure I cover all the reasons this could be interesting | |
| 20:00:28 | sdague | also, out of curiosity, because of the user scoping of keys, if you rebuild someone else's instance in the same project today, does it actually scope check the key and not add it? | |
| 20:02:16 | penick | that's an interesting question | |
| 20:03:46 | mriedem | sdague: you mean in the proposed spec? | |
| 20:03:48 | mriedem | or today? | |
| 20:04:01 | mriedem | because you can't change the key on rebuild today, hence the spec | |
| 20:04:53 | sdague | mriedem: no | |
| 20:05:00 | sdague | I mean, you build a server with your key | |
| 20:05:03 | sdague | I'm in your project | |
| 20:05:07 | sdague | I rebuild your server | |
| 20:05:09 | sdague | but I'm not you | |
| 20:05:18 | sdague | and I don't have access to your key | |
| 20:05:22 | sdague | what happens | |
| 20:06:23 | sdague | do we "never check that scope" | |
| 20:06:32 | sdague | do we "check the scope and not add the key" | |
| 20:06:54 | mriedem | just because you rebuild my server doesn't mean you get access to my key to ssh into it, right? | |
| 20:07:05 | mriedem | so i'm not seeing the issue | |
| 20:09:52 | openstackgerrit | Matt Riedemann proposed openstack/nova master: api-ref: remove redundant preserve_ephemeral mention from rebuild docs https://review.openstack.org/509273 | |
| 20:10:11 | penick | mriedem but isn't there a spec to add userdata to rebuild? | |
| 20:10:21 | mriedem | no | |
| 20:10:33 | penick | Or maybe I took crazy pills | |
| 20:10:44 | mriedem | there is a spec to remove personality files from rebuild, | |
| 20:10:47 | melwitt | penick: they're talking about the nova keypair API. | |
| 20:11:05 | mriedem | we're really talking about like 5 things | |
| 20:11:16 | mriedem | there is a spec proposed to pass a new key_name during rebuild, | |
| 20:11:25 | mriedem | there is a spec proposed to remove peronality files from server create and rebuild | |
| 20:11:47 | cfriesen | jaypipes: thanks for the suggestions on https://review.openstack.org/#/c/46820 (proposing "hw:realtime_cpu_set"). I imagine we'd need to support both "set" and "mask" for a release or two? | |
| 20:11:52 | mriedem | the question came up if we should allow passing new user_data during rebuild if we're not going to allow passing personality files anymore, and the spec currently states that we will not allow that | |
| 20:12:03 | penick | Yeah, my concern was if I can rebuild your instance, and that rebuild pulls in your user ssh keys, and If I can do something to inject my user into your instance on rebuild then i'd gain access to your ssh keys. | |
| 20:12:29 | melwitt | penick: if two ppl are in the same project and one person A creates an instance with their --key_name in it and the second person B does a rebuild on person A's instance, what happens to the key | |
| 20:12:42 | cfriesen | penick: resources are owned by projects, not individual users | |
| 20:12:50 | mriedem | cfriesen: except keys | |
| 20:13:16 | mriedem | penick: i think your question belongs in https://review.openstack.org/#/c/375221/ | |
| 20:13:32 | mriedem | in the security impact section | |
| 20:13:32 | cfriesen | penick: mriedem: logically though any keys should belong to the project, not the individual user | |
| 20:14:04 | mriedem | i think what would happen here is if you specified a new key_name during rebuild, we are going to be looking up that keypair in the api to see if it exists, | |
| 20:14:11 | mriedem | that check is going to use the context.user_id, | |
| 20:14:32 | mriedem | and if you're rebuilding my server, and don't have access to my keys, that keypair lookup will fail and you'll get an error | |
| 20:14:54 | mriedem | now if user A and user B are in the same project, and both have a key named mykey, that could work, but the user A mykey and user B mykey should still be different | |
| 20:15:00 | penick | melwitt: yeah that's what i'm wondering | |
| 20:15:51 | cfriesen | mriedem: why did we ever tie keys to users? | |
| 20:16:39 | mriedem | you will have to ask someone else | |
| 20:16:48 | mriedem | but, why wouldn't we? | |
| 20:16:50 | mriedem | keys are private | |
| 20:16:55 | penick | cfriesen: it makes sense for user ssh keys. Just not for headless keys or server keys | |
| 20:16:55 | melwitt | probably bc when you create one via the API it gives you the private key | |
| 20:17:20 | cfriesen | mriedem: instances are owned by the project. keys are used to access instances. therefore keys should be owned by the project | |
| 20:17:20 | mriedem | are we venturing into the application credentials hullabaloo? | |
| 20:17:31 | sdague | it is only the public keys that we store | |
| 20:17:39 | sdague | so it's not really a security risk | |
| 20:17:47 | sdague | but it's funny that you can't list those keys for other users | |
| 20:18:01 | sdague | but they can be put on a server for you | |
| 20:18:04 | cfriesen | melwitt: sure, then you dump the private key into some local "project team storage area" with permission controls | |
| 20:18:44 | dansmith | does this matter at all? we'd have to do some pretty major surgery to change the ownership of keys, and it would be hard to support old microversions for them | |
| 20:18:48 | sdague | cfriesen: keys attached to users are from "the before time" | |
| 20:19:35 | dansmith | unless we're really going to change key ownership, we might as well talk about problems we're going to solve | |
| 20:20:21 | sdague | dansmith: yeh, it's just an interesting edge question about how the system works because of the scope mismatch | |
| 20:20:40 | dansmith | sure, | |
| 20:20:52 | dansmith | but then we can move on once identified right? :) | |
| 20:21:02 | sdague | anyway, I tried to build a summary email from all the conversations I saw today | |
| 20:21:03 | cfriesen | dansmith: fair enough...so in mriedem's scenario would we allow user B to replace user A's "mykey" with user B's "mykey" on a rebuild? | |
| 20:21:30 | dansmith | IMHO, if you specify a key, it's looked up based on your context, and if that's your key instead of the original one, then so be it | |
| 20:21:50 | sdague | dansmith: sure, I just think it might be an unexpected thing | |
| 20:21:53 | dansmith | if you don't, then we should keep the same I think | |
| 20:22:14 | dansmith | sdague: if you specify a key? you can't list other people's keys so what other intent could the user have if they specify one? | |
| 20:22:30 | penick | Well for preserving the host key, the private key will need to be stored as well | |
| 20:22:38 | sdague | penick: we don't do that | |
| 20:22:41 | penick | there's no point in keeping a public ssh host key, if you don't preserve the private key | |
| 20:22:43 | dansmith | penick: we do nothing with the host key | |
| 20:22:55 | dansmith | these are all user access keys we're talking about | |
| 20:22:55 | penick | Oh hell, I completely misunderstood this spec. | |
| 20:22:58 | sdague | this is all just the root ssh key | |
| 20:23:02 | sdague | root user | |
| 20:23:09 | dansmith | not even root, | |
| 20:23:14 | sdague | being configed on cloud init | |
| 20:23:17 | dansmith | whatever user the image has for access | |
| 20:23:22 | sdague | dansmith: yeh, right | |
| 20:24:35 | mriedem | cfriesen: ok, so i think what would probably need to happen for rebuild, is if another user does the rebuild, then we have to lookup the keypair by the instance.user_id, | |
| 20:24:38 | mriedem | not the context.user_id | |
| 20:24:56 | dansmith | and doesn't specify a key.. agreed | |
| 20:25:12 | dansmith | we just have to be careful not to expose non-project-user keys when we're doing that override, | |