Добавьте отсутствующие разрешения для определенной идентификации AppPool, чтобы разрешить вызов CreateProcessWithLogonW из ASP.NET - PullRequest
1 голос
/ 06 июня 2019

TL; DR : мне нужно вызвать CreateProcessWithLogonW из моего приложения ASP.NET, размещенного на IIS, чтобы вызвать внешний исполняемый файл под другой учетной записью и делегировать ему задание.Как я могу это сделать?


Причина, по которой я не могу просто использовать Process.Start API, заключается в том, что внешний исполняемый файл имеет ряд зависимостей COM, которые необходимо настроить.Это подразумевает наличие нескольких записей в реестре и наличие у учетной записи необходимых разрешений на запуск и активацию, которые необходимо настроить с помощью конфигурации DCOM.Достаточно сказать, что это оказалось совершенно неуправляемым для каждой из идентификаций AppPool на каждом сервере, который у нас есть.

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

Теперь проблема заключается в том, как запустить этот исполняемый файл из приложения ASP.NET и запустить его под новой учетной записью (только исполняемый файл, а не весь ASP.NET).app!).

Простой вызов CreateProcessWithLogonW приводит к ошибке «Отказано в доступе», которая, как мне сказали, является следствием недостаточной привилегии удостоверения AppPool.

У меня естьискал в интернете, и я видел много ответов о том, как предоставить разрешения файловой системы для идентификаторов AppPool.Ничего о разрешениях для CreateProcessWithLogonW, за исключением изменения удостоверения на что-то другое.

Но мне все еще интересно, есть ли способ настроить удостоверение AppPool для этого?

Мне неудобно менять личность на Local Service или Local System, как было предложено в другом месте.Я беспокоюсь, что это может привести к появлению неизвестных дополнительных разрешений, которые на самом деле не нужны приложению ASP.NET, что, в свою очередь, может изменить последствия для безопасности довольно большой базы кода.

Я признаю, что, вероятно, имеюa "Вот, будь драконами !!!" тип реакции на изменение идентичности, но мне также честно интересно, почему я не могу просто добавить одно дополнительное разрешение вместо существующей идентичности?

...