説明
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 が実在し、そのルールがサブネットの通信要件に合っていることを確認してください。