1

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

IIS 上将运行 3party 站点,这些站点不应访问 RoleEnviroment 的部署设置。我有什么方法可以限制对 IIS 站点的访问,使其无法在 Azure 上使用 RoleEnviroment?

小更新:

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

不能在运行时设置它,因为这也是 3party 网站应该找不到的东西。

4

1 回答 1

0

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

  • 对第 3 方程序集执行完整性检查/扫描,如果他们引用/使用 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 参考,并在此处浏览指南

于 2013-06-07T09:34:24.927 回答