用于 Windows VM 的 Azure Resource Manager 模板中的访问权限和安全性

可能需要通过 Internet 或与 Azure 建立的 VPN/Express Route 连接才能访问托管在 Azure 中的应用程序。 在音乐应用商店应用程序示例中,网站通过公共 IP 地址在 Internet 上提供访问。 建立访问方式后,应该保护对应用程序的连接,以及对虚拟机资源本身的访问。 这种访问安全性是通过网络安全组提供的。

本文档详细说明如何在示例 Azure Resource Manager 模板中保护音乐应用商店应用程序。 所有依赖项和独特配置都已突出显示。 为了获得最佳体验,请将一个解决方案实例预先部署到 Azure 订阅,然后将它与 Azure Resource Manager 模板配合运行。 可以在 Windows 上的音乐应用商店部署中找到完整模板。

公共 IP 地址

若要提供对 Azure 资源的公共访问,可以使用公共 IP 地址。 可以使用静态或动态 IP 地址来配置公共 IP 地址。 如果使用动态地址,当虚拟机被停止和解除分配时,系统将删除该地址。 当计算机重新启动时,系统可能为它分配不同的公共 IP 地址。 若要防止 IP 地址更改,可以使用保留 IP 地址。

可通过使用 Visual Studio 中的“添加新资源向导”或者在模板中插入有效 JSON,将公共 IP 地址添加到 Azure Resource Manager 模板中。

单击以下链接可查看 Resource Manager 模板中的 JSON 示例 – 公共 IP 地址

Note

必须修改下载的模板,以适应 Azure 中国云环境。 例如,替换某些终结点(将“blob.core.windows.net”替换为“blob.core.chinacloudapi.cn”,将“cloudapp.azure.com”替换为“chinacloudapp.cn”,将“database.windows.net”替换为“database.chinacloudapi.cn”);更改某些不受支持的 VM 映像;更改某些不受支持的 VM 大小。

{
  "apiVersion": "2015-06-15",
  "type": "Microsoft.Network/publicIPAddresses",
  "name": "[variables('publicIpAddressName')]",
  "location": "[resourceGroup().location]",
  "dependsOn": [],
  "tags": {
    "displayName": "public-ip"
  },
  "properties": {
    "publicIPAllocationMethod": "Dynamic",
    "dnsSettings": {
      "domainNameLabel": "[parameters('publicipaddressDnsName')]"
    }
  }
}

公共 IP 地址可与虚拟网络适配器或负载均衡器关联。 在本示例中,由于音乐应用商店网站的负载在多个虚拟机之间均衡,因此公共 IP 地址已附加到负载均衡器。

单击以下链接可查看 Resource Manager 模板中的 JSON 示例 – 公共 IP 地址与负载均衡器的关联

"frontendIPConfigurations": [
  {
    "properties": {
      "publicIPAddress": {
        "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]"
      }
    },
    "name": "LoadBalancerFrontend"
  }
]

Azure 门户中显示的公共 IP 地址。 请注意,公共 IP 地址与负载均衡器而不是虚拟机关联。 本系列教程的下一篇文档详细介绍了网络负载均衡器。

公共 IP 地址

有关 Azure 公共 IP 地址的详细信息,请参阅 Azure 中的 IP 地址

网络安全组

与 Azure 资源建立访问后,应该对此访问进行限制。 对于 Azure 虚拟机,可以使用网络安全组来实现保护访问的目的。 在音乐应用商店应用程序示例中,除了通过端口 80 进行的 http 访问和通过端口 3389 进行的 RDP 访问以外,所有对虚拟机的访问都受到限制。 可通过使用 Visual Studio 中的“添加新资源向导”或者在模板中插入有效 JSON,将网络安全组添加到 Azure Resource Manager 模板中。

单击以下链接可查看 Resource Manager 模板中的 JSON 示例 – 网络安全组

{
  "apiVersion": "2016-03-30",
  "type": "Microsoft.Network/networkSecurityGroups",
  "name": "[variables('networkSecurityGroup')]",
  "location": "[resourceGroup().location]",
  "tags": {
    "displayName": "network-security-group"
  },
  "properties": {
    "securityRules": [
      {
        "name": "http",
        "properties": {
          "description": "http endpoint",
          "protocol": "Tcp",
          "sourcePortRange": "*",
          "destinationPortRange": "80",
          "sourceAddressPrefix": "*",
          "destinationAddressPrefix": "*",
          "access": "Allow",
          "priority": 100,
          "direction": "Inbound"
        }
      },
      ........<truncated> 
    ]
  }
},

在本示例中,网络安全组与虚拟网络资源中声明的子网对象关联。

单击以下链接可查看 Resource Manager 模板中的 JSON 示例 – 网络安全组与虚拟网络的关联

"subnets": [
  {
    "name": "[variables('subnetName')]",
    "properties": {
      "addressPrefix": "10.0.0.0/24",
      "networkSecurityGroup": {
        "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroup'))]"
      }
    }
  }
]

Azure 门户中的网络安全组如下所示。 请注意,NSG 可与子网和/或网络接口关联。 在本例中,NSG 与子网关联。 在此配置中,入站规则应用到与子网连接的所有虚拟机。

网络安全组

有关网络安全组的深入信息,请参阅什么是网络安全组

后续步骤


步骤 3:Azure Resource Manager 模板的可用性和缩放