[nova][tripleo][rpm-packaging][kolla][puppet][debian][osa] Nova enforces that no DB credentials are allowed for the nova-compute service
Balázs Gibizer
balazs.gibizer at est.tech
Mon Nov 23 15:50:29 UTC 2020
On Mon, Nov 23, 2020 at 07:02, Alex Schultz <aschultz at redhat.com> wrote:
> On Mon, Nov 23, 2020 at 6:42 AM Sean Mooney <smooney at redhat.com>
> wrote:
>>
>> On Mon, 2020-11-23 at 06:15 -0700, Alex Schultz wrote:
>> > On Mon, Nov 23, 2020 at 3:47 AM Balázs Gibizer
>> <balazs.gibizer at est.tech> wrote:
>> > >
>> > >
>> > >
>> > > On Mon, Nov 23, 2020 at 11:18, Thomas Goirand <zigo at debian.org>
>> wrote:
>> > > > On 11/23/20 9:30 AM, Tobias Urdin wrote:
>> > > > > Hello,
>> > > > >
>> > > > >
>> > > > > Just to clarify that this is already possible when using
>> > > > > puppet-nova, it's up to the deployment to
>> > > > >
>> > > > > make sure the database parameters for the classes is set.
>> > > > >
>> > > > >
>> > > > > We've been running without database credentials in
>> nova.conf on our
>> > > > > compute nodes for years.
>> > > > >
>> > > > >
>> > > > > Best regards
>> > > > >
>> > > > > Tobias
>> > > >
>> > > > Hi Tobias,
>> > > >
>> > > > That's not what I'm suggesting.
>> > > >
>> > > > I'm suggesting that nova-compute code from upstream simply
>> ignores
>> > > > completely anything related to db connection, so we're done
>> with the
>> > > > topic. That is, if nova-compute process having access to the
>> db is the
>> > > > issue we're trying to fix.
>> > > >
>> > > > Or is it that the security problem is having the db
>> credentials
>> > > > written
>> > > > in a file on the compute node? If so, isn't having hacked
>> root (or
>> > > > nova)
>> > > > access to a compute node already game-over?
>> > > >
>> > > > What are we trying to secure here? If that's what I'm
>> thinking (ie:
>> > > > some
>> > > > VM code to escape from guest, and potentially the hacker can
>> gain
>> > > > access
>> > > > to the db), then IMO that's not the way to enforce things.
>> It's not
>> > > > the
>> > > > role of upstream Nova to do this apart from a well enough
>> written
>> > > > documentation.
>> > >
>> > > I always understood this as having a goal to limit the attack
>> surface.
>> > > So if a VM escapes out of the sandbox and access the hypervisor
>> then
>> > > limit how may other services get compromised outside of the
>> compromised
>> > > compute host.
>> > >
>> >
>> > I can agree with this in theory, however I don't think it's nova's
>> > responsibility to enforce this.
>> >
>> nova need to enforce it as we use the absense or present of the db
>> creads to know
>> if common code is running in the compute agent or in controller
>> services it activly breaks the nova compute agent if they
>> are present.
>>
>
> Seems like a poor choice to have made to use db creds to determine
> functionality but OK.
>
>> it is a bug to have the db cred in the set fo configs passed to
>> nova-comptue and it has been for years.
>> the fact it worked in some case does not change teh fact this was
>> unsupported following a depercation cycle and activly
>> depenedon in code after allowing operators, packagers and
>> deployment tool maintianer years to ensure its no longer presnt.
>>
>> we could make this just a ERROR log without the hard fail but that
>> would still not change the fact there is a bug in packages or
>> deployment
>> tools that should be fixed.
>>
>> > IMHO a warning about this condition
>> > should be sufficient from a project standpoint. It's up to the
>> > operator to ensure this does not happen and not the project.
>> >
>> that would be true if it was not something that the code relied on
>> to function correctly.
>> local condocutor mode was removed in grizzly, since then the db
>> creds have been unsued in the compute node.
>> when cells v2 was intoduced they were used to determin if we would
>> check the version in the local cell or in all cells
>> as aprt of rpc automatic upgarde level calulation. we now always to
>> the auto discovery which cause it to break.
>>
>> > The
>> > project can't foresee how the service is actually going to be
>> > deployed.
>> >
>> we can define which methods of deployment we will support however.
>
> No? I don't think that's ever been a thing for openstack services.
>
>> > In theory this is moot if the compute service is running on
>> > the same host as the api and not in something like a container.
>> not really we have expected nova-compute to not use nova.conf in an
>> all in one deployment since rocky unless its
>> in a container where it has a rendered version that only contains
>> the section relevent to it.
>
> file names were place holders. And since you don't control the
> deployment, you don't pick the names (see this thread)...
>
>> > Escaping the service and having access to the host won't prevent
>> the
>> > hacker from reading /etc/nova/nova-db.conf instead of
>> > /etc/nova/nova-compute.conf.
>> it wont but /etc/nova/nova-db.conf should not be on the compute
>> node
>> unless you are also deploying a service that will actully use it
>> there.
>> that is vald to do but it shoudl still not be bassed to the
>> nova-comptue binary.
>
> You're missing the point if the operator is deploying nova-api and
> compute on the same host, they will be there. It may not be a best
> practice but it is something that people do for their own reasons.
> Nova should not artificially restrict this for no other reason than
> you think it shouldn't be done or you wrote code assuming this. The
> whole point of openstack was to allow folks to build their own clouds.
> If deployment decisions are being made at a project level now, then
> that seems to be a break in how things have been done historically.
> Having handled tooling around the deployment of openstack now for
> nearly 6 years, I'm not certain projects should necessarily be
> dictating this.
To be fair with this change we are not dictating that nova-api and
nova-compute cannot be deployed to the same host. We only dictate that
they cannot use the same config file if they are deployed together. I
don't see this (e.g. two binaries on the same host needs two separate
config files) as a big restriction, but I might be mistaken.
Also this is not the first time nova-compute refuse to start if
provided with an invalid configuration. There are a bunch of those
cases in the compute manager or in the virt driver e.g. [1].
[1]
https://github.com/openstack/nova/blob/ab90c7af5626db190752528bba1d4982a8a0dac1/nova/compute/manager.py#L838
>
> I raised my concerns about this when this concept was first explained
> to me in #puppet-openstack and I've basically washed my hands of it. I
> disagree with this entire thing, but my take was if you're going to do
> it then nova developers needs to ensure it's supported in all the
> places and properly explained to operators which seems like the plan
> from this thread. I still don't think it's a good idea to hard fail
> but carry on.
>
>> > > Cheers,
>> > > gibi
>> > >
>> > > >
>> > > > Cheers,
>> > > >
>> > > > Thomas Goirand (zigo)
>> > > >
>> > >
>> > >
>> > >
>> >
>> >
>>
>>
>>
>
>
More information about the openstack-discuss
mailing list