説明
Azure VM はネットワークインターフェイスを通じてサブネットや通信経路に接続します。必要な NIC がないと、正常にデプロイ・通信できません。NIC の接続だけで NSG や安全なアクセスルールが自動設定されるわけではありません。
想定される影響
- VM のデプロイ、通信、管理が失敗する場合があります。
- NIC だけを接続してセキュリティルールを確認しないと、意図しないアクセスが許可される場合があります。
対処方法
network_interface_idsに有効な NIC を指定し、正しいサブネットと IP 設定を用意してください。リソース参照で Terraform の依存関係を明確にしてください。- NIC またはサブネットの NSG と経路を確認し、必要な通信だけを許可してください。管理者認証も別途保護してください。
例
従来の azurerm_virtual_machine のネットワーク接続だけを比較する抜粋です。OS ディスク、イメージ、認証情報は省略しています。残しているパスワード認証の許可は別途確認が必要です。
変更前
hcl
resource "azurerm_virtual_machine" "example" {
name = "${var.prefix}-vm"
location = azurerm_resource_group.main.location
resource_group_name = azurerm_resource_group.main.name
network_interface_ids = []
vm_size = "Standard_DS1_v2"
os_profile_linux_config {
disable_password_authentication = false
}
}
変更後
hcl
resource "azurerm_network_interface" "example" {
name = "${var.prefix}-nic"
location = azurerm_resource_group.main.location
resource_group_name = azurerm_resource_group.main.name
ip_configuration {
name = "testconfiguration1"
subnet_id = azurerm_subnet.internal.id
private_ip_address_allocation = "Dynamic"
}
}
resource "azurerm_virtual_machine" "example" {
name = "${var.prefix}-vm"
location = azurerm_resource_group.main.location
resource_group_name = azurerm_resource_group.main.name
network_interface_ids = [azurerm_network_interface.example.id]
vm_size = "Standard_DS1_v2"
os_profile_linux_config {
disable_password_authentication = false
}
}
補足:
- 変更前: NIC の一覧が空で、必要な VM ネットワーク設定がありません。
- 変更後: NIC を作成して接続します。NSG とアクセスルールは別途設定が必要です。