如何以编程方式编辑我的 Azure 辅助角色的 ServiceConfiguration 文件的 NetworkConfiguration 节点?

How can I Programatically edit the NetworkConfiguration node of the ServiceConfiguration file for my Azure Worker Roles?

我一直在阅读有关阻止 IP 地址对我发布的服务发起攻击的信息,在本例中是辅助角色。我添加了一个 NetworkConfiguration 来帮助实现这个目标,它似乎工作得很好。

现在我的问题是,如何从我的 运行 程序向该文件添加节点?

我计划保留日志,当某个 IP 发送大量错误请求时,我希望我的程序更新黑名单 IP 地址列表。如果我的端口受到暴力攻击或 dns 攻击,我希望可以将黑名单加入黑名单,我手动超时编辑此列表是不合理的。

  1. 如何在代码中加载配置文件以使用 XDocument 编辑 该节点中的值?
  2. 这些变化会传播到另一个吗 实例 运行 自动?
  3. 有没有其他方法可以完成 这个目标?

我相信你可以。可以通过服务管理更新对 ServiceConfig(不是服务定义)的更改 API。

API 定义在这里:https://msdn.microsoft.com/en-us/library/azure/ee460809.aspx

如果您使用的是 .NET,您可能希望使用 Nuget 包之一来协助完成此操作:https://www.nuget.org/packages/Microsoft.WindowsAzure.Management.Compute/

How can I load the config file in code to use XDocument to edit the values in that node?

为此,您需要获取云服务属性并从返回的 XML 中提取配置设置。您需要通过调用 Get Cloud Service Properties Service Management API operation (Please look for appropriate method if you are using Azure Management Library) 来完成。如果您正在使用 REST API,请记住返回的配置文件以 Bas64 编码,因此您需要将其转换为字符串,然后才能加载 XML.

Will these changes propagate out to the other instances running automatically?

进行更改后,您需要执行 Change Deployment Configuration 操作才能应用更改。应用这些更改后,它们将自动应用到所有实例。

Is there another way to accomplish this goal?

据我所知,这是以编程方式完成此操作的唯一方法。