2026年6月16日
2026年6月16日
Azure NSG の優先度の仕組みと設定手順|100〜4096 の評価順・既定ルール 65000 番台・サブネットと NIC の二重適用・az CLI の例
Azure NSG の優先度は、100〜4096 の数値で、小さい数ほど先に評価され、通信が最初に一致した規則で許可か拒否かが決まってそれ以降は見られない、という決まりです。この 1 行を押さえると、「許可の規則を足したのに通らない」「拒否したはずなのに通る」といった事象のほとんどは、規則の順番か、サブネットと NIC の二重適用で説明できます。
結論を先にまとめます。
- 優先度 100〜4096 を自分で指定します。同じ方向で同じ優先度の規則は作れません。
- 評価は数の小さい順。最初に一致した規則で判定が終わるので、「狭い許可を小さい数、広い拒否を大きい数」に置きます。
- どの規則にも一致しなかった通信は、削除できない既定ルール(受信は VirtualNetwork と AzureLoadBalancer からの許可の後、65500 で全拒否)で処理されます。
- サブネットと NIC の両方に NSG を付けると、受信はサブネットの NSG → NIC の NSG の順で、両方で許可されないと届きません。Microsoft はどちらか一方だけに付けることを勧めています。
- 規則は新しい接続にだけ効きます。SSH の許可を消しても、今つながっているセッションは切れません。
NSG とは
ネットワークセキュリティグループ(NSG)とは、Azure の仮想ネットワーク内のリソースに対する受信・送信の通信を、送信元・送信元ポート・宛先・宛先ポート・プロトコルの 5 つの組(5 タプル)で許可または拒否する仕組みです。VM の NIC か、サブネットのどちらか(または両方)に関連付けます。1 つの NSG を複数のサブネットや NIC に使い回せます。
NSG はステートフルです。受信を許可したポートへの応答(送信)は自動で通るので、応答用の送信規則は要りません。逆も同じです。
優先度の決まり
| 項目 | 内容 |
|---|---|
| 値の範囲 | 100〜4096(自分で作る規則) |
| 評価の順 | 小さい数が先。数が小さい = 優先度が高い |
| 一致したら | その規則の Allow / Deny で確定し、それより大きい数の規則は評価されない |
| 重複 | 同じ方向(受信 / 送信)で同じ優先度の規則は作れない |
| 既定ルール | 65000・65001・65500。自分の規則より後に評価され、削除はできないが、小さい数の規則で上書きできる |
評価は受信と送信で別々に行われます。受信規則の一覧と送信規則の一覧があり、それぞれの中で小さい数から見ていきます。
既定ルール
NSG を作ると、次の規則が自動で入ります。
受信
| 優先度 | 名前 | 送信元 | 宛先 | 動作 |
|---|---|---|---|---|
| 65000 | AllowVNetInBound | VirtualNetwork | VirtualNetwork | 許可 |
| 65001 | AllowAzureLoadBalancerInBound | AzureLoadBalancer | すべて | 許可 |
| 65500 | DenyAllInBound | すべて | すべて | 拒否 |
送信
| 優先度 | 名前 | 送信元 | 宛先 | 動作 |
|---|---|---|---|---|
| 65000 | AllowVnetOutBound | VirtualNetwork | VirtualNetwork | 許可 |
| 65001 | AllowInternetOutBound | すべて | Internet | 許可 |
| 65500 | DenyAllOutBound | すべて | すべて | 拒否 |
つまり、何も規則を足さなければ、インターネットからの受信はすべて拒否、同じ仮想ネットワーク内の通信と送信は許可です。VM に外から SSH や HTTPS で届かせるには、65500 より小さい数で許可の規則を追加します。
規則の並べ方の原則
- 例外を小さい数に: 「特定の IP からの SSH を許可(100)」のように、範囲の狭い規則を先に置きます。
- 一般の許可はその後に: 「インターネットから 443 を許可(200)」。
- 明示的な拒否はさらに後に: 「特定の国や IP 範囲からの全ポートを拒否(4000)」のように広い拒否は大きい数に置きます。ただし、拒否を先に置きたい場面(特定の IP をどのポートでも拒否)では、その拒否を許可より小さい数にします。「どちらを先に一致させたいか」で数を決めます。
- 数は飛ばして付ける: 100、110、120… のように間を空けると、後から間に差し込めます。
サブネットと NIC の二重適用
NSG はサブネットと NIC の両方に付けられ、両方にあると次の順で評価されます。
| 方向 | 評価の順 | 通る条件 |
|---|---|---|
| 受信(外 → VM) | サブネットの NSG → NIC の NSG | 両方で許可される |
| 送信(VM → 外) | NIC の NSG → サブネットの NSG | 両方で許可される(どちらかが拒否すれば届かない) |
典型的な事故は、「NIC の NSG に 443 の許可を足したのに通らない」で、原因はサブネットの NSG で 443 が拒否(既定の DenyAllInBound)されていることです。Microsoft Learn は、規則の競合が追いにくくなるため、サブネットか NIC のどちらか一方だけに NSG を付けることを勧めています。
どの規則が実際に効いているかは、VM のネットワークインターフェースの「有効なセキュリティ規則」で、サブネットと NIC の両方を合算した一覧として見られます。特定の通信が通るかどうかは、Network Watcher の「IP フロー検証」に送信元・宛先・ポートを入れると、許可か拒否か、どの規則で決まったかが分かります。
サービスタグと拡張ルール
送信元・宛先には、IP アドレスや CIDR のほかにサービスタグ(Azure が管理する IP 範囲の名前)を使えます。既定ルールに出てくる VirtualNetwork、AzureLoadBalancer、Internet もサービスタグです。Storage や Sql、AzureMonitor のように Azure のサービスごとのタグもあり、IP 範囲の変更を Azure 側が追ってくれます。
1 つの規則に複数の IP 範囲や複数のポートを書ける拡張セキュリティ規則も使えます(Resource Manager で作った NSG)。ただし 1 つの規則に複数のサービスタグは書けません。
手順: WordPress の VM で 22・80・443 だけを許可する
Azure CLI で、NSG を作り、3 本の受信規則を追加して NIC に関連付ける例です(ポータルでは「ネットワーク セキュリティ グループ → 受信セキュリティ規則 → 追加」で同じ項目を入れます)。
RG=rg-wordpress
NSG=nsg-wordpress
LOC=japaneast
ADMIN_IP=203.0.113.10 # 管理者の固定 IP
az network nsg create -g $RG -n $NSG -l $LOC
# 管理者の IP からだけ SSH を許可(最も小さい数)
az network nsg rule create -g $RG --nsg-name $NSG -n Allow-SSH-Admin \
--priority 100 --direction Inbound --access Allow --protocol Tcp \
--source-address-prefixes $ADMIN_IP --destination-port-ranges 22
# インターネットから HTTP / HTTPS を許可(拡張ルールで 2 ポートを 1 本に)
az network nsg rule create -g $RG --nsg-name $NSG -n Allow-Web \
--priority 200 --direction Inbound --access Allow --protocol Tcp \
--source-address-prefixes Internet --destination-port-ranges 80 443
# 既定の DenyAllInBound(65500)が残りをすべて拒否する
# 規則の一覧(既定ルールも含めて表示)
az network nsg rule list -g $RG --nsg-name $NSG --include-default -o table
# NIC に関連付ける
az network nic update -g $RG -n nic-wordpress --network-security-group $NSG
--priority は 100〜4096 で、規則ごとに一意である必要があります。--source-address-prefixes にはサービスタグ名(Internet、VirtualNetwork など)をそのまま書けます。
MySQL(3306)や PHP-FPM(9000)は、同じ VM 内か同じ仮想ネットワーク内の別 VM からだけ使うので、インターネットからの許可規則は作りません。別サブネットの DB サーバーへは既定の AllowVNetInBound で届きます。VM 側の OS のファイアウォール(ufw / firewalld)も同じポートだけ開けておくと、二重の守りになります。実際に外から見える状態はnmap で自分のサーバーの公開ポートを確認する手順で点検できます。
通らないときの確認手順
- 有効なセキュリティ規則を見る: NIC の「有効なセキュリティ規則」で、サブネットと NIC の両方を合算した結果を確認します。
- IP フロー検証: Network Watcher で、送信元 IP・宛先 IP・ポート・プロトコルを指定して、許可か拒否か、どの規則が決めたかを見ます。
- 優先度の順を見直す: 許可の規則より小さい数に、同じ通信に一致する拒否の規則が無いか。
- VM の中を確認: NSG が許可していても、OS のファイアウォールや、サービスが
127.0.0.1だけで待ち受けている場合は届きません。sudo ss -tlnpで待ち受けアドレスを見ます。 - パブリック IP と DNS: 標準 SKU のパブリック IP は、NSG で許可しない限り外から届きません。DNS が古い IP を指していないかも確認します。
WordPress の運用での位置づけ
NSG は「どの入口を開けるか」を決める層で、WordPress の管理画面を守るものではありません。443 を開けている以上、/wp-login.php にも誰でも届きます。NSG で入口を 22・80・443 に絞ったうえで、WordPress 側のログイン制限、2 要素認証、更新の適用を組み合わせてください。SSH を管理者の IP だけに絞っておくと、不正アクセスの検知で見るログのノイズも大きく減ります。
Azure 上の WordPress が「急に見えなくなった」ときは、NSG の変更(誰かが規則を足した・消した)、パブリック IP の変更、VM 内のサービス停止の 3 つを順に疑います。NSG の変更履歴は、リソースの「アクティビティ ログ」で追えます。
よくある質問
優先度の数は 100 から順に付けるべきですか
100、110、120 のように間を空けて付けると、後から間に規則を差し込めます。数そのものに意味はなく、小さい数が先に評価されることだけが重要です。
許可の規則を追加したのに通りません
よくある原因は 3 つです。サブネットと NIC の両方に NSG があり、もう一方で拒否されている。同じ通信に一致する拒否の規則が、より小さい数にある。VM の中の OS のファイアウォールやサービスの待ち受け設定で止まっている。NIC の「有効なセキュリティ規則」と Network Watcher の「IP フロー検証」で、どこで止まっているかを確認してください。
既定ルールは消せますか
消せません。ただし、65000〜65500 より小さい数の規則を作れば、先に一致してそちらが優先されます。たとえば仮想ネットワーク内の通信を制限したいなら、65000 より小さい数で拒否の規則を作ります。
SSH の許可規則を消したら、今の接続は切れますか
切れません。NSG の規則は新しい接続にだけ適用され、既存の接続は影響を受けません。次に接続しようとしたときから拒否されます。
NSG と Azure Firewall はどう違いますか
NSG はサブネットや NIC に付ける 5 タプルの許可・拒否で、無料で使える基本の層です。Azure Firewall は仮想ネットワーク全体の出口に置く有料のサービスで、FQDN による制御や脅威インテリジェンスなどの機能があります。1〜数台の WordPress VM なら NSG で足りることが多いです。
まとめ
- NSG の優先度は 100〜4096、小さい数から評価され、最初に一致した規則で判定が終わります。既定ルール(65000・65001・65500)は削除できませんが、小さい数の規則で上書きできます。
- サブネットと NIC の両方に NSG があると、受信はサブネット → NIC の順で両方の許可が必要です。どちらか一方だけに付けるのが推奨です。
- WordPress の VM は、管理者 IP からの 22 と、Internet からの 80・443 だけを許可し、通らないときは「有効なセキュリティ規則」と「IP フロー検証」で原因の規則を特定します。
関連記事
- FortiGate でポート開放(ポートフォワーディング)を設定する方法
- nmap の使い方とポートスキャンの基本|自分のサーバーの公開ポートを確認する手順
- サーバーへの不正アクセスを検知する方法
- AWS アカウント作成後にまず行う初期設定
参考: Microsoft Learn – ネットワーク セキュリティ グループの概要(規則の属性と既定ルール)、Microsoft Learn – ネットワーク セキュリティ グループがネットワーク トラフィックをフィルター処理する方法(サブネットと NIC の評価順)、Azure CLI – az network nsg rule
更新履歴: 2026-11-09 全面改訂(定型文の本文を、優先度の評価順と既定ルール、サブネットと NIC の二重適用、CLI での設定例、通らないときの確認手順に置き換え)。この記事はワードプレス博士(ライトセンド株式会社)が運営しています。