【Azure】 NSG(Network Security Groups)の概要

ネットワークセキュリティグループ(NSG)は、Azure の仮想ネットワークで、サブネットやネットワークインターフェイス(NIC)の単位で受信と送信のトラフィックを許可・拒否する機能です。この記事では、NSG の仕組みと留意事項を整理したあと、インターネットからの RDP を許可する NSG を作ってサブネットに関連付けます。

この記事でわかること
  1. NSG で判定に使う情報(5タプル)と、関連付けの単位(サブネット、NIC)
  2. 既定のセキュリティ規則と、優先度による評価の順番
  3. NSG の作成、受信セキュリティ規則の追加、サブネットへの関連付けの手順

ネットワークセキュリティグループ(NSG)とは

NSG は、セキュリティ規則(ルール)の集まりです。ルールごとに、通信を許可するか拒否するかを決めます。判定には、次の5つの情報(5タプル)を使います。

判定に使う情報指定できるもの
送信元アドレス/宛先アドレス任意(Any)、IP アドレス、CIDR、サービスタグ、アプリケーションセキュリティグループ
送信元ポート/宛先ポート1つのポート、範囲(例:10000-10005)、カンマ区切りの組み合わせ、* (すべて)
プロトコルTCP、UDP、ICMP、Any

NSG はステートフルです。受信を許可した通信の応答は、送信のルールがなくても返せます。逆に、送信を許可した通信の応答も、受信のルールなしで戻ります。

関連付けの単位

NSG は、サブネットまたは NIC に関連付けて使います。サブネットに関連付けると、そのサブネットにあるすべてのリソースにルールが効きます。NIC に関連付けると、その NIC を持つ仮想マシン(VM)だけにルールが効きます。

1つの NSG は、いくつものサブネットや NIC に関連付けられます。一方、1つのサブネットや NIC に関連付けられる NSG は1つだけです。

仮想ネットワークサブネットNSG-Aサブネットに関連付けInternet受信VM1NSG-A だけで判定NSG-BVM2NSG-A → NSG-B の順に判定NIC に関連付け受信は サブネットの NSG → NIC の NSG、送信は逆の順。両方で許可されたときだけ通る
図1 サブネットと NIC への関連付け

サブネットと NIC の両方に NSG を関連付けた場合、受信はサブネットの NSG、NIC の NSG の順に評価され、送信はその逆の順に評価されます。通信できるのは、両方の NSG で許可されたときだけです。ルールが重なると切り分けが難しくなるので、どちらか一方に関連付けるのが基本です。

留意事項

既定のセキュリティ規則

NSG を作ると、次の既定のルールが自動で入ります。仮想ネットワーク内の通信と Azure Load Balancer からの受信は許可され、インターネットからの受信などそれ以外は拒否されます。インターネットからの通信を受けるには、許可のルールを明示的に追加します。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時(2023年2月)の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。今のポータルとは、項目の並びや表記が違うことがあります。

Azure ポータル(NSG の既定のセキュリティ規則)画面イメージ
優先度名前ポートプロトコルソース宛先アクション
1受信セキュリティ規則
65000AllowVnetInBound任意任意VirtualNetworkVirtualNetwork Allow
65001AllowAzureLoadBalancerInBound任意任意AzureLoadBalancer任意 Allow
65500DenyAllInBound任意任意任意任意 Deny
2送信セキュリティ規則
65000AllowVnetOutBound任意任意VirtualNetworkVirtualNetwork Allow
65001AllowInternetOutBound任意任意任意Internet Allow
65500DenyAllOutBound任意任意任意任意 Deny
図2 既定のセキュリティ規則(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1受信セキュリティ規則仮想ネットワーク内(VirtualNetwork)と Azure Load Balancer(AzureLoadBalancer)からの受信を許可(緑の Allow)し、それ以外は最後の DenyAllInBound で拒否(赤の Deny)します。
2送信セキュリティ規則仮想ネットワーク内とインターネットへの送信を許可し、それ以外を拒否します。

既定のルールは削除できません。変えたいときは、より優先度の高い(数字の小さい)ルールを追加して上書きします。VirtualNetwork、AzureLoadBalancer、Internet は IP アドレスではなく、Azure が管理するアドレスのまとまり(サービスタグ)です。

優先順位

ルールを作るときは、優先度を考える必要があります。独自のルールの優先度は 100〜4096 の範囲で指定し、数字が小さいルールから順に評価されます。通信が一致したルールが見つかった時点で評価は終わり、それより数字の大きいルールは見ません。

RDP(TCP 3389)がインターネットから届いた100AllowTagRDPInboundInternet から TCP 3389許可65000AllowVnetInBound仮想ネットワーク内許可65001AllowAzureLoadBalancerInBoundLoad Balancer から許可65500DenyAllInBoundすべて拒否優先度の数字が小さいルールから順に見て、最初に一致したルールで決まる(以降のルールは見ない)
図3 優先度による評価の流れ

たとえば、同じ通信に対する拒否ルールと許可ルールがある場合は、優先度の数字が小さいほうが適用され、もう一方は無視されます。既定のルール(65000〜65500)は独自のルールよりも数字が大きいので、独自のルールが必ず先に評価されます。同じ向きで同じ優先度のルールは作れません。

補足

ルールの追加や削除が効くのは、新しい接続だけです。たとえば、接続中の RDP のセッションは、それを許可していたルールを消しても切れません。

リージョンとサブスクリプション

NSG は、作成するときにサブスクリプションとリージョンを選ぶリソースです。関連付ける仮想ネットワークや NIC と同じサブスクリプション、同じリージョンに作成しておきます。

ルール数の上限

1つの NSG に作れるルールの数には上限があります。現在のドキュメントでは、既定のルールも含めて1つの NSG あたり 2,000 です。ルールが増えてきたら、複数のアドレスやポートを1つのルールにまとめる(拡張セキュリティ規則)、サービスタグを使う、といった方法でルールの数を抑えます。

設定方法

ここでは、インターネットから仮想ネットワークへの RDP(TCP 3389)を許可する NSG を作り、サブネットに関連付けます。

Internet仮想ネットワーク RG-VM-vnet(リソースグループ RG-VM)サブネット default(10.0.0.0/24)RDPTCP 3389NSG allow-RDP受信:Internet → VirtualNetworkRDP を許可(優先度 100)VM
図4 この記事の構成

NSG を作成する

Azure ポータル上部の検索バーで「ネットワーク セキュリティ グループ」を検索して開き、「作成」をクリックします。NSG を作るリソースグループと名前を設定します。

Azure ポータル(ネットワーク セキュリティ グループの作成:基本)画面イメージ
基本 タグ 確認および作成
プロジェクトの詳細
サブスクリプションAzure サブスクリプション 1
1リソース グループRG-VM
新規作成
インスタンスの詳細
2名前allow-RDP
地域Japan East
3確認および作成< 前へ次: タグ >
図5 NSG の作成(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1リソース グループ作成済みの RG-VM を選びます。「新規作成」で新しく作ることもできます。
2名前任意の名前です。今回は allow-RDP にしました。
3確認および作成確認の画面に進みます。地域は、関連付ける仮想ネットワークと同じ Japan East です。

リソースグループについては、次の記事を参考にしてください。

確認の画面で「検証に成功しました」と表示されたら、「作成」をクリックします。

Azure ポータル(ネットワーク セキュリティ グループの作成:確認および作成)画面イメージ
1 検証に成功しました
サブスクリプションAzure サブスクリプション 1
リソース グループRG-VM
地域Japan East
名前allow-RDP
タグなし
2作成< 前へ次へ >
図6 確認および作成(実際の画面ではなく、確認のポイントを示したイメージです)

作成が終わると、一覧に新しい NSG が表示されます。

Azure ポータル(ネットワーク セキュリティ グループの一覧)画面イメージ
名前リソース グループ場所
1allow-RDPRG-VMJapan East
図7 作成した NSG(実際の画面ではなく、表示のポイントを示したイメージです)

受信セキュリティ規則を追加する

一覧の名前(allow-RDP)をクリックし、設定 ›› 受信セキュリティ規則 ›› 追加 をクリックします。今回は、インターネットから仮想ネットワークのアドレス空間への RDP(TCP 3389)を許可するルールを作ります。

Azure ポータル(受信セキュリティ規則の追加:allow-RDP)画面イメージ
1ソースService Tag
ソース サービス タグInternet
ソース ポート範囲*
2宛先Service Tag
宛先サービス タグVirtualNetwork
3サービスRDP
宛先ポート範囲3389
プロトコル○ Any◉ TCP○ UDP○ ICMP
4アクション◉ 許可○ 拒否
5優先度100
6名前AllowTagRDPInbound
7追加キャンセル
図8 受信セキュリティ規則の追加(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1ソース/ソース サービス タグソースに Service Tag を選ぶと、ソース サービス タグを選べるようになります。Internet を選びます。ソース ポート範囲は制限しないので、* のままにします。
2宛先/宛先サービス タグ宛先も Service Tag にし、VirtualNetwork を選びます。VirtualNetwork は、仮想ネットワークのアドレス空間(ピアリングした仮想ネットワークや、接続したオンプレミスのアドレス空間なども含む)を表します。
3サービスRDP を選ぶと、宛先ポート範囲 3389 とプロトコル TCP が自動で入ります。HTTPS や SSH なども選べます。Custom を選ぶと、任意のポート番号を指定できます。
4アクション許可 を選びます。
5優先度100〜4096 の範囲で指定します。今回は 100 にしました。あとからルールを間に足せるよう、100、200、300 のように間をあけておくと便利です。
6名前任意の名前です。今回は AllowTagRDPInbound にしました。
7追加ルールが追加されます。

サービスタグについては、Microsoft のドキュメント「仮想ネットワーク サービス タグ」を参考にしてください。

追加すると、次のように登録されます。

Azure ポータル(受信セキュリティ規則:allow-RDP)画面イメージ
優先度名前ポートプロトコルソース宛先アクション
11002 AllowTagRDPInbou…3389TCPInternetVirtualNetwork Allow
65000AllowVnetInBound任意任意VirtualNetworkVirtualNetwork Allow
65001AllowAzureLoadBalance…任意任意AzureLoadBalancer任意 Allow
65500DenyAllInBound任意任意任意任意 Deny
図9 追加した受信セキュリティ規則(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1優先度 100 の行追加したルールです。既定のルールより数字が小さいので、先に評価されます。
2警告マーク(オレンジ)RDP のポートがインターネットに公開されていることへの、セキュリティの警告です。
注意

インターネットのどこからでも RDP できる状態は、パスワードを狙った攻撃を受けやすくなります。検証が終わったらルールを消すか、ソースを「IP Addresses」にして接続元の IP アドレスに絞ります。インターネットに RDP を公開せずに接続したい場合は、Azure Bastion を使う方法もあります。

NSG をサブネットに関連付ける

作成した NSG を、あらかじめ作ってある仮想ネットワーク(RG-VM-vnet)のサブネット(default)に関連付けます。仮想ネットワークとサブネットの概要は、次の記事を参考にしてください。

NSG の詳細画面で 設定 ›› サブネット ›› 関連付け をクリックします。関連付けたい仮想ネットワークとサブネットを選び、「OK」をクリックします。

Azure ポータル(サブネットの関連付け:allow-RDP)画面イメージ
1仮想ネットワークRG-VM-vnet (RG-VM)
2サブネットdefault
3OK
図10 サブネットの関連付け(実際の画面ではなく、設定項目のポイントを示したイメージです)

次のように登録されます。これで、サブネット default にあるリソースへの、インターネットからの RDP が許可されます。

Azure ポータル(allow-RDP のサブネット)画面イメージ
名前アドレス範囲仮想ネットワーク
1default10.0.0.0/24RG-VM-vnet
図11 関連付けたサブネット(実際の画面ではなく、表示のポイントを示したイメージです)

VM に実際に適用されているルールは、VM の NIC の「有効なセキュリティ規則」で確かめられます。サブネットと NIC の両方に NSG がある場合も、まとめて確認できます。

まとめ

項目内容
判定に使う情報送信元・宛先のアドレスとポート、プロトコル(5タプル)。ステートフル
関連付けサブネットまたは NIC。1つのサブネット・NIC に NSG は1つ。受信はサブネット → NIC の順
既定のルール仮想ネットワーク内と Load Balancer からの受信を許可し、それ以外の受信は拒否。削除はできず、優先度の高いルールで上書きする
優先度独自のルールは 100〜4096。数字の小さい順に評価し、最初に一致したルールで決まる
この記事の設定NSG allow-RDP に Internet → VirtualNetwork の RDP 許可(優先度 100)を追加し、サブネット default に関連付け

コメント