ネットワーク セキュリティ グループ (NSG) とアプリケーション セキュリティ グループ (ASG) の計画と実装

完了

Azure 仮想ネットワーク内の Azure リソース間でのネットワーク トラフィックは、Azure ネットワーク セキュリティ グループを使ってフィルター処理できます。 ネットワーク セキュリティ グループには、何種類かの Azure リソースとの送受信ネットワーク トラフィックを許可または拒否するセキュリティ規則が含まれています。 ルールごとに、 送信元と宛先ポートプロトコルを指定できます。

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

セキュリティ規則

ネットワーク セキュリティ グループには、Azure サブスクリプションの制限内の任意の数の規則が含まれています。 各規則では次のプロパティを指定します。

財産 説明
名前 ネットワーク セキュリティ グループ内で一意の名前。 名前は最大 80 文字にすることができます。 先頭は単語文字にする必要があり、末尾は単語文字または "_" にする必要があります。 名前には、単語文字や "."、"-"、"_" を含めることができます。
優先順位 100 から 4096 の数値。 規則は、優先順位に従って処理され、数値が小さいほど優先順位が高いために、大きい数値の前に小さい数値が処理されます。 トラフィックが規則に一致すると、処理が停止します。 この結果、優先順位が高い規則と同じ属性を持ちその優先順位が低い (数値が大きい) 規則は処理されません。
Azure の既定のセキュリティ規則には、常に最初にカスタム 規則が処理されるように、優先順位が最も低い最も高い数値が与えられます。
送信元または送信先 すべて、または個別の IP アドレス、クラスレス ドメイン間ルーティング (CIDR) ブロック (例: 10.0.0.0/24)、サービス タグ、またはアプリケーション セキュリティ グループ。 Azure リソースのアドレスを指定する場合は、そのリソースに割り当てられているプライベート IP アドレスを指定します。 受信トラフィックの場合、ネットワーク セキュリティ グループが処理されるタイミングは、Azure でパブリック IP アドレスがプライベート IP アドレスに変換された後です。送信トラフィックの場合は、Azure でプライベート IP アドレスがパブリック IP アドレスに変換される前になります。 範囲、サービス タグ、またはアプリケーション セキュリティ グループを指定すると、必要なセキュリティ規則の数が少なくなります。 規則内で複数の個別 IP アドレスと範囲 (複数のサービス タグまたはアプリケーション グループは指定できません) を指定する機能は、拡張セキュリティ規則と呼ばれています。 拡張セキュリティ規則は、Resource Manager デプロイ モデルで作成されたネットワーク セキュリティ グループでのみ作成できます。 クラシック デプロイ モデルで作成されたネットワーク セキュリティ グループで、複数の IP アドレスおよび IP アドレス範囲を指定することはできません。
プロトコル TCP、UDP、ICMP、ESP、AH、または任意。 ESP プロトコルと AH プロトコルは現在、Azure portal では使用できませんが、Azure Resource Manager テンプレートを使用して使用できます。
方向 規則が受信トラフィックまたは送信トラフィックに適用されるかどうか。
ポートの範囲 個別のポートまたはポートの範囲を指定できます。 たとえば、80 や 10000-10005 などを指定できます。 範囲を指定すると、作成するセキュリティ規則の数を減らすことができます。 拡張セキュリティ規則は、Resource Manager デプロイ モデルで作成されたネットワーク セキュリティ グループでのみ作成できます。 クラシック デプロイ モデルで作成されたネットワーク セキュリティ グループで、同じセキュリティ規則に複数のポートまたはポート範囲を指定することはできません。
アクション 許可または拒否

セキュリティ規則は、5 タプル (1. ソース、2. ソース ポート、3. 宛先、4. 宛先ポート、5. プロトコル) の情報に基づいて評価および適用されます。 優先順位と方向が同じ 2 つのセキュリティ規則を作成することはできません。 既存の接続に対するフロー レコードが作成されます。 そのフロー レコードの接続の状態に基づいて、通信が許可または拒否されます。 フロー レコードにより、ネットワーク セキュリティ グループはステートフルであることが可能になります。 たとえば、ポート 80 経由で任意のアドレスに送信セキュリティ規則を指定した場合、送信トラフィックへの応答に受信セキュリティ規則を指定する必要はありません。 通信が外部から開始される場合、指定する必要があるのは受信セキュリティ規則のみです。 逆も同様です。 ポートで受信トラフィックが許可されている場合、そのポートでのトラフィックに応答するために、送信セキュリティ規則を指定する必要はありません。

接続を許可したセキュリティ規則を削除したときに、既存の接続が中断されない場合があります。 ネットワーク セキュリティ グループの規則の変更は、新しい接続にのみ影響します。 新しい規則が作成されるか、ネットワーク セキュリティ グループ内の既存の規則が更新されると、新しい接続にのみ適用されます。 既存の接続は、新しい規則では再評価されません。

ネットワーク セキュリティ グループがネットワーク トラフィックをフィルター処理する方法

1 つの Azure 仮想ネットワークに、いくつかの Azure サービスのリソースをデプロイすることができます。 仮想マシンの各仮想ネットワーク サブネットおよびネットワーク インターフェイスに、ゼロ個または 1 個のネットワーク セキュリティ グループを関連付けることができます。 同じネットワーク セキュリティ グループを、任意の数のサブネットとネットワーク インターフェイスに関連付けることができます。 次の図は、 TCP ポート 80 経由でインターネットとの間のネットワーク トラフィックを許可するためにネットワーク セキュリティ グループを展開する方法のさまざまなシナリオを示しています。

TCP ポート 80 経由でインターネットとの間のネットワーク トラフィックを許可するためにネットワーク セキュリティ グループを展開する方法の例を示す図。

この図と次のテキストを参照して、Azure でネットワーク セキュリティ グループのインバウンドおよびアウトバウンド規則がどのように処理されるのかについて理解してください。

受信トラフィック

受信トラフィックの場合、Azure は、サブネットに関連付けられているネットワーク セキュリティ グループがあれば、まずその規則を処理し、次にネットワーク インターフェイスに関連付けられているネットワーク セキュリティ グループがあれば、その規則を処理します。 このプロセスにはサブネット内トラフィックも含まれます。

  • VM1: NSG1 のセキュリティ規則は、 サブネット 1 に関連付けられているため処理され、 VM1サブネット 1 にあります。 ポート 80 の受信を許可する規則を作成していない限り、 DenyAllInbound の既定のセキュリティ規則はトラフィックを拒否します。 トラフィックはネットワーク インターフェイスに関連付けられているため、NSG2 によって評価されません。 NSG1 でセキュリティ規則でポート 80 が許可されている場合、NSG2 はトラフィックを処理します。 仮想マシンへのポート 80 を許可するには、 NSG1NSG2 の 両方に、インターネットからのポート 80 を許可する規則が必要です。
  • VM2: NSG1 のルールは、 VM2サブネット 1 にあるため処理されます。 VM2 はネットワーク インターフェイスに関連付けられたネットワーク セキュリティ グループを持たないため、NSG1 で許可されたすべてのトラフィックを受信するか、NSG1 によって拒否されたすべてのトラフィックが拒否されます。 トラフィックは、ネットワーク セキュリティ グループがサブネットに関連付けられている場合、同じサブネット内のすべてのリソースに対して許可または拒否されます。
  • VM3: サブネット 2 に関連付けられているネットワーク セキュリティ グループがないため、NSG2VM3 に接続されているネットワーク インターフェイスに関連付けられているため、トラフィックはサブネットに許可され、NSG2 によって処理されます。
  • VM4: ネットワーク セキュリティ グループがサブネット 3 または仮想マシン内のネットワーク インターフェイスに関連付けられていないため、VM4 へのトラフィックが許可されます。 すべてのネットワーク トラフィックは、ネットワーク セキュリティ グループが関連付けられていない場合、サブネットとネットワーク インターフェイスの通過を許可されます。

アウトバウンド トラフィック

送信トラフィックの場合、Azure はネットワーク インターフェイスに関連付けられているネットワーク セキュリティ グループがあれば、まずその規則を処理し、次にサブネットに関連付けられているネットワーク セキュリティ グループがあれば、その規則を処理します。 このプロセスにはサブネット内トラフィックも含まれます。

  • VM1: NSG2 のセキュリティ規則が処理されます。 インターネットへのポート 80 送信を拒否するセキュリティ規則を作成しない限り、NSG1NSG2 の両方のAllowInternetOutbound 既定セキュリティ規則によってトラフィックが許可されます。 NSG2 がセキュリティ規則でポート 80 を拒否した場合、トラフィックは拒否され、NSG1 はトラフィックを評価しません。 仮想マシンのポート 80 を拒否するには、ネットワーク セキュリティ グループのいずれかまたは両方に、インターネットへのポート 80 を拒否する規則が必要です。
  • VM2: VM2 に接続されているネットワーク インターフェイスにはネットワーク セキュリティ グループが関連付けられていないため、すべてのトラフィックはネットワーク インターフェイスを介してサブネットに送信されます。 NSG1 の規則が処理されます。
  • VM3: NSG2 がセキュリティ規則でポート 80 を拒否した場合、トラフィックは拒否されます。 NSG2 がポート 80 を拒否しない場合、サブネット 2 に関連付けられているネットワーク セキュリティ グループがないため、NSG2AllowInternetOutbound の既定のセキュリティ規則によってトラフィックが許可されます。
  • VM4: ネットワーク セキュリティ グループが仮想マシンに接続されているネットワーク インターフェイスまたはサブネット 3 に関連付けられていないため、VM4 からすべてのネットワーク トラフィックが許可されます。

サブネット内トラフィック

サブネットに関連付けられている NSG のセキュリティ規則は、その内部にある VM 間の接続に影響を与える可能性があることに注意することが重要です。 既定では、同じサブネット内の仮想マシンは、サブネット内トラフィックを許可する既定の NSG 規則に基づいて通信できます。 すべての受信トラフィックと送信トラフィックを拒否するルールを NSG1 に追加すると、 VM1VM2 は相互に通信できなくなります。

ネットワーク インターフェイスの 有効なセキュリティ 規則を表示することで、ネットワーク インターフェイスに適用される集計規則を簡単に表示できます。 Azure Network Watcher の [IP フローの確認] 機能を使って、ネットワーク インターフェイスの受信/送信が許可されているかどうかを確認することもできます。 IP フロー検証を使用して、通信が許可されているか拒否されているかを判断できます。 さらに IP フロー検証を使用して、トラフィックの許可または拒否を担当するネットワークのセキュリティ規則の ID を確認できます。

ネットワーク セキュリティ グループは、サブネット、クラシック デプロイ モデルにデプロイされた仮想マシンやクラウド サービス、および Resource Manager デプロイ モデルのサブネットまたはネットワーク インターフェイスに、関連付けられています。

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

アプリケーション セキュリティ グループ (ASG)

アプリケーション セキュリティ グループを使用すると、ネットワーク セキュリティをアプリケーションの構造の自然な拡張として構成でき、バーチャルマシンをグループ化して、それらのグループに基づくネットワーク セキュリティ ポリシーを定義できます。 明示的な IP アドレスを手動でメンテナンスせずに、大きなセキュリティ ポリシーを再利用することができます。 このプラットフォームは、明示的なIPアドレスと複数のルールセットの複雑さを処理するため、ビジネスロジックに集中することができます。 アプリケーション セキュリティ グループをよりよく理解するために、次の例について考えてください。

Azure ネットワーク セキュリティ グループとアプリケーション セキュリティ グループの例を示す図。

前の図では、NIC1NIC2AsgWeb アプリケーション セキュリティ グループのメンバーです。 NIC3 は、AsgLogic アプリケーション セキュリティ グループのメンバーです。 NIC4 は、AsgDb アプリケーション セキュリティ グループのメンバーです。 この例の各ネットワーク インターフェイス (NIC) は 1 つのネットワーク セキュリティ グループのメンバーにすぎませんが、ネットワーク インターフェイスは、Azure の制限まで、複数のアプリケーション セキュリティ グループのメンバーにすることができます。 どのネットワーク インターフェイスにも、ネットワーク セキュリティ グループが関連付けられていません。 NSG1 は両方のサブネットに関連付けられ、以下の規則が含まれています。

Allow-HTTP-Inbound-Internet

この規則は、インターネットから Web サーバーへのトラフィックを許可するために必要です。 インターネットからの受信トラフィックは DenyAllInbound の既定のセキュリティ規則によって拒否されるため、 AsgLogic または AsgDb アプリケーション セキュリティ グループに追加の規則は必要ありません。

優先順位 ソース 送信元ポート 行き先 送信先ポート プロトコル アクセス
100 インターネット * AsgWeb 80 TCP 許可する

Deny-Database-All

AllowVNetInBound の既定のセキュリティ規則では、同じ仮想ネットワーク内のリソース間のすべての通信が許可されるため、すべてのリソースからのトラフィックを拒否するには、この規則が必要です。

優先順位 ソース 送信元ポート 行き先 送信先ポート プロトコル アクセス
120 * * AsgDb 1433 [任意] 否定する

Allow-Database-BusinessLogic

この規則は、AsgLogic アプリケーション セキュリティ グループから AsgDb アプリケーション セキュリティ グループへのトラフィックを許可します。 この規則の優先度は、Deny-Database-All 規則の優先度よりも高くなっています。 その結果、この規則は Deny-Database-All 規則の前に処理されるため、AsgLogic アプリケーション セキュリティ グループからのトラフィックは許可されますが、他のすべてのトラフィックはブロックされます。

優先順位 ソース 送信元ポート 行き先 送信先ポート プロトコル アクセス
110 AsgLogic * AsgDb 1433 TCP 許可する

アプリケーション セキュリティ グループのメンバーであるネットワーク インターフェイスには、そのグループを送信元または送信先として指定する規則が適用されます。 それらの規則は、他のネットワーク インターフェイスには影響しません。 ネットワーク インターフェイスがアプリケーション セキュリティ グループのメンバーでない場合、ネットワーク セキュリティ グループがサブネットに関連付けられていても、規則はネットワーク インターフェイスに適用されません。

アプリケーション セキュリティ グループには、次の制約があります。

  • アプリケーション セキュリティ グループに関しては他にもいくつかの制限がありますが、サブスクリプションに含めることができるアプリケーション セキュリティ グループの数にも制限があります。

  • アプリケーション セキュリティ グループに最初に割り当てられたネットワーク インターフェイスが存在する同じ仮想ネットワークに、そのアプリケーション セキュリティ グループに割り当てられたすべてのネットワーク インターフェイスが存在する必要があります。 たとえば、AsgWeb という名前のアプリケーション セキュリティ グループに最初に割り当てられたネットワーク インターフェイスが VNet1 という名前の仮想ネットワークにある場合、ASGWeb に以降に割り当てられるすべてのネットワーク インターフェイスが VNet1 に存在する必要があります。 異なる仮想ネットワークからのネットワーク インターフェイスを同じアプリケーション セキュリティ グループに追加することはできません。

  • セキュリティ規則の送信元および送信先としてアプリケーション セキュリティ グループを指定する場合、両方のアプリケーション セキュリティ グループのネットワーク インターフェイスが、同じ仮想ネットワークに存在している必要があります。

    • たとえば、AsgLogicVNet1 のネットワーク インターフェイスがあり、AsgDbVNet2 のネットワーク インターフェイスがあるとします。 この場合、1 つの規則で AsgLogic を送信元として、AsgDb を送信先として割り当てることはできません。 送信元と送信先の両方のアプリケーション セキュリティ グループ内のすべてのネットワーク インターフェイスは、同じ仮想ネットワークに存在している必要があります。

必要なセキュリティ規則の数と、規則を変更する必要性を最小限に抑えるには、必要なアプリケーション セキュリティ グループを綿密に計画し、できる限り個々の IP アドレスまたは IP アドレスの範囲ではなく、サービス タグまたはアプリケーション セキュリティ グループを使用して規則を作成してください。