ネットワーク セキュリティ グループを使ってネットワーク アクセスを制御する

完了

ERP システムを Azure に移行するプロジェクトの一環として、許可されたシステムだけがネットワーク接続できるよう、サーバーを適切に分離させる必要があります。 たとえば、ERP アプリのデータを格納するデータベース サーバーがあるとします。 禁止されたシステムはネットワーク経由でサーバーと通信できないようにする一方で、アプリ サーバーにはデータベース サーバーとの通信を許可します。

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

ネットワーク セキュリティ グループでは、Azure リソースとの間のネットワーク トラフィックがフィルター処理されます。 また、それらにはセキュリティ規則が含まれ、これを設定してインバウンドまたはアウトバウンドのトラフィックを許可または拒否します。 ネットワーク セキュリティ グループを使って、仮想ネットワーク内およびインターネットからの両方の、VM またはサブネット間のトラフィックをフィルター処理できます。

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

ネットワーク セキュリティ グループは、ネットワーク インターフェイスかサブネットに割り当てます。 ネットワーク セキュリティ グループをサブネットに割り当てると、その規則はそのサブネット内にあるすべてのネットワーク インターフェイスに適用されます。 ネットワーク セキュリティ グループを VM のネットワーク インターフェイスに関連付けることで、トラフィックをさらに制限できます。

サブネットとネットワーク インターフェイスの両方にネットワーク セキュリティ グループを適用すると、各ネットワーク セキュリティ グループが個別に評価されます。 インバウンド トラフィックは、まずサブネットに適用されたネットワーク セキュリティ グループによって評価され、次にネットワーク インターフェイスに適用されたネットワーク セキュリティ グループによって評価されます。 反対に、VM からのアウトバウンド トラフィックは、まずネットワーク インターフェイスに適用されたネットワーク セキュリティ グループによって評価され、次にサブネットに適用されたネットワーク セキュリティ グループによって評価されます。

Diagram of network security groups.

個々のネットワーク インターフェイスではなく、サブネットにネットワーク セキュリティ グループを適用すると、管理作業を減らすことができます。 また、指定したサブネット内のすべての VM が同じ規則セットで保護されます。

各サブネットとネットワーク インターフェイスには、それぞれ 1 つのネットワーク セキュリティ グループを適用できます。 ネットワーク セキュリティ グループは TCP、UDP、ICMP に対応しており、OSI モデルのレイヤー 4 で動作します。

この製造会社のシナリオでは、ネットワーク セキュリティ グループをネットワークの保護に役立てることができます。 どのコンピューターがアプリ サーバーに接続できるかを制御できます。 特定の範囲の IP アドレスだけがサーバーに接続できるように、ネットワーク セキュリティ グループを構成できます。 特定のポート、または個別の IP アドレスとのアクセスのみを許可することで、この制限をさらに強化できます。 このような規則は、オンプレミスのネットワークからリモートで接続しているデバイスに対して、または Azure 内のリソース間に適用できます。

セキュリティ規則

ネットワーク セキュリティ グループには、1 つまたは複数のセキュリティ規則が含まれています。 トラフィックを許可または拒否するように、セキュリティ規則を構成できます。

規則にはいくつかのプロパティがあります。

プロパティ 説明
名前 ネットワーク セキュリティ グループ内で一意の名前
優先順位 100 から 4096 の数値
ソースと接続先 すべて、または個別の IP アドレス、クラスレス ドメイン間ルーティング (CIDR) ブロック (例: 10.0.0.0/24)、サービス タグ、またはアプリ セキュリティ グループ
Protocol TCP、UDP、すべて
Direction 規則の適用先 (受信または送信トラフィック)
ポートの範囲 個々のポートまたはポート範囲
アクション トラフィックの許可または拒否

ネットワーク セキュリティ グループのセキュリティ規則は優先度順で評価され、5 組の情報 (送信元、送信元ポート、送信先、送信先ポート、プロトコル) を使ってトラフィックが許可または拒否されます。 ある規則の条件がデバイス構成に一致すると、規則の処理が停止します。

たとえば、自分の会社で、Web サーバーに対するインバウンド トラフィックをポート 3389 (RDP) で許可するセキュリティ規則を、優先度 200 で作成したとします。 次に、別の管理者が、ポート 3389 上のインバウンド トラフィックを拒否する規則を、優先度 150 で作成したとします。 拒否の規則が先に処理されるため、こちらが優先されます。 優先度が 150 の規則は、優先度が 200 の規則よりも先に処理されます。

ネットワーク セキュリティ グループを利用すれば、接続はステートフルになります。 同じ TCP/UDP セッションでは、戻りのトラフィックは自動的に許可されます。 たとえば、ポート 80 上のトラフィックを許可するインバウンド規則では、VM によるその要求への (通常は一時的なポート上の) 応答も許可されます。 対応するアウトバウンド規則は必要ありません。

ERP システムに関しては、ERP アプリの Web サーバーから、独自のサブネット内にあるデータベース サーバーに接続します。 SQL Server データベースの通信については、Web サーバーからデータベース サーバーへの通信でポート 1433 のみを許可するセキュリティ規則を適用できます。 データベース サーバーへのその他のトラフィックはすべて拒否されます。

既定セキュリティ規則

ネットワーク セキュリティ グループを作成すると、Azure により既定の規則がいくつか作成されます。 このような既定の規則は変更できませんが、独自の規則でオーバーライドできます。 これらの既定の規則では、仮想ネットワーク内および Azure ロード バランサーからの接続が許可されます。 また、インターネットへの送信方向の通信が許可され、インターネットからの受信トラフィックが拒否されます。

インバウンド トラフィックに対する既定の規則は次のとおりです。

優先度 規則名 説明
65000 AllowVnetInbound 仮想ネットワーク内の任意の VM から任意の VM への受信を許可します
65001 AllowAzureLoadBalancerInbound サブネット内で既定のロード バランサーから VM に入ってくるトラフィックを許可する
65500 DenyAllInBound 外部ソースから VM に入ってくるトラフィックを拒否する

アウトバウンド トラフィックに対する既定の規則は次のとおりです。

優先度 規則名 説明
65000 AllowVnetOutbound 仮想ネットワーク内の任意の VM から任意の VM への送信を許可します
65001 AllowInternetOutbound VM からインターネットに送信される送信トラフィックを許可します
65500 DenyAllOutBound 内部の VM から仮想ネットワークの外部のシステムへのトラフィックを拒否します

拡張セキュリティ規則

ネットワーク セキュリティ グループの拡張セキュリティ規則を使用して、多数の規則を簡単に管理できます。 拡張セキュリティ規則は、ずっと複雑な一連のネットワーク規則を実装する必要がある場合にも役立ちます。 拡張規則により、次のオプションを 1 つのセキュリティ規則に追加できます。

  • 複数の IP アドレス
  • 複数のポート
  • サービス タグ
  • アプリ セキュリティ グループ

自分の会社で、複数のネットワーク アドレス範囲をまたぐデータセンター内のリソースへのアクセスを制限する必要があるとします。 拡張規則を使うと、これらの範囲をすべて 1 つの規則に追加して、ネットワーク セキュリティ グループの管理費と複雑さを減らすことができます。

サービス タグ

サービス タグを使うと、ネットワーク セキュリティ グループのセキュリティをさらに簡素化できます。 特定の Azure サービスへのトラフィックを、グローバルに、またはリージョン別に、許可または拒否することができます。

サービス タグを使うと、リソースやサービス別にアクセスを制限できるため、VM や Azure 仮想ネットワークのセキュリティが簡単になります。 サービス タグは IP アドレスのグループを表し、セキュリティ規則の構成を簡素化するのに役立ちます。 タグを使って指定できるリソースについては、その IP アドレスやポートの詳細を知る必要がありません。

多くのサービスへのアクセスを制限できます。 サービス タグは Microsoft が管理します。つまり、ユーザーが独自に作成することはできません。 タグの例を次にいくつか示します。

  • VirtualNetwork:Azure 内の (ハイブリッド接続を使っている場合は、さらにオンプレミスのネットワーク内の) あらゆる仮想ネットワーク アドレスを表します。
  • AzureLoadBalancer:Azure のインフラストラクチャのロード バランサーを表します。 このタグは、Azure の正常性プローブの送信元となるホストの仮想 IP アドレス (168.63.129.16) に変換されます。
  • インターネット: 仮想ネットワーク アドレスの外にあり、パブリックに到達できるあらゆるものを表します (パブリック IP アドレスを持つリソースなど)。 このようなリソースの 1 つは、Azure App Service の Web Apps 機能です。
  • AzureTrafficManager:Azure Traffic Manager の IP アドレスを表します。
  • ストレージ:Azure Storage の IP アドレス空間を表します。 トラフィックを許可するか、拒否するかを指定できます。 特定のリージョンにのみアクセスを許可するかどうかを指定することもできますが、個別のストレージ アカウントを選択することはできません。
  • SQL:Azure SQL Database、Azure Database for MySQL、Azure Database for PostgreSQL、Azure Synapse Analytics サービスのアドレスを表します。 トラフィックを許可するか、拒否するかを指定できます。また、特定のリージョンに制限することができます。
  • AppService:Azure App Service 用のアドレス プレフィックスを表します。

アプリ セキュリティ グループ

アプリ セキュリティ グループを使用すると、特定のアプリで使用されるリソースのネットワーク セキュリティを構成できます。 IP アドレスやサブネットの割り当てに関係なく、VM は論理的にグループ化できます。

ネットワーク セキュリティ グループ内でアプリ セキュリティ グループを使い、リソース グループにセキュリティ規則を適用できます。 特定のアプリ ワークロードをデプロイし、スケールアップする方が簡単です。新しい VM デプロイを 1 つまたは複数のアプリ セキュリティ グループに追加するだけで、その VM でそのワークロードのセキュリティ規則が自動的に選択されます。

アプリ セキュリティ グループを使うと、ネットワーク インターフェイスをまとめてグループ化できます。 次に、そのアプリ セキュリティ グループを、ネットワーク セキュリティ グループ内で送信元または送信先の規則として使えます。

たとえば、自分の会社が仮想ネットワークに多数のフロントエンド サーバーを持っているとします。 Web サーバーには、ポート 80 および 8080 経由でアクセスできるようにする必要があります。 データベース サーバーには、ポート 1433 経由でアクセスできるようにする必要があります。 Web サーバーのネットワーク インターフェイスを 1 つのアプリ セキュリティ グループに割り当て、データベース サーバーのネットワーク インターフェイスを別のアプリ セキュリティ グループに割り当てます。 次に、ネットワーク セキュリティ グループでインバウンド規則を 2 つ作成します。 1 つの規則で、Web サーバー アプリ セキュリティ グループのすべてのサーバーへの HTTP トラフィックを許可します。 もう 1 つの規則で、データベース サーバー アプリ セキュリティ グループのすべてのサーバーへの SQL トラフィックを許可します。

Diagram of app security groups.

アプリ セキュリティ グループを使わない場合は、VM ごとに別個の規則を作成するか、ネットワーク セキュリティ グループをサブネットに追加し、そのサブネットにすべての VM を追加する必要があります。

アプリ セキュリティ グループの主な長所は、管理が簡単になることです。 アプリ サーバーをデプロイまたは再デプロイするとき、アプリ セキュリティ グループのネットワーク インターフェイスを簡単に追加したり、削除したりできます。 アプリ セキュリティ グループに新しい規則を動的に適用することもできます。そうすると、そのアプリ セキュリティ グループに属するすべての VM に自動的に適用されます。

ネットワーク セキュリティ グループを使用するタイミング

ネットワークに接続された資産を望ましくないトラフィックから守るために、ネットワーク セキュリティ グループを常に使うことがベスト プラクティスです。 ネットワーク セキュリティ グループを使用すれば、すべての VM または仮想ネットワークのセキュリティ規則を設定することなく (複雑になる可能性があります)、ネットワーク層のアクセスを細かく制御できます。