Azure Private Subnetの概要、作成、変更手順(Portal、CLI、PowerShell)

2023-11-18Azure,Network Security Groups,PowerShell/Azure CLI,Virtual Network

Azure Private Subnet(プライベートサブネット)について、簡単にまとめました。

Azure Private Subnetの概要から、デプロイ手順、設定確認、仮想マシンからインターネットへアクセスした場合の動作確認までを紹介しています。
また、Azure CLIやAzure PowerShellを利用した、Azure Private Subnetの既定の送信アクセス設定の確認、追加、設定変更の手順も紹介しています。

※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンと表記しています。
※本記事では、Network Security Groups(ネットワーク セキュリティ グループ)をNSGと表記しています。

目次 

スポンサーリンク

Azure Private Subnet(プライベートサブネット)の概要

Azure Private Subnetとは既定の送信アクセスが無効化されたサブネットのこと

既定の送信アクセスを利用したインターネットへのアウトバウンド通信ができないサブネットを、Azure Private Subnetといいます。

既定の送信アクセスとは、明示的にパブリックIPアドレスを割り当てなくても、インターネットへのアクセスを可能にする仕組みのことを指します。
既定の送信アクセスが有効な場合は、Azureが既定の送信パブリックIPアドレスを自動的に割り当てるために、インターネットへのアクセスができました。

2026年3月までは、既定のアウトバウンドアクセスが有効な状態が既定の選択となっていました。
また、NSG(ネットワーク セキュリティ グループ)の既定の規則では、サブネットからインターネットへの送信は許可されています。
そのため、仮想マシンにパブリックIPアドレスを明示的に割り当てなくても、インターネットへのアクセスが可能でした。

Azure での既定の送信アクセス

Azure Private Subnetでは、既定の送信アクセスが無効化されています。
そのため、Azureが既定の送信パブリックIPアドレスを割り当てを行いません。
Azure Private Subnetを使用することで、意図しない仮想マシンからのインターネットへのアクセスを防ぐことができます。

2026年3月31日以降に作成したサブネットは、既定の送信が無効化されています。
Azure Private Subnetにある仮想マシンからインターネットアクセスするためには、Azure NAT Gatewayなどの明示的なアウトバウンド接続手段を構成する必要があります。

※既定の送信アクセスは、NSGのデフォルト規則(AllowInternetOutBound)とは関係なく機能します。
※2026年3月31日以降、新規に作成される仮想ネットワークのサブネットは既定でAzure Private Subnetとなりますが、既存の仮想ネットワークの設定には影響しません。

Private Subnetにある仮想マシンからWindows Updateやインターネットアクセスはできない

これまでは、Azure NAT Gatewayなどを用意しなくてもインターネットへアクセスできましたが、Private Subnetではそれができません。
Azure NAT Gatewayなどをサブネットに構成していない場合、仮想マシンなどからインターネットへのアウトバウンド通信はできません。
そのため、Windows Update、必要なパッケージのダウンロード、ライセンス認証などができなくなります。
Private Subnetを利用する場合は、あらかじめAzure NAT Gatewayなどの明示的な送信接続手段を構成しておく必要があります。

Azure Private Subnetからインターネットへ通信するためには接続方法を追加する必要がある

インターネットへのアウトバウンド通信を許可するには、明示的に接続方法を追加する必要があります。
多くのシナリオではAzure NAT Gatewayの利用が推奨されています。

明示的な送信接続の方法を追加する

    • NAT Gateway
    • Azure Firewall
    • Azure Load Balancerのアウトバウンド規則
    • 仮想マシンに割り当てたパブリックIPアドレス

明示的に接続方法を追加することで、Private Subnetに接続された仮想マシンからインターネットへのアクセスができるようになります。

送信アクセスの既定設定がどのように、またいつ提供されるか

仮想アプライアンスやAzure Firewall、Azure NAT Gateway、パブリックIPアドレス、ロードバランサー(アウトバウンドルール)の順で判断されます。

Azure Private Subnetに変更できる(既定の送信アクセスの有効無効化が可能)

既定の送信アクセスが有効になっているサブネットを、Azure Private Subnetに変更することもできます。
Azure Private Subnetの既定の送信アクセスを有効化することもできます。
ただし、仮想マシンへの反映には、仮想マシンの停止と割り当て解除が必要となります。

Azure での既定の送信アクセス

Azure Private Subnet(プライベートサブネット)のデプロイ手順

Azure Portalを利用して、仮想ネットワークと同時にPrivate Subnetをデプロイします。

今回作成した仮想ネットワークとサブネットの設定値

作成した仮想ネットワークとサブネットの設定内容です。
1つの仮想ネットワーク内に、Private Subnetとして既定の送信アクセスを無効にしたサブネットと、Nonprivate Subnetとして既定の送信アクセスを有効にしたサブネットの2つを作成しています。

仮想ネットワークとサブネットの設定値
仮想ネットワークの設定
 仮想ネットワーク名 vnet-1
 リージョン Japan East
 リソースグループ rg-01
Private Subnetの設定
 サブネット名 snet-priv-01
 開始アドレス 10.0.0.0
 サイズ /24
 プライベート サブネットを有効にする (既定の送信アクセスなし) 有効
Nonprivate Subnetの設定
 サブネット名 snet-pub-01
 開始アドレス 10.0.1.0
 サイズ /24
 プライベート サブネットを有効にする (既定の送信アクセスなし) 無効

※2026年3月30日以前に作成された場合のように、既定の送信アクセスが有効になっているサブネットをNonprivate Subnetとして表記しています。

仮想ネットワークと同時にPrivate Subnetをデプロイ

新規に仮想ネットワークとサブネットをデプロイします。

仮想ネットワークをデプロイ
仮想ネットワークを表示します。
新しい仮想ネットワークの作成を選択します。
新しい仮想ネットワークを作成(Azure Private Subnetの作成手順)
基本情報の設定です。
インスタンスの詳細で、仮想ネットワーク名などを設定します。
仮想ネットワーク作成時の基本情報設定(Azure Private Subnetの作成手順)

セキュリティの設定画面が表示されます。
セキュリティ設定は、すべてのチェックを外した状態で次に進みます。

※セキュリティ設定の画面では、仮想ネットワークに適用できる有料のセキュリティ サービスを有効にできます。

仮想ネットワーク作成時のセキュリティ設定(Azure Private Subnetの作成手順)
アドレス空間の設定画面です。
defaultとなっているサブネットを選択します。
仮想ネットワーク作成時のアドレス空間初期設定画面(Azure Private Subnetの作成手順)
サブネットの編集画面が表示されます。
名前を変更します。
Private Subnetを構成する場合は、プライベートサブネットの設定にチェックが入っていることを確認します。
サブネットの編集を保存します。
アドレス空間でのサブネット編集画面(Azure Private Subnetの作成手順)
サブネット変更後のアドレス空間設定画面(Azure Private Subnetの作成手順)
今回はNonprivate Subnetを追加します。
サブネットの追加を選択します。
名前を設定します。
プライベートサブネットを有効にするのチェックを外します。
追加を選択します。
アドレス空間へサブネット追加(Azure Private Subnetの作成手順)
Nonprivate Subnet追加時の設定画面(Azure Private Subnetの作成手順)
サブネットの設定が反映されていることを確認します。
レビューと作成を選択します。
サブネット追加後のアドレス空間設定画面(Azure Private Subnetの作成手順)

確認画面です。
サブネットの設定で、プライベートサブネットが有効か無効かを確認します。
作成を選択します。

仮想ネットワーク作成時の確認画面(Azure Private Subnetの作成手順)

作成したサブネットのPrivate Subnet設定を確認

作成したサブネットのPrivate Subnet設定を確認します。

サブネットの設定を確認
仮想ネットワークにあるサブネットのメニューを選択します。
作成したサブネットを選択します。
仮想ネットワークに属するサブネット一覧(Azure Private Subnetの作成手順)

Private Subnetの場合は、プライベートサブネットを有効にするにチェックが入っていることが確認できます。
逆にNonprivate Subnetの場合は、プライベートサブネットを有効にするにチェックが入っていません。

※チェックを外すことによって、Private SubnetをNonprivate Subnetに変更することができます。逆にNonprivate SubnetをPrivate Subnetに変更することもできます。
※チェックの有無を変更した場合、仮想マシンの再割り当て(再起動)が必要となります。

【Private Subnetの場合】Private Subnetの設定画面(Azure Private Subnetの作成手順)
【Nonprivate Subnetの場合】Nonprivate Subnetの設定画面(Azure Private Subnetの作成手順)

ARMテンプレートでPrivate Subnetの設定を確認

仮想ネットワークのARMテンプレートでサブネットの設定を確認します。
Private Subnetの設定は、defaultOutboundAccessで確認できます。

    • defaultOutboundAccessがfalse の場合 : Azure Private Subnet
    • defaultOutboundAccessがtrueもしくは項目が存在しない場合 : Nonprivate Subnet
サブネットの設定を確認
                “subnets": [

                    {
                        “name": “snet-priv-01",
                        “id": “[resourceId('省略’)]",
                        “properties": {
                            “addressPrefixes": [
                                “10.0.0.0/24"
                            ],
                            “delegations": [],
                            “privateEndpointNetworkPolicies": “Disabled",
                            “privateLinkServiceNetworkPolicies": “Enabled",
                            “defaultOutboundAccess": false #Private Subnetが有効化されている場合
                        }
                    },
                    {
                        “name": “snet-pub-01",
                        “id": “[resourceId('省略’)]",
                        “properties": {
                            “addressPrefixes": [
                                “10.0.1.0/24"
                            ],
                            “delegations": [],
                            “privateEndpointNetworkPolicies": “Disabled",
                            “privateLinkServiceNetworkPolicies": “Enabled"
                        }
                    }
                ],
                “virtualNetworkPeerings": [],
                “enableDdosProtection": false
            }

※仮想ネットワークのリソースメニューにあるオートメーションのテンプレートのエクスポートから確認できます。
※例の場合では、Nonprivate Subnetの場合にはdefaultOutboundAccessの項目が存在しません。

仮想マシンの送信セキュリティ規則を確認

今回利用した仮想マシンに適用されているNSGの送信セキュリティ規則を確認します。
既定の規則により、インターネットへのアウトバウンド通信が許可されています。

仮想マシンの送信セキュリティ規則
既定の規則により、インターネットへのアウトバウンド通信が許可されている状態となっています。 仮想マシンのネットワーク設定画面(Azure Private Subnetの作成手順)

Private Subnetに接続された仮想マシンからインターネットへアクセス

Private Subnetに接続された仮想マシンからインターネットへアクセスして確認します。

インターネットアクセスを確認
Private Subnetに接続された仮想マシンからブラウザでGoogleにアクセスしても、エラーになることが確認できます。 Private Subnetに接続された仮想マシンからインターネットへアクセスした場合(Azure Private Subnetの作成手順)
Windows Updateもエラーとなります。 Private Subnetに接続された仮想マシンからWindows Updateした場合(Azure Private Subnetの作成手順)

NSG(ネットワークセキュリティグループ)の概要については、こちらで紹介しています。

パブリックIPアドレスを割り当てた仮想マシンの場合

仮想マシンのネットワークインターフェースにパブリックIPを割り当てている場合、接続手段を明示的に追加された状態となります。
この場合、Private Subnetに仮想マシンをデプロイしてもインターネットアクセスが可能です。

仮想マシンにパブリックIPアドレスを付与した場合

パブリックIPアドレスが割り当てられた仮想マシンの場合は、Private Subnetに接続されていてもインターネットへのアクセスが許可されます。

※仮想マシンのアウトバウンド通信は、NSGの送信セキュリティ規則に従って動作します。送信セキュリティ規則の設定によって、アクセスが制限される場合があります。

 

パブリックIPアドレスを付与した仮想マシンのネットワーク設定(Azure Private Subnetの作成手順)
パブリックIPアドレスを付与した仮想マシンからインターネットへアクセスした場合(Azure Private Subnetの作成手順)
パブリックIPアドレスを付与した仮想マシンからWindows Updateした場合(Azure Private Subnetの作成手順)

Azure Private SubnetにAzure NAT Gatewayを割り当てた場合

Azure NAT Gatewayも、明示的に割り当てる接続手段の1つとなります。
Azure NAT Gateway経由で、インターネットへアクセスすることができます。
Azure NAT Gatewayを利用した場合の挙動については、こちらで紹介しています。

ーーー広告ーーー

Azure CLIやPowerShellを使ったAzure Private Subnet(プライベートサブネット)の設定確認、サブネット追加、既定の送信アクセス変更方法

確認に使用したAzure CLIとAzure PowerShellのバージョン

確認に使用したバージョンです。

PowerShell : 7.6.0
Az Module : 15.4.0
Az.Network : 7.25.1
Azure CLI : 2.84.0

Private SubnetかどうかはdefaultOutboundAccessを確認

Private SubnetとNonprivate Subnetの設定値がどうなっているのかを確認します。
Azure CLI、Azure PowerShellどちらの場合も、defaultOutboundAccess(またはDefaultOutboundAccess)がPrivate Subnet設定値となります。
この値がFalseの場合はPrivate Subnetとなります。
Trueもしくは設定がない場合はNonprivate Subnetとなります。

サブネットの設定を確認する場合は、以下のコマンドおよびコマンドレットを使用します。

サブネットの設定を確認

Azure CLIの場合

# Subnetのアウトバウンドアクセス設定を確認(Private Subnetの場合)
PS C:\>
az network vnet subnet show `
–resource-group rg-01 `
–vnet-name vnet-1 `
–name snet-priv-01 `
–query defaultOutboundAccess `
–output tsv
false

# Subnetのアウトバウンドアクセス設定を確認(Nonprivate Subnetの場合)
PS C:\>
az network vnet subnet show `
–resource-group rg-01 `
–vnet-name vnet-1 `
–name snet-pub-01 `
–query defaultOutboundAccess `
–output tsv
何も表示されません(もしくはTrueが表示されます)

Azure PowerShellの場合

# Subnetのアウトバウンドアクセス設定を確認(Private Subnetの場合)
PS C:\>
$snet = Get-AzVirtualNetwork -ResourceGroupName “rg-01" -Name “vnet-1" | Get-AzVirtualNetworkSubnetConfig -Name “snet-priv-01"
PS C:\> $snet.DefaultOutboundAccess
False

# Subnetのアウトバウンドアクセス設定を確認(Nonprivate Subnetの場合)
PS C:\> $snet = Get-AzVirtualNetwork -ResourceGroupName “rg-01" -Name “vnet-1" | Get-AzVirtualNetworkSubnetConfig -Name “snet-pub-01"

PS C:\> $snet.DefaultOutboundAccess
何も表示されません(もしくはTrueが表示されます)

既存の仮想ネットワークにPrivate Subnetを追加する場合

既存の仮想ネットワークにPrivate Subnetを追加します。
またNonprivate Subnetを追加する場合も併せて確認します。
Azure CLIの場合は、サブネット名をそれぞれsnet-priv-02とsnet-pub-02としています。
Azure PowerShellの場合は、サブネット名をそれぞれsnet-priv-03とsnet-pub-03としています。

既存の仮想ネットワークにサブネットを追加する場合は、以下のコマンドおよびコマンドレットを使用します。

Private Subnetの設定に関するパラメーターは、Azure CLIの場合はdefault-outbound、Azure PowerShellの場合はDefaultOutboundAccessになります。

既存の仮想ネットワークにサブネットを追加

Azure CLIを使用して、既存の仮想ネットワークにPrivate Subnetを追加する場合

# 既存の仮想ネットワークにPrivate Subnetを追加
PS C:\>
az network vnet subnet create `
–resource-group rg-01 `
–vnet-name vnet-1 `
–name snet-priv-02 `
–address-prefixes 10.0.2.0/24 `
–default-outbound false

# 追加したSubnetのアウトバウンドアクセス設定を確認
PS C:\> az network vnet subnet show `
–resource-group rg-01 `
–vnet-name vnet-1 `
–name snet-priv-02 `
–query defaultOutboundAccess `
–output tsv

false

Azure CLIを使用して、既存の仮想ネットワークにNonprivate Subnetを追加する場合

# 既存の仮想ネットワークにNonprivate Subnetを追加
PS C:\> az network vnet subnet create `
–resource-group rg-01 `
–vnet-name vnet-1 `
–name snet-pub-02 `
–address-prefixes 10.0.3.0/24 `
–default-outbound true

# 追加したSubnetのアウトバウンドアクセス設定を確認
PS C:\> az network vnet subnet show `
–resource-group rg-01 `
–vnet-name vnet-1 `
–name snet-pub-02 `
–query defaultOutboundAccess `
–output tsv
true

Azure PowerShellを使用して、既存の仮想ネットワークにPrivate Subnetを追加する場合

# 既存の仮想ネットワークにPrivate Subnetを追加
PS C:\> $vnet = Get-AzVirtualNetwork -ResourceGroupName “rg-01" -Name “vnet-1"
PS C:\> Add-AzVirtualNetworkSubnetConfig `
-Name “snet-priv-03" `
-VirtualNetwork $vnet `
-AddressPrefix “10.0.4.0/24" `
-DefaultOutboundAccess $false
PS C:\> Set-AzVirtualNetwork -VirtualNetwork $vnet

# 追加したSubnetのアウトバウンドアクセス設定を確認
PS C:\> $snet = Get-AzVirtualNetwork -ResourceGroupName “rg-01" -Name “vnet-1" | Get-AzVirtualNetworkSubnetConfig -Name “snet-priv-01"
PS C:\> $snet.DefaultOutboundAccess
False

Azure PowerShellを使用して、既存の仮想ネットワークにNonprivate Subnetを追加する場合

# 既存の仮想ネットワークにNonprivate Subnetを追加
PS C:\> $vnet = Get-AzVirtualNetwork -ResourceGroupName “rg-01" -Name “vnet-1"
PS C:\> Add-AzVirtualNetworkSubnetConfig `
-Name “snet-pub-03" `
-VirtualNetwork $vnet `
-AddressPrefix “10.0.5.0/24" `
-DefaultOutboundAccess $true
PS C:\> Set-AzVirtualNetwork -VirtualNetwork $vnet

# 追加したSubnetのアウトバウンドアクセス設定を確認
PS C:\> $snet = Get-AzVirtualNetwork -ResourceGroupName “rg-01" -Name “vnet-1" | Get-AzVirtualNetworkSubnetConfig -Name “snet-priv-01"
PS C:\> $snet.DefaultOutboundAccess
True

既存のサブネットのアウトバウンド規則を変更する場合(Private SubnetとNonprivate Subnetの切り替え)

既存のサブネットのアウトバウンド規則設定を変更して、Private SubnetからNonprivate Subnetに変更します。
Nonprivate SubnetをPrivate Subnetに変更する手順も確認します。
なお設定変更の反映には、仮想マシンの割り当て解除、開始が必要となります。

既存のサブネットの設定を変更する場合は、以下のコマンドおよびコマンドレットを使用します。

Private Subnetの設定に関するパラメーターは、Azure CLIの場合はdefault-outbound、Azure PowerShellの場合はDefaultOutboundAccessになります。

既存のサブネットのアウトバウンド規則を変更

Azure CLIを使用して、既存のPrivate SubnetをNonprivate Subnetに変更する場合

# Private SubnetをNonprivate Subnetに変更
PS C:\>
az network vnet subnet update `
–resource-group rg-01 `
–vnet-name vnet-1 `
–name snet-priv-01 `
–default-outbound true

# 変更後のアウトバウンドアクセス設定を確認
PS C:\> az network vnet subnet show `
–resource-group rg-01 `
–vnet-name vnet-1 `
–name snet-priv-01 `
–query defaultOutboundAccess `
–output tsv

true

Azure CLIを使用して、既存のNonprivate SubnetをPrivate Subnetに変更する場合

# Nonprivate SubnetをPrivate Subnetに変更
PS C:\>
az network vnet subnet update `
–resource-group rg-01 `
–vnet-name vnet-1 `
–name snet-priv-01 `
–default-outbound false

# 変更後のアウトバウンドアクセス設定を確認
PS C:\>
az network vnet subnet show `
–resource-group rg-01 `
–vnet-name vnet-1 `
–name snet-priv-01 `
–query defaultOutboundAccess `
–output tsv
false

Azure PowerShellを使用して、既存のPrivate SubnetをNonprivate Subnetに変更する場合

# Private SubnetをNonprivate Subnetに変更
PS C:\> $vnet = Get-AzVirtualNetwork -ResourceGroupName “rg-01" -Name “vnet-1"
PS C:\> $net = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name “snet-priv-01"
PS C:\> $net.DefaultOutboundAccess = $true
PS C:\> Set-AzVirtualNetwork -VirtualNetwork $vnet

# 追加したSubnetのアウトバウンドアクセス設定を確認
PS C:\> $snet = Get-AzVirtualNetwork -ResourceGroupName “rg-01" -Name “vnet-1" | Get-AzVirtualNetworkSubnetConfig -Name “snet-priv-01"
PS C:\> $snet.DefaultOutboundAccess
True

Azure PowerShellを使用して、既存のNonprivate SubnetをPrivate Subnetに変更する場合

# Private SubnetをPrivate Subnetに変更
PS C:\> $vnet = Get-AzVirtualNetwork -ResourceGroupName “rg-01" -Name “vnet-1"
PS C:\> $net = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name “snet-priv-01"
PS C:\> $net.DefaultOutboundAccess = $false
PS C:\> Set-AzVirtualNetwork -VirtualNetwork $vnet

# 追加したSubnetのアウトバウンドアクセス設定を確認
PS C:\> $snet = Get-AzVirtualNetwork -ResourceGroupName “rg-01" -Name “vnet-1" | Get-AzVirtualNetworkSubnetConfig -Name “snet-priv-01"
PS C:\> $snet.DefaultOutboundAccess
False

—広告—

最後に

今回は Azure Private Subnet(プライベートサブネット) について確認してみました。
Azure Private Subnetに接続された仮想マシン から、インターネットへのアウトバウンド通信ができないことが確認できました。
明示的に接続手段(今回はパブリック IP アドレスを仮想マシンに割り当て)を提供した場合はアクセスできることも確認できました。
そのほかにも、Azure PowerShellやAzure CLIを利用した場合の手順についても確認できました。

引き続き、いろいろ試してみたいと思います。

仮想マシンのNSG設定については、こちらで紹介しています。

スポンサーリンク