vermilionrc
vermilionrc copied to clipboard
Execution Model
What should the execution model for supervised processes be?
Some minimal features
- All environment variables are white-list only, with some default set that is always passed on, list TBD.
- We need a common platform sandboxing technique,
chroot
would be a minimum, with Linux cgroups, BSD jails, macOS sandboxes, Windows Containers, being a good target.- will we want to allow for any configuration of this?
- should we support something like
apparmor
(is there an equivalent on Windows and macOS?)
- common management strategies for auto restart, capture of stdout and stderr for logs, etc. would all be MVP requirements.
What is the process model we should follow? To answer this question let's see what we want to be true
- It should not be possible for a child process to gain access to a parent process
- A parent process should not be able to do more than start, restart, or shutdown the child (i.e. shouldn't have any way to access to the child's memory)