説明
Linux VM のパスワード認証では、推測、使い回し、漏えいへの対策が必要です。パスワードを許可しても SSH キーは併用でき、この設定だけで VM がインターネットに公開されるわけではありません。運用アクセスでは、保護された SSH キーを優先してください。
想定される影響
- 弱いパスワードや使い回したパスワードが、管理者アカウントの侵害に悪用される場合があります。
- SSH の許可範囲が広いと、自動化されたログイン試行が増える場合があります。
対処方法
- 承認された
admin_ssh_keyを登録し、キーによる接続をテストしてからdisable_password_authentication = trueを設定してください。Terraform 計画で VM の置換も確認してください。 - 秘密キーを保護し、不要なキーを失効させてください。管理接続の接続元も必要な範囲に限定してください。
例
認証方式だけを比較する抜粋です。現在の Linux VM の size 引数と同じ NIC を使い、OS ディスクとイメージの設定は省略しています。承認されたパスワード入力と実際の公開キーファイルを用意してください。
変更前
hcl
resource "azurerm_linux_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.main.id]
size = "Standard_DS1_v2"
admin_username = "adminuser"
admin_password = var.admin_password
disable_password_authentication = false
}
変更後
hcl
resource "azurerm_linux_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.main.id]
size = "Standard_DS1_v2"
admin_username = "adminuser"
disable_password_authentication = true
admin_ssh_key {
username = "adminuser"
public_key = file("~/.ssh/id_rsa.pub")
}
}
補足:
- 変更前: パスワード認証を許可します。
- 変更後: 管理者の公開キーを登録し、パスワード認証を無効にします。