Безопасно ли запускать пользовательский код C# в (изолированной) функции Azure?

Я работаю над какой-то архитектурой плагинов, где люди могут сами отправлять небольшие фрагменты кода C#, и он будет выполняться каждый час в Azure.

Это безопасно или они могут легко поставить под угрозу всю вашу среду Azure? Любые другие обходные пути?

Я думал об использовании IronPython - я думаю, там проще установить жесткие границы, но на самом деле я предпочитаю использовать С#.

Обновить

Просто для ясности: меня в основном беспокоит безопасность, а не стоимость Azure. Это будет что-то вроде зарезервированного экземпляра или, по крайней мере, что-то, где стоимость ограничена.

Риск того, что кто-то загрузит биткойн-майнер, а я узнаю об этом через два дня, — это то, с чем я могу смириться.

Чего я не могу вынести, так это того, что этот человек на самом деле получает доступ ко всем вещам, связанным с Azure, таким как учетные данные и т. д.


person Dirk Boer    schedule 08.02.2021    source источник
comment
Это небезопасно. В лучшем случае вы подвергнетесь DDoS-атаким, в худшем — станете кем-то другим биткойн-майнером и будете получать зарплату в пару тысяч баксов. Хотя, если вы открываете доступ только для определенной группы людей в вашей компании - ничего страшного, если проконтролируете их действия.   -  person eocron    schedule 09.02.2021
comment
См. stackoverflow.com/questions/36107551/.   -  person Ian Mercer    schedule 09.02.2021
comment
Привет @eocron, это будет зарезервированный экземпляр, поэтому стоимость будет ограничена. Это некритический процесс, поэтому стоимость того, чтобы кто-то загрузил майнер и обнаружил его через день, а также удалил + заблокировал этого пользователя, не является проблемой. Я больше про безопасность.   -  person Dirk Boer    schedule 09.02.2021
comment
Привет @IanMercer, спасибо за ответ! Это больше связано с Azure конкретно.   -  person Dirk Boer    schedule 09.02.2021
comment
Any other workarounds? Дайте каждому клиенту собственную песочницу для игры. Они могут скомпрометировать ее, если захотят, но если они там одни...   -  person mjwills    schedule 09.02.2021


Ответы (1)


У него есть доступ ко всем, к чему вы предоставили доступ функции Azure: он может считывать все переменные среды, строки подключения и т. д.; через них он может получить доступ к базе данных или хранилищу ключей и узнать другие секреты; у него может быть управляемая идентификация, которая дает ему другие возможности; у него может быть доступ через брандмауэры, которые в противном случае заблокировали бы его из-за того, что он находится на доверенном IP-адресе Azure; ... и т.д.

Теперь большинство из этих вещей должны быть запрещены конфигурацией, но вы будете полагаться на все будущие изменения в вашей среде приложения-функции любым разработчиком или специалистом по devops, чтобы убедиться, что они ничего не раскрывают.

Это также может повредить внешние службы, на которые вы полагаетесь, и заблокировать вас из-за ограничений скорости.

Итог: это не очень хорошая идея.

person Ian Mercer    schedule 08.02.2021
comment
Кроме того, я хотел бы добавить к этому ответу - поиск бэкдоров в таких системах на самом деле является оплачиваемой работой. Таким образом, stackoverflow, вероятно, не лучшее место для поиска решения проблем проникновения в систему безопасности. Если вирусы можно внедрять под рут-правами на простых системах просто переставляя стек перед фатальными ошибками, то что им мешает сделать это в облаке? - person eocron; 09.02.2021