Можно ли предотвратить.net CLR от запуска любого неподписанного кода?
Фон (упрощенно)
Я использую непрерывную интеграцию и развертывание на своих производственных серверах. Например, у меня есть приложение, которое отслеживает Team City и автоматически развертывает встроенные пакеты в IIS.
Для этого кода (который мы пишем) я хочу защитить (или сделать более трудным) человека в середине, модифицирующего сборки на пути к рабочим серверам. Если кому-то удалось изменить сборки (либо в пути, либо локально на машине), я хочу защитить (или усложнить) выполнение этих сборок.
Мы уже применяем целый ряд мер безопасности для защиты от такого рода вещей (например, агенты, которые отслеживают критические хэши файлов, чтобы убедиться, что они не изменились, аудит, минимальные права пользователя и т. Д.).
Мы хотим увеличить нашу push-частоту, но стороннее программное обеспечение, которое мы используем для мониторинга хэшей файлов, скажем, "громоздко для обновления".
Вопрос
Предположим, что я доверяю ОС (включая.net CLR). Мне интересно, смогу ли я встроить систему безопасности для подписи кода в CLR. Подобно тому, как PowerShell не позволяет запускать неподписанные сценарии PowerShell, возможно.
Можно ли это сделать, то есть настроить CLR для запуска только подписанных сборок из набора открытых ключей из белого списка?
Пожалуйста, дайте мне знать, если это плохая идея!