PowerShell を使用して VM へのポートとエンドポイントを開放する方法

適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット

サブネットまたは仮想マシン (VM) ネットワーク インターフェイスでネットワーク フィルターを作成して、Azure で VM へのポートを開くか、エンドポイントを作成します。 インバウンドとアウトバウンドの両方のトラフィックを制御するこれらのフィルターを、トラフィックを受信するリソースに接続されているネットワーク セキュリティ グループに配置します。

この記事の例では、標準の TCP ポート 80 を使用するネットワーク フィルターを作成する方法を示します (適切なサービスが既に開始され、VM 上で OS ファイアウォール規則が開かれているものと仮定しています)。

標準の TCP ポート 80 で Web 要求を処理するように構成された VM を作成した後は、次の操作を実行できます。

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

  2. トラフィックを許可するインバウンド セキュリティ規則を作成し、次の設定に値を割り当てます。

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

    • 発信元ポート範囲: * (すべての発信元ポートを許可)

    • 優先度:65,500 より小さく、既定の包括的なインバウンド拒否規則よりも優先される値を入力します。

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

この例では単純な規則を使用して HTTP トラフィックを許可していますが、ネットワーク セキュリティ グループと規則を使用して、より複雑なネットワーク構成を作成することもできます。

クイック コマンド

ネットワーク セキュリティ グループと ACL 規則を作成するには、 最新バージョンの Azure PowerShell がインストールされている必要があります。 これらの手順は、Azure Portal を使用して実行することもできます。

Azure アカウントにログインします。

Connect-AzAccount

以下の例では、パラメーター名を独自の値に置き換えてください。 たとえば、myResourceGroupmyNetworkSecurityGroupmyVnet といったパラメーター名にします。

New-AzNetworkSecurityRuleConfig を使用して規則を作成します。 次の例では、myNetworkSecurityGroupRule という名前の規則を作成して、ポート 80 での TCP トラフィックを許可します。

$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 規則を割り当てます。 次の例では、myNetworkSecurityGroup という名前のネットワーク セキュリティ グループを作成します。

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

ここで、ネットワーク セキュリティ グループをサブネットに割り当ててみましょう。 次の例では、Get-AzVirtualNetwork を使用して、myVnet という名前の既存の仮想ネットワークを $vnet 変数に割り当てます。

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

Set-AzVirtualNetworkSubnetConfig を使用して、ネットワーク セキュリティ グループをサブネットに関連付けます。 次の例では、mySubnet という名前のサブネットをネットワーク セキュリティ グループに関連付けます。

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

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

最後に、Set-AzVirtualNetwork を使用して仮想ディレクトリを更新し、変更を有効にします。

Set-AzVirtualNetwork -VirtualNetwork $vnet

ネットワーク セキュリティ グループの詳細

このページのクイック コマンドでは、VM にフローするトラフィックの開始と実行を行うことができます。 ネットワーク セキュリティ グループには優れた機能が多数用意されており、リソースへのアクセスをきめ細かく制御できます。 詳細については、 ネットワーク セキュリティ グループと ACL 規則の作成に関するページをご覧ください。

高可用性 Web アプリケーション用に、Azure Load Balancer の背後に VM を配置する必要があります。 ロード バランサーは、トラフィックをフィルターできるネットワーク セキュリティ グループとともに、VM のトラフィックを分散します。 詳細については、Azure の Linux 仮想マシンを負荷分散して高可用性アプリケーションを作成する方法に関するページをご覧ください。

次のステップ

この例では、HTTP トラフィックを許可する単純な規則を作成します。 より精密な環境の作成については、次の記事で確認できます。