Azure Managed Service Column <Azure運用コラム>

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

Category: 入門編

2021.04.28

Azureの仮想ネットワークを利用する際、セキュリティの保護に使われるのがネットワークセキュリティグループ(NSG)です。
本記事では、ネットワークセキュリティグループの仕組みや働き、そして利用上の注意点などについて解説していきます。

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

ネットワークセキュリティグループ(NSG)とは、簡単にいうとAzureの仮想ネットワーク上のファイアウォールのようなサービスで、仮想マシンのNIC(ネットワークインターフェース)や、VNetのサブネットに適用することができます。

仮想ネットワークを利用しながらより高いセキュリティを保つためには、NSGの活用が非常に重要といえるでしょう。

NSGの具体的な働きは、送受信するトラフィックをセキュリティ規則に従い評価し、その送信/受信を許可、あるいは拒否するというものです。送信元、送信元ポート、宛先、宛先ポート、プロトコルの5つの情報をもとに許可/拒否の判断を行い、優先順位に従ってセキュリティ規則が評価されます。

送信元や宛先の設定として利用できる項目は次の通りです。

  • IPアドレス (ネットワークアドレスを含む)
  • Service Tag(Azureで提供されるPaaSを指定する際にIPアドレスに代わり指定するもの)
  • アプリケーションセキュリティグループ(フィルタリングルールをテンプレート化したもの)

通常クラウド上に仮想マシンを構築する場合、外部からもアクセスが可能となるため、セキュリティ面での脆弱性が生まれます。そのため、NSGの構成によるセキュリティ強化が必須とされるのです。

Azure FirewallとNSGの違い

NSGと同じように、Azureのセキュリティを強化するサービスの一つがAzure Firewallです。Azure FirewallとNSGは、以下のように機能する場所において違いがあります。

  • Azure Firewall:インターネットと仮想ネットワークの境界で機能する
  • NSG:サブネットや仮想マシンのネットワークインターフェイス上で機能する

Azure Firewallでは外部からの通信をまとめて管理でき、NSGではセキュリティグループごとにアクセスできる範囲を管理できます。このような違いがあるため、両者を組み合わせて活用することで、より強固なセキュリティ対策が可能です。

NSGのフィルター処理方法

NSGを適用できるリソースは、以下の2つです。

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

NSGは、1つにつきこのどちらかにのみ適用できるというわけではなく、サブネットとネットワークインターフェイスの両方に割り当てることもできます。さらに、1つのNSGを複数のサブネット、あるいは複数のネットワークインターフェイスに割り当てることも可能です。

ネットワークセキュリティグループの割り当て
ネットワークセキュリティグループの割り当て

上図は、Subnet1内にVM1、VM2、Subnet2内にVM3がある仮想ネットワークを示したものです。この仮想ネットワークでは、Subnet1にNSG1、Subnet2にNSG2が適用されています。さらに、NSG1が適用されているSubnet1内にあるVM1のNICに対して、NSG2を適用することも可能です。

サブネット間で通信する場合

ここからは、通信時のNSGの処理順について解説します。

まず、異なるサブネット間で通信を行う場合には、VMごとに設定されたNSGを、送信側から順に処理していきます。

例えば、再び上欄の図を例にとって説明すると、異なるサブネット間にあるVM1からVM3に通信を行う場合、VM1→NSG2の送信規則→NSG1の送信規則→NSG2の受信規則→VM3といった順番で処理が行われます。

同一サブネット内で通信する場合

次に、同じサブネット内にあるVM同士で通信する場合です。基本的には、異なるサブネット間での通信の際と同じ処理手順になります。

先ほどの図でいうと、VM1からVM2に通信を行う場合には、VM1→NSG2の送信規則→NSG1の送信規則→NSG1の受信規則→VM2といった順番で処理されます。

同じサブネット内のVM同士であっても、他のVMに接続する際には、ネットワークインターフェイスやサブネットに設定されたNSGの規則でフィルタリングが行われると考えてください。

受信規則、送信規則と既定のセキュリティ規則

作成されるNSGには、Azureによって以下の規定の規則が作成されます。

受信

  • AllowVNetInBound
Priority Source ソース ポート 到着地 宛先ポート Protocol アクセス
65000 Virtual
Network
0-65535 Virtual
Network
0-65535 Any Allow
  • AllowAzureLoadBalancerInBound
Priority Source ソース ポート 到着地 宛先ポート Protocol アクセス
65001 Azure
LoadBalancer
0-65535 0.0.0.0/0 0-65535 Any Allow
  • DenyAllInbound
Priority Source ソース ポート 到着地 宛先ポート Protocol アクセス
65500 0.0.0.0/0 0-65535 0.0.0.0/0 0-65535 Any 拒否

送信

  • AllowVnetOutBound
Priority Source ソース ポート 到着地 宛先ポート Protocol アクセス
65000 Virtual
Network
0-65535 Virtual
Network
0-65535 Any Allow
  • AllowInternetOutBound
Priority Source ソース ポート 到着地 宛先ポート Protocol アクセス
65001 0.0.0.0/0 0-65535 インターネット 0-65535 Any Allow
  • DenyAllOutBound
Priority Source ソース ポート 到着地 宛先ポート Protocol アクセス
65500 0.0.0.0/0 0-65535 0.0.0.0/0 0-65535 Any 拒否

詳しくは公式サイトに記載がありますので、ご参照ください。

簡単に解説すると、まず優先度(Priority)はトラフィックが評価される際の優先順位を示すもので、数字が小さいもののほうがより先に評価されます。

既定のルールでは、VNet間の通信は、送信/受信ともすべて許可されるよう設定されており、Azureに接続したオンプレネットワークとの送受信もすべて許可されています。また、インターネットとの通信に関しては、インターネットからの受信は不許可、送信は許可というのが既定の規則です。

アプリケーションセキュリティグループについて

NSGと関連したサービスに、アプリケーションセキュリティグループがあります。

アプリケーションセキュリティグループとは、仮想マシンのネットワークインターフェイスをグループ化し、そのグループに適用されたNSGを定義する機能です。適用ルールをテンプレート化することで、個々のVMに対してIPアドレスの指定などをする必要がなく、VM個々への手動設定が不要となります。

NSG利用上の注意点

NSGは便利なセキュリティ対策ですが、利用の際には以下の点に注意しましょう。

適切な設定を行う

NSGを適用せずとも、VMやサブネットの作成は可能です。そのため、NSGの適用を忘れてしまうと、セキュリティ的に保護されていないVMが放置されてしまうこともあります。

また、NSGを適用する際には、既定のセキュリティ規則をそのまま適用しても大丈夫か確認しましょう。

既存のセキュリティ規則では、VMへの外部からのリモートデスクトップ接続(プロトコル:RDP 、ポート番号:3389)やSSH接続(プロトコル:SSH、ポート番号:22)が許可されています。既定の規則をそのまま適用した場合、DMZセグメントの公開サーバーを経由してトラストセグメントへの不正アクセスなどが発生する危険性もあるため、十分注意してください。

適切な設計を意識する

NSGの適用時には、競合が起きないような設計を意識する必要があります。

ちなみに、Microsoftからは、

特別な理由がない限り、NSGをサブネットまたはネットワークインターフェイスに関連付けることをお勧めします。両方に関連付けることは、お勧めしません。 サブネットに関連付けられたNSGの規則が、ネットワークインターフェイスに関連付けられたNSGの規則と競合する可能性があるため、予期しない通信の問題が発生し、トラブルシューティングが必要になることがあります。

との声明が出ています。

こちら、以下のリンク内に記載されているため、興味のある方は目を通してみてください。
https://docs.microsoft.com/ja-jp/azure/virtual-network/network-security-group-how-it-works

また、NSGの設計としては、サブネットで共通の制御をかけたあと、さらにVMごとに制御をかけることも可能です。

このような設計の場合、VM が通信を受信するとき、トラフィックはサブネットのNSGで評価されたあと、NICのNSGで再度評価されることになります。もしサブネット・NICのそれぞれに NSG を適用する場合、許可したい通信に関しては両方のNSGで設定する必要があります。

例えば、同一サブネット内の複数 VM が抱えている通信要件を、サブネットに適用する1つのNSGにまとめるなどサブネット単位で通信要件を管理する、などの設計が考えられます。

おわりに

Azureネットワークセキュリティグループ(NSG)は、サブネットやネットワークインターフェイスに適用するファイアウォールのようなサービスで、セキュリティの維持のためには非常に重要なものです。

仕組みとしては、送受信されるトラフィックを規則にしたがい評価し、許可/拒否を判断します。

NSGを適用せずにVMやサブネットを作ることも可能なため、適用を忘れてセキュリティが脆弱なままにならないように注意しましょう。また、セキュリティ規則については自分で設定することもできるため、既定の規則から調節して、個々の環境にあった設計をすることをおすすめします。

Azure設計・構築を任せたい

Azure構築サービス

Azure構築サービス

Microsoft Azureを利用したシステムの設計・構築を代行します。お客様のご要件を実現する構成をご提案・実装いたします。

Tag: セキュリティ ネットワークセキュリティグループ

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php