Azure ではネットワークセキュリティグループ (以降 NSG とします。) と呼ばれるリソースがあります。
この記事では NSG の概要と動作、既定のルールについて説明します。
NSG の概要
NSG とは
NSG は一言でいうと Azure 上の仮想ファイアウォールです。
送受信されるトラフィックを規則に従い評価し、送受信トラフィックを許可もしくは拒否することが出来ます。
クラウド上の仮想マシンは、全世界どこからでもアクセス出来てしまうため、Azure IaaS では NSG の構成が必要不可欠となります。
NSG と関連するリソース
NSG は以下の 2 つのリソースに関連付けることが可能です。
- サブネット
- ネットワーク インターフェイス
それぞれに関連付けした際の動作について説明します。
NSGの動作
サブネット間の通信
仮想ネットワーク内に 2 つのサブネットを構成し、それぞれに仮想マシンがある例です。
ネットワークインターフェイスに NSG を関連付け
- VM1 のネットワークインターフェイス:NSG-VM1
- VM2 のネットワークインターフェイス:NSG-VM2
NSG-VM1 の送信セキュリティ規則⇒NSG-VM2 の受信セキュリティ規則の順にトラフィックが評価されます。
② VM2 から VM1 への通信
NSG-VM2 の送信セキュリティ規則⇒NSG-VM1 の受信セキュリティ規則の順にトラフィックが評価されます。
サブネットに NSG を関連付け
- サブネット 1 :NSG-SN1
- サブネット 2 :NSG-SN2
NSG-SN1 の送信セキュリティ規則⇒ NSG-SN2 の受信セキュリティ規則の順にトラフィックが評価されます。
ネットワークインターフェイスとサブネットに NSG を関連付け
- VM1 のネットワークインターフェイス:NSG-VM1
- VM2 のネットワークインターフェイス:NSG-VM2
- サブネット 1:NSG-SN1
- サブネット 2:NSG-SN2
NSG-VM1 の送信セキュリティ規則 ⇒ NSG-SN1 の送信セキュリティ規則 ⇒ NSG-SN2 の受信セキュリティ規則 ⇒ NSG-VM2 の受信セキュリティ規則の順にトラフィックが評価されます。
同一サブネット内の通信
サブネットに NSG を関連付け
- サブネット 1 :NSG-SN1
NSG-SN1 の送信セキュリティ規則⇒NSG-SN1 の受信セキュリティ規則の順にトラフィックが評価されます。
ネットワークインターフェイスとサブネットに NSG を関連付け
- VM1 のネットワークインターフェイス:NSG-VM1
- VM2 のネットワークインターフェイス:NSG-VM2
- サブネット 1:NSG-SN1
NSG-VM1 の送信セキュリティ規則 ⇒ NSG-SN1 の送信セキュリティ規則 ⇒ NSG-SN1 の受信セキュリティ規則 ⇒ NSG-VM2 の受信セキュリティ規則の順にトラフィックが評価されます。
既定の規則
NSG は既定で以下の規則が設定されています。
【受信セキュリティ規則】
優先度 | 名前 | ポート | プロトコル | ソース | 宛先 | アクション |
65000 | AllowVnet InBound |
任意 | 任意 | Virtual Network |
Virtual Network |
許可 |
65001 | AllowAzure LoadBalancer InBound |
任意 | 任意 | Azure LoadBalancer |
任意 | 許可 |
65500 | DenyAll InBound |
任意 | 任意 | 任意 | 任意 | 拒否 |
【送信セキュリティ規則】
優先度 | 名前 | ポート | プロトコル | ソース | 宛先 | アクション |
65000 | AllowVnet OutBound |
任意 | 任意 | Virtual Network |
Virtual Network |
許可 |
65001 | AllowInternet OutBound |
任意 | 任意 | 任意 | Internet | 許可 |
65500 | DenyAll OutBound |
任意 | 任意 | 任意 | 任意 | 拒否 |
規則の設定値
それぞれの説明をします。
<優先度>
名前の通り、トラフィックが評価されるルールの優先度です。数字が小さい方から順に評価されます。
既定のルールでは 65000 ~ 65500 という数字になっていますが、ユーザーが設定できる優先度の範囲は 100 ~ 4096 となっています。
<名前>
ルールの名前を定義できます。基本的には自由に付けられますが、管理上、名前を見ただけでどのようなルールなのか分かるような名前が好ましいです。以下は一例です。
例)Allow-TCP80.443-InBound-INTERNETtoVM1
1ブロック目:Allow (許可) or Deny (拒否)
2ブロック目:通信プロトコル・ポート番号
3ブロック目:InBound (受信) or OutBound (送信)
4ブロック目:FROM to TO
文字 (半角英数のみ)・数字・アンダースコア・ピリオド・ハイフンのみ利用可能です。日本語は設定できません。
<ポート>
通信を許可するポート番号を指定します。Any (任意のポート) は*で指定します。その他単一のポート(80など) やカンマ区切りでの複数指定 (80,443など)、範囲指定 (1024 – 65535 など) も可能です。
<プロトコル>
Any、TCP、UDPの 3 種類から選択できます。ICMP が無いので ICMP のみ許可するには少しコツがいります。
<ソース・宛先>
任意、IP Address、Virtual Network、Service Tagのいずれかで設定します。From To の指定となります。ここの詳細は少し癖があるので、別の記事で紹介したいと思います。
<アクション>
規則に一致するトラフィックを許可するか、拒否するかを指定できます。
既定の規則概要
既定の規則は比較的緩く設定してあります。
- Virtual Network 間の通信は送信・受信ともすべて許可
⇒Virtual Network とは Azure 仮想ネットワークに限らず、Azure に接続したオンプレのネットワーク環境なども含みます。一言でいうとインターネット以外のすべてのトラフィックを許可する構成です。 - インターネット向けの送信トラフィックはすべて許可
⇒すべての仮想マシンが既定の状態ではインターネット参照が可能になっています。
クラウド上のサーバーをここまで緩くしておくわけにはいかないので、NSG を正しく設計し、構成することが非常に重要になります。
まとめ
NSG は Azure IaaS 上でネットワークレベルのセキュリティ対策に必須なリソースとなります。本番運用する際には意図せぬ通信を確実に遮断できるよう、慎重に設計する必要があります。
以下のページにより詳細な内容が記載されているので、参考にして下さい。
Azure ネットワーク セキュリティ グループの概要 | Microsoft Learn
コメント