PowerShell を使用して Azure の VM へのポートとエンドポイントを開放する方法How to open ports and endpoints to a VM in Azure using PowerShell

サブネットまたは仮想マシン (VM) ネットワーク インターフェイスでネットワーク フィルターを作成して、Azure で VM へのポートを開くか、エンドポイントを作成します。You open a port, or create an endpoint, to a virtual machine (VM) in Azure by creating a network filter on a subnet or a VM network interface. インバウンドとアウトバウンドの両方のトラフィックを制御するこれらのフィルターを、トラフィックを受信するリソースに接続されているネットワーク セキュリティ グループに配置します。You place these filters, which control both inbound and outbound traffic, on a network security group attached to the resource that receives the traffic.

この記事の例では、標準の TCP ポート 80 を使用するネットワーク フィルターを作成する方法を示します (適切なサービスが既に開始され、VM 上で OS ファイアウォール規則が開かれているものと仮定しています)。The example in this article demonstrates how to create a network filter that uses the standard TCP port 80 (it's assumed you've already started the appropriate services and opened any OS firewall rules on the VM).

標準の TCP ポート 80 で Web 要求を処理するように構成された VM を作成した後は、次の操作を実行できます。After you've created a VM that's configured to serve web requests on the standard TCP port 80, you can:

  1. ネットワーク セキュリティ グループを作成します。Create a network security group.

  2. トラフィックを許可するインバウンド セキュリティ規則を作成し、次の設定に値を割り当てます。Create an inbound security rule allowing traffic and assign values to the following settings:

    • [宛先ポート範囲] : 80Destination port ranges: 80

    • 発信元ポート範囲: * (すべての発信元ポートを許可)Source port ranges: * (allows any source port)

    • 優先度:65,500 より小さく、既定の包括的なインバウンド拒否規則よりも優先される値を入力します。Priority value: Enter a value that is less than 65,500 and higher in priority than the default catch-all deny inbound rule.

  3. ネットワーク セキュリティ グループと VM のネットワーク インターフェイスまたはサブネットを関連付けます。Associate the network security group with the VM network interface or subnet.

この例では単純な規則を使用して HTTP トラフィックを許可していますが、ネットワーク セキュリティ グループと規則を使用して、より複雑なネットワーク構成を作成することもできます。Although this example uses a simple rule to allow HTTP traffic, you can also use network security groups and rules to create more complex network configurations.

クイック コマンドQuick commands

ネットワーク セキュリティ グループと ACL 規則を作成するには、 最新バージョンの Azure PowerShell がインストールされている必要があります。To create a Network Security Group and ACL rules you need the latest version of Azure PowerShell installed. これらの手順は、Azure Portal を使用して実行することもできます。You can also perform these steps using the Azure portal.

Azure アカウントにログインします。Log in to your Azure account:


以下の例では、パラメーター名を独自の値に置き換えてください。In the following examples, replace parameter names with your own values. たとえば、myResourceGroupmyNetworkSecurityGroupmyVnet といったパラメーター名にします。Example parameter names included myResourceGroup, myNetworkSecurityGroup, and myVnet.

New-AzNetworkSecurityRuleConfig を使用して規則を作成します。Create a rule with New-AzNetworkSecurityRuleConfig. 次の例では、myNetworkSecurityGroupRule という名前の規則を作成して、ポート 80 での TCP トラフィックを許可します。The following example creates a rule named myNetworkSecurityGroupRule to allow tcp traffic on port 80:

$httprule = New-AzNetworkSecurityRuleConfig `
    -Name "myNetworkSecurityGroupRule" `
    -Description "Allow HTTP" `
    -Access "Allow" `
    -Protocol "Tcp" `
    -Direction "Inbound" `
    -Priority "100" `
    -SourceAddressPrefix "Internet" `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange 80

そして、次のように、New-AzNetworkSecurityGroup を使用してネットワーク セキュリティ グループを作成し、先ほど作成した HTTP 規則を割り当てます。Next, create your Network Security group with New-AzNetworkSecurityGroup and assign the HTTP rule you just created as follows. 次の例では、myNetworkSecurityGroup という名前のネットワーク セキュリティ グループを作成します。The following example creates a Network Security Group named myNetworkSecurityGroup:

$nsg = New-AzNetworkSecurityGroup `
    -ResourceGroupName "myResourceGroup" `
    -Location "EastUS" `
    -Name "myNetworkSecurityGroup" `
    -SecurityRules $httprule

ここで、ネットワーク セキュリティ グループをサブネットに割り当ててみましょう。Now let's assign your Network Security Group to a subnet. 次の例では、Get-AzVirtualNetwork を使用して、myVnet という名前の既存の仮想ネットワークを $vnet 変数に割り当てます。The following example assigns an existing virtual network named myVnet to the variable $vnet with Get-AzVirtualNetwork:

$vnet = Get-AzVirtualNetwork `
    -ResourceGroupName "myResourceGroup" `
    -Name "myVnet"

Set-AzVirtualNetworkSubnetConfig を使用して、ネットワーク セキュリティ グループをサブネットに関連付けます。Associate your Network Security Group with your subnet with Set-AzVirtualNetworkSubnetConfig. 次の例では、mySubnet という名前のサブネットをネットワーク セキュリティ グループに関連付けます。The following example associates the subnet named mySubnet with your Network Security Group:

$subnetPrefix = $vnet.Subnets|?{$_.Name -eq 'mySubnet'}

Set-AzVirtualNetworkSubnetConfig `
    -VirtualNetwork $vnet `
    -Name "mySubnet" `
    -AddressPrefix $subnetPrefix.AddressPrefix `
    -NetworkSecurityGroup $nsg

最後に、Set-AzVirtualNetwork を使用して仮想ディレクトリを更新し、変更を有効にします。Finally, update your virtual network with Set-AzVirtualNetwork in order for your changes to take effect:

Set-AzVirtualNetwork -VirtualNetwork $vnet

ネットワーク セキュリティ グループの詳細More information on Network Security Groups

このページのクイック コマンドでは、VM にフローするトラフィックの開始と実行を行うことができます。The quick commands here allow you to get up and running with traffic flowing to your VM. ネットワーク セキュリティ グループには優れた機能が多数用意されており、リソースへのアクセスをきめ細かく制御できます。Network Security Groups provide many great features and granularity for controlling access to your resources. 詳細については、 ネットワーク セキュリティ グループと ACL 規則の作成に関するページをご覧ください。You can read more about creating a Network Security Group and ACL rules here.

高可用性 Web アプリケーション用に、Azure Load Balancer の背後に VM を配置する必要があります。For highly available web applications, you should place your VMs behind an Azure Load Balancer. ロード バランサーは、トラフィックをフィルターできるネットワーク セキュリティ グループとともに、VM のトラフィックを分散します。The load balancer distributes traffic to VMs, with a Network Security Group that provides traffic filtering. 詳細については、Azure の Linux 仮想マシンを負荷分散して高可用性アプリケーションを作成する方法に関するページをご覧ください。For more information, see How to load balance Linux virtual machines in Azure to create a highly available application.

次の手順Next steps

この例では、HTTP トラフィックを許可する単純な規則を作成します。In this example, you created a simple rule to allow HTTP traffic. より精密な環境の作成については、次の記事で確認できます。You can find information on creating more detailed environments in the following articles: