Разные пользователи хранят данные на сервере. Хочется дать пользователям еще и возможность немного управлять собственными данными по собственной логике. (например: при аплоаде нового файла или каждые N минут вызывать пользовательский скрипт, который, например, посчитает количество файлов и общий размер и запишет это в какой-то другой файл).
Какой язык программирования - не принципиально.
Главное требование - это должно быть безопасно, в том числе:
- Скрипт не может получить root доступ или доступ к системным файлам
- Скрипт не может получить доступ к файлам других пользователей
- Скрипт не может слишком сильно нагружать машину (отжирать 100% CPU или работать вечно, вместо 3-5 секунд), расфоркиваться в тысячу процессов, демонизироваться итд
- Скрипт (тут я не уверен) не должен иметь возможность работать с сетью
- Решение должно быть легковесным. Наверное, все предыдущие пункты можно удовлетворить если запускать скрипт внутри docker контейнера, но это, кмк, отожрет очень много ресурсов
Пока что на ум приходит сочетание chroot / timeout / ulimit / unshare - насколько это хороший вариант? (но не нравится идея, что придется с юзерскими данными хранить libc и другие либы для скрипта - это как-то можно красиво сделать? разрешить доступ только к /lib/, /usr/lib/ и /home/username/data).
Насколько сильный оверхед дает Docker, по сравнению с просто запуском в chroot? А если одновременно будет 100 lambda функций исполняться (100 процессов не проблема даже для простой виртуалки, но вот 100 докер-контейнеров будет, наверное, требовать огромных ресурсов?).
Может быть есть и другой вариант какой-то? А множество всяких провайдеров (Amazon, Scaleway) - они все свой велосипед изобретают или есть какое-то готовое решение для этого?