如何限制Azure上的RoleEnviroment对IIS网站的访问?

时间:2013-06-07 08:55:15

标签: azure

我有一个设置,其中webrole在IIS上托管多个网站,通过存储帐户中的配置进行动态部署。

IIS上将运行3方站点,这些站点无法访问RoleEnviroment中的部署设置。有没有办法让我限制IIS站点的访问权限,以便它无法在Azure上使用RoleEnviroment?

Alittle Update:

将重要设置移出配置文件可能会有效。但是<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=c1azuretests;..." />

怎么样?

不能在运行时设置,因为这也是3方网站无法找到的东西。

1 个答案:

答案 0 :(得分:0)

有趣而聪明的方法。虽然没有直接的方法来限制对RoleEnvironment的访问,但有一些解决方法:

  • 对第三方程序集执行完整性检查/扫描,如果他们引用/使用RoleEnvironment(不是我最喜欢的,但仍然是可行的解决方案),则拒绝执行
  • 将配置设置从云设置文件移到Azure存储表(我更喜欢这个)。现在潜在的攻击者可以访问角色名称和配置,但无法访问设置。

这两种方法都有利有弊,但我倾向于喜欢第二种方法更好。令人怀疑的是哪一个涉及更多的代码要编写,但在任何一种情况下,您编写的代码都是可重用的。第二种方法的好处是更大更好。

<强>更新

当我说配置设置移动到Azure表而不是配置设置时,我指的是所有配置设置。所以你的存储连接字符串也会存在。而且您不必在代码中对它们进行硬编码,而是从Azure Table中读取它们。这还有一些其他的轻微影响,例如您必须在Azure表存储中为这些设置实现监视系统,以确保在表中更新它们时运行的代码中更新它们。就像在更改正在运行的服务的配置时以自动方式一样。

我也不明白你为什么just deploy a new package with changed setting.,因为你可以change settings while service is running without redeploying the whole service package!查看API Reference herewalk through guide here