Add taint state tracking for OSes and Nodes.
Emulab can now propagate OS taint traits on to nodes that load these OSes. The primary reason for doing this is for loading images which require special treatment of the node. For example, an OS that has proprietary software, and which will be used as an appliance (blackbox) can be marked (tainted) as such. Code that manages user accounts on such OSes, along with other side channel providers (console, node admin, image creation) can key off of these taint states to prevent or alter access. Taint states are defined as SQL sets in the 'os_info' and 'nodes' tables, kept in the 'taint_states' column in both. Currently these sets are comprised of the following entries: * usermode: OS/node should only allow user level access (not root) * blackbox: OS/node should allow no direct interaction via shell, console, etc. * dangerous: OS image may contain malicious software. Taint states are inherited by a node from OSes it loads during the OS load process. Similarly, they are cleared from nodes as these OSes are removed. Any taint state applied to a node will currently enforce disk zeroing. No other tools/subsystems consider the taint states currently, but that will change soon. Setting taint states for an OS has to be done via SQL presently.
Showing with 393 additions and 3 deletions