[openstack-dev] [neutron] - Changing the Neutron default security group rules
Monty Taylor
mordred at inaugust.com
Wed Mar 2 19:56:09 UTC 2016
On 03/02/2016 01:04 PM, Xav Paice wrote:
>
>
> On 3 March 2016 at 07:52, Sean Dague <sean at dague.net
> <mailto:sean at dague.net>> wrote:
>
> On 03/02/2016 01:46 PM, Armando M. wrote:
> <snip>
> > IMO, I think that's a loophole that should be closed. We should all
> > strive to make OpenStack clouds behave alike.
>
> It might be a loophole. But it's also data. People are doing that thing
> for a reason based on customer feedback. If the general norms are that
> this is allowed, and OpenStack clouds do the opposite, they will be
> considered broken compared to the norms.
>
>
> Not the customers I've spoken with.
>
> I'm OK with doing something different to RAX, in fact some people might
> consider RAX to be broken when they see it different from us. I'm not
> keen on any cloud being considered 'broken' because of an implementation
> detail, and every cloud has some level of differences. Just take a look
> at os_client_config to see some of the differences (and the ways to make
> that easier).
++ to looking at os_client_config :)
I do a bad job of trying to communicate this every time, but I'm going
to try one more time ...
What I really want out of OpenStack clouds is this:
- A 'public' or 'northbound' network that I can choose to boot my
computer on. If I choose to boot my computer on this network, I will get
directly attached to that network. My computer will be able to know its
IP address.
- The option to create one or more 'private' networks that I can attach
my computers to.
- The option to create one or more floating ips that allocate an IP from
the 'public' or 'northbound' network but associate them with the compute
of my choice via NAT.
- A default security group that does 'sensible' things like blocking a
bunch of traffic.
- Either a second default security group that is wide-open or the option
to opt-out of having a security group associated with my computer at all.
I want all of the OpenStack clouds to do all of those things.
Why?
Because those things encompass the set of use cases that people actually
use OpenStack for.
If you don't have the ability to direct attach IPs to your computer,
there are a set of things that either don't work, or that work very
poorly. If you are running one of those things, you know it, and you
know what you need. If you are running one of those things, NAT is not a
feature, it's a bug.
If you don't have floating IPs/NAT, then you do not fit easily into the
"most of my things on private except I want to poke a little bit of
public on to one of them" model which is prevelant in the "cloud native"
thinking.
Amazingly enough, though, OpenStack can actually TODAY support all of
the above, we just have people who believe that some end users should
not be allowed to want to run the types of applications in the cloud
that they want (or need) to run.
There are some problems - most notably UI.
If you have two networks defined in a cloud, you have to specify which
network you want to boot on - and you have to do this via network id.
That's very un-user-friendly. There is no way for a user of a cloud ot
say "hey, I really never want to boot things directly on the public
network". A user CAN delete a private network that was created for them
if they don't want it - so that direction is friendly. However, a user
cannot choose to boot a computer directly on a public network if the
deployer has not allowed them to.
So we have work to do in our command line and REST API in terms of
dealing with mutli-networks and expressions of user intent. However, we
can't even begin that work as long as we persist with the idea that
there is only one "right" networking model.
I'd really like to see devstack nodes start to boot with a shared public
AND a private AND floating ips. That way we can both test all of the
possible combinations in a single cloud, and as developers we can
experience the pain that exists currently for customers in multi-network
clouds.
Also, with the security groups - why not have a "default" and an "open"
security group by default?
And finally- how about some sort of user settable preferneces somewhere?
And how about the ability to use those to have users opt in to various
networking schemes on a project-by-project basis? (Because I'm sure we
all already agree that every customer should get a domain and domain
admin in that domain and be able to create users and projects to their
heart's desire since we all love our users)
If we have a cloud with a shared public and optional private networks,
then it's conceivable that at project creation time a user could say
"hey, make me a project and let that project see the shared public
network" - or "hey, make me a project and do not let that project see
the shared public network" - that way default boot commands in each
project would attach to the right thing - and only in the honestly quite
strange situation where you actually want both and want direct routing
will you need to specify nics to bind ... but you're almost certainly ok
with that at that point because you've opted in to it as a user.
So - what do you say? Shall we make things better for our users and stop
trying to second guess their actual desires? I know that would sure make
me happy!
Monty
More information about the OpenStack-dev
mailing list