Azureのネットワーク セキュリティ グループ(NSG)の基本

Azure

Azureではネットワークセキュリティグループ(以降NSGとします。)と呼ばれるリソースがあります。

この記事ではNSGの概要と動作、既定のルールについて説明します。

NSGの概要

NSGとは

NSGは一言でいうとAzure上の仮想ファイアウォールです。

送受信されるトラフィックを規則に従い評価し、送受信トラフィックを許可もしくは拒否することが出来ます。

クラウド上の仮想マシンは、全世界どこからでもアクセス出来てしまうため、Azure IaaSではNSGの構成が必要不可欠となります。

NSGと関連するリソース

NSGは以下の2つのリソースに関連付けることが可能です。

  • サブネット
  • ネットワーク インターフェイス

それぞれに関連付けした際の動作について説明します。

NSGの動作

サブネット間の通信

仮想ネットワーク内に2つのサブネットを構成し、それぞれに仮想マシンがある例です。

ネットワークインターフェイスにNSGを関連付け

  • VM1のネットワークインターフェイス:NSG-VM1
  • VM2のネットワークインターフェイス:NSG-VM2

①VM1からVM2への通信
NSG-VM1の送信セキュリティ規則⇒NSG-VM2の受信セキュリティ規則の順にトラフィックが評価されます。

②VM2からVM1への通信
NSG-VM2の送信セキュリティ規則⇒NSG-VM1の受信セキュリティ規則の順にトラフィックが評価されます。

 

許可したい通信は、それぞれの[送信セキュリティ規則]・[受信セキュリティ規則]にルールを構成する必要があります。

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

  • サブネット1:NSG-SN1
  • サブネット2:NSG-SN2

VM1からVM2の通信
NSG-SN1の送信セキュリティ規則⇒NSG-SN2の受信セキュリティ規則の順にトラフィックが評価されます。

ネットワークインターフェイスとサブネットにNSGを関連付け

  • VM1のネットワークインターフェイス:NSG-VM1
  • VM2のネットワークインターフェイス:NSG-VM2
  • サブネット1:NSG-SN1
  • サブネット2:NSG-SN2

VM1からVM2の通信
NSG-VM1の送信セキュリティ規則⇒NSG-SN1の送信セキュリティ規則⇒NSG-SN2の受信セキュリティ規則⇒NSG-VM2の受信セキュリティ規則の順にトラフィックが評価されます。

同一サブネット内の通信

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

  • サブネット1:NSG-SN1

VM1からVM2の通信
NSG-SN1の送信セキュリティ規則⇒NSG-SN1の受信セキュリティ規則の順にトラフィックが評価されます。

 

サブネットにNSGが関連付けられている場合、同一サブネット内でもNSGによるトラフィック評価が行われます。

ネットワークインターフェイスとサブネットにNSGを関連付け

  • VM1のネットワークインターフェイス:NSG-VM1
  • VM2のネットワークインターフェイス:NSG-VM2
  • サブネット1:NSG-SN1

VM1からVM2の通信
NSG-VM1の送信セキュリティ規則⇒NSG-SN1の送信セキュリティ規則⇒NSG-SN1の受信セキュリティ規則⇒NSG-VM2の受信セキュリティ規則の順にトラフィックが評価されます。

既定の規則

NSGは既定で以下の規則が設定されています。

【受信セキュリティ規則】

優先度名前ポートプロトコルソース宛先アクション
65000AllowVnet
InBound
任意任意Virtual
Network
Virtual
Network
許可
65001AllowAzure
LoadBalancer
InBound
任意任意Azure
LoadBalancer
任意許可
65500DenyAll
InBound
任意任意任意任意拒否

【送信セキュリティ規則】

優先度名前ポートプロトコルソース宛先アクション
65000AllowVnet
OutBound
任意任意Virtual
Network
Virtual
Network
許可
65001AllowInternet
OutBound
任意任意任意Internet許可
65500DenyAll
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 のセキュリティ グループの概要
ネットワークとアプリケーションのセキュリティ グループについて説明します。 セキュリティ グループは、フィルターを使って Azure リソース間のネットワーク トラフィックを絞り込む際に役立つものです。

 

コメント