Azure サブネットの NSG 関連付けの確認

サブネットの用途に合う NSG の関連付けと、実際の通信制限を確認してください。

説明

Network Security Group(NSG)は、サブネットやネットワークインターフェイスに関連付けて通信をフィルタリングします。通常のアプリケーション用サブネットに必要な NSG が関連付けられていないと、意図したサブネット単位の制限が適用されない可能性があります。

サブネットに NSG がないことだけでは、インターネットに公開されているとは判断できません。ネットワークインターフェイスの NSG、経路、他の制御も確認してください。

想定される影響

  • 必要な通信制限が欠け、アプリケーション層やデータ層へのアクセス範囲が広がるおそれがあります。
  • 反対に、NSG に対応しないサービス専用サブネットへ関連付けると、サービスが中断する可能性があります。

対処方法

  • サブネットの用途とサービスの要件を確認し、必要な NSG を関連付けてください。GatewaySubnet と AzureFirewallSubnet には NSG を関連付けないでください。
  • アプリケーション、データベース、管理に必要な通信のルールと優先順位を設定し、既定のルールも確認してください。
  • 実際の接続と適用されるルールを確認してください。NSG の名前を指定するだけで、必要なセキュリティルールが自動作成されるわけではありません。

例

以前の azure プロバイダーの構文を残した例です。現在のデプロイでは、AzureRM プロバイダーのサポート対象リソースと NSG の関連付け方法を使ってください。NSG 自体の定義とルールは省略しています。

変更前

hcl
resource "azure_virtual_network" "app_network" {
  name          = "test-network"
  address_space = ["10.1.2.0/24"]
  location      = "West US"

  subnet {
    name           = "subnet1"
    address_prefix = "10.1.2.0/25"
  }
}

サブネットに NSG を指定していません。他の場所に適用された制御も確認してください。

変更後

hcl
resource "azure_virtual_network" "app_network" {
  name          = "test-network"
  address_space = ["10.1.2.0/24"]
  location      = "West US"

  subnet {
    name           = "subnet1"
    address_prefix = "10.1.2.0/25"
    security_group = "app-subnet-nsg"
  }
}

既存の app-subnet-nsg を関連付ける設定です。NSG が実在し、そのルールがサブネットの通信要件に合っていることを確認してください。

参考資料