I've been doing some investigation into the "Limiting the impact of
a compromised chassis" issue described in ovn/TODO. These are some initial
thoughts, posting here for feedback and any other ideas folks might have
about how we should go about solving this part of the issue.

The fact that we're heading towards using etcd for OVN might make some
of this moot, on the other hand it might be some time before that happens
and this security issue will need to be addressed in order for OVN to be
viable in some use cases.

One problem that needs to be solved for any potential solution to the
compromised chassis issue is how to determine the identity of clients
connecting to the OVN southbound DB server. For example, it would be
desirable for ovn-northd and ovn-sbctl to have one set of access privileges
for reading and updating the SB database while ovn-controller and
ovn-controller-vtep have a different and more limited set of access
privileges. In order to implement this it would be necessary to know for
each transaction the type of client attempting it. For more fine-grained
access control, it will also be necessary to determine the actual identity
(e.g. chassis name or UUID) of each connected client.

Since ovsdb-server already has support for SSL client authentication, one
semi-obvious approach might be to:
   - Configure the SB ovsdb-server to only accept unix and SSL connections
     (ovn-northd and ovn-sbctl would likely use unix:file connections, where
     access can be controlled via file system permissions, whereas 
ovn-controller
     instances would use SSL).
   - Generate signed client certificates for each chassis/gateway, encoding the
     chassis/gateway name in the certificate's "organizational unit" field.
   - In cases where ovn-northd or ovn-sbctl might have to connect to the SB
     database server over a network, client certificates could be generated
     with e.g. the OU field set to "ovn-northd" or "ovn-sbctl" as appropriate.
   - For each new SSL connection, ovsdb-server would record the client type
     and name contained in the client-provided certificate.
   - The recorded client type and name could then be used in a (to be defined
     separately) ACL implementation.

Some questions:

    - Will this work, and are there any obvious holes?
    - Might PKI management be too burdensome in large deployments?
    - Is there a better way?

Thanks,

    Lance
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to