在经典部署模型中使用 PowerShell 管理终结点访问控制列表

可以使用 Azure PowerShell 或在管理门户中为终结点创建和管理网络访问控制列表(ACL)。 在本主题中,你将找到可以使用 PowerShell 完成的 ACL 常见任务的过程。 有关 Azure PowerShell cmdlet 的列表,请参阅 Azure 管理 Cmdlet。 有关 ACL 的详细信息,请参阅 什么是网络访问控制列表(ACL)?。 如果要使用管理门户来管理访问控制列表,请参阅 如何设置虚拟机的终结点

使用 Azure PowerShell 管理网络 ACL

可以使用 Azure PowerShell cmdlet 创建、删除和配置(set)网络访问控制列表(ACL)。 我们提供了一些使用 PowerShell 配置 ACL 的方法的一些示例。

若要检索 ACL PowerShell cmdlet 的完整列表,可以使用以下任一项:

Get-Help *AzureACL*
Get-Command -Noun AzureACLConfig

使用允许从远程子网进行访问的规则创建网络 ACL

下面的示例演示了创建包含规则的新 ACL 的方法。 然后,此 ACL 将应用到虚拟机终结点。 以下示例中的 ACL 规则将允许从远程子网进行访问。 若要为远程子网创建具有允许规则的新网络 ACL,请打开 Azure PowerShell ISE。 复制并粘贴以下脚本,使用自己的值配置脚本,然后运行脚本。

  1. 创建新的网络 ACL 对象。

     $acl1 = New-AzureAclConfig
    
  2. 设置允许从远程子网进行访问的规则。 在下面的示例中,将规则 100 (优先级高于规则 200 和更高)设置为允许远程子网 10.0.0.0/8 访问虚拟机终结点。 把值替换为你自己的配置要求。 名称“SharePoint ACL 配置”应替换为要调用此规则的友好名称。

     Set-AzureAclConfig –AddRule –ACL $acl1 –Order 100 `
         –Action permit –RemoteSubnet "10.0.0.0/8" `
         –Description "SharePoint ACL config"
    
  3. 对于其他规则,请重复运行 cmdlet,将其中的值替换为您自己的配置要求。 请务必更改规则顺序,以反映希望应用规则的顺序。 较低的规则编号优先于较高的数字。

     Set-AzureAclConfig –AddRule –ACL $acl1 –Order 200 `
         –Action permit –RemoteSubnet "157.0.0.0/8" `
         –Description "web frontend ACL config"
    
  4. 接下来,可以创建新终结点(添加)或为现有终结点设置 ACL(Set)。 在此示例中,我们将添加一个名为“web”的新虚拟机终结点,并使用 ACL 设置更新虚拟机终结点。

     Get-AzureVM –ServiceName $serviceName –Name $vmName `
     | Add-AzureEndpoint –Name "web" –Protocol tcp –Localport 80 - PublicPort 80 –ACL $acl1 `
     | Update-AzureVM
    
  5. 接下来,合并 cmdlet 并运行脚本。 对于此示例,组合的 cmdlet(命令行工具)如下所示:

     $acl1 = New-AzureAclConfig
     Set-AzureAclConfig –AddRule –ACL $acl1 –Order 100 `
         –Action permit –RemoteSubnet "10.0.0.0/8" `
         –Description "SharePoint ACL config"
     Set-AzureAclConfig –AddRule –ACL $acl1 –Order 200 `
         –Action permit –RemoteSubnet "157.0.0.0/8" `
         –Description "web frontend ACL config"
     Get-AzureVM –ServiceName $serviceName –Name $vmName `
     |Add-AzureEndpoint –Name "web" –Protocol tcp –Localport 80 - PublicPort 80 –ACL $acl1 `
     |Update-AzureVM
    

删除允许从远程子网进行访问的网络 ACL 规则

下面的示例演示了删除网络 ACL 规则的方法。 若要删除具有远程子网允许规则的网络 ACL 规则,请打开 Azure PowerShell ISE。 复制并粘贴以下脚本,使用自己的值配置脚本,然后运行脚本。

  1. 第一步是获取虚拟机终结点的网络 ACL 对象。 然后你将删除 ACL 规则。 在这种情况下,我们通过规则 ID 删除它。 这只会从 ACL 中删除规则 ID 0。 它不会从虚拟机终结点中删除 ACL 对象。

     Get-AzureVM –ServiceName $serviceName –Name $vmName `
     | Get-AzureAclConfig –EndpointName "web" `
     | Set-AzureAclConfig –RemoveRule –ID 0 –ACL $acl1
    
  2. 接下来,必须将网络 ACL 对象应用到虚拟机终结点并更新虚拟机。

     Get-AzureVM –ServiceName $serviceName –Name $vmName `
     | Set-AzureEndpoint –ACL $acl1 –Name "web" `
     | Update-AzureVM
    

从虚拟机终结点中删除网络 ACL

在某些情况下,可能需要从虚拟机终结点中删除网络 ACL 对象。 为此,请打开 Azure PowerShell ISE。 复制并粘贴以下脚本,使用自己的值配置脚本,然后运行脚本。

    Get-AzureVM –ServiceName $serviceName –Name $vmName `
    | Remove-AzureAclConfig –EndpointName "web" `
    | Update-AzureVM

后续步骤

什么是网络访问控制列表(ACL)?