ネットワーク セキュリティ グループ (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 アドレス範囲を指定することはできません。
Protocol TCP、UDP、ICMP、ESP、AH、または Any。 現在、Azure portal では、ESP および AH プロトコルを利用することはできませんが、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 のセキュリティ規則が処理されます。これは、Subnet 1 に関連付けられていて、VM1Subnet 1 内にあるためです。 ポート 80 受信を許可する規則を作成していない限り、DenyAllInbound 既定セキュリティ規則によってトラフィックが拒否されます。 トラフィックが NSG2 によって評価されることはありません。これは、NSG2 がネットワーク インターフェイスに関連付けられているためです。 NSG1 にあるセキュリティ規則でポート 80 が許可される場合、NSG2 によってトラフィックが処理されます。 仮想マシンにポート 80 を許可するには、NSG1NSG2 の両方に、インターネットからのポート 80 を許可する規則が必要です。
  • VM2: VM2Subnet 1 内にあるため、NSG1 の規則が処理されます。 VM2 はネットワーク インターフェイスに関連付けられたネットワーク セキュリティ グループを持たないため、NSG1 で許可されたすべてのトラフィックを受信するか、NSG1 によって拒否されたすべてのトラフィックが拒否されます。 トラフィックは、ネットワーク セキュリティ グループがサブネットに関連付けられている場合、同じサブネット内のすべてのリソースに対して許可または拒否されます。
  • VM3: Subnet 2 にはネットワーク セキュリティ グループが関連付けられていないため、トラフィックはサブネットに入ることを許可され、NSG2 によって処理されます。これは、NSG2 が、VM3 に接続されているネットワーク インターフェイスに関連付けられているためです。
  • VM4: ネットワーク セキュリティ グループは Subnet 3 つまり仮想マシンのネットワーク インターフェイスに関連付けられていないため、VM4 へのトラフィックは許可されます。 サブネットおよびネットワーク インターフェイスにネットワーク セキュリティ グループが関連付けられていない場合、すべてのネットワーク トラフィックがサブネットおよびネットワーク インターフェイスを介して許可されます。

送信トラフィック

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

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

優先順位 ソース 送信元ポート Destination (公開先) 送信先ポート プロトコル Access (アクセス)
100 インターネット * AsgWeb 80 TCP Allow

Deny-Database-All

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

優先順位 ソース 送信元ポート Destination (公開先) 送信先ポート プロトコル Access (アクセス)
120 * * AsgDb 1433 Any 拒否

Allow-Database-BusinessLogic

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

優先順位 ソース 送信元ポート Destination (公開先) 送信先ポート プロトコル Access (アクセス)
110 AsgLogic * AsgDb 1433 TCP Allow

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

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

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

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

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

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

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