説明
Linux VM の管理には、保護された SSH キーを優先してください。admin_ssh_key がなくても別の仕組みでキーや認証が設定される場合があるため、実際の接続方法を確認する必要があります。パスワードに依存する場合は、推測、使い回し、漏えいのリスクを管理してください。
想定される影響
- 弱い管理者パスワードや使い回したパスワードが、アカウント侵害に悪用される場合があります。
- キーの配布を確認せずにパスワードを無効化すると、管理者が接続できなくなる場合があります。
対処方法
- SSH キーを使う場合は、承認された
admin_ssh_keyとユーザー名を設定してください。現在の AzureRM が対応する Ed25519 または 2048 ビット以上の RSA 公開キーを使い、秘密キーを保護してください。 - 実際のキー接続をテストしてから、不要なパスワード認証を無効化してください。ユーザーごとのキーを管理・失効させ、キー変更時は Terraform の VM 置換計画も確認してください。
例
管理者認証だけを比較する抜粋で、OS ディスクとイメージは省略しています。公開キーファイルのパスは、実際に承認されたキーに置き換えてください。
変更前
hcl
resource "azurerm_linux_virtual_machine" "example" {
name = "example-vm"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
size = "Standard_F2"
admin_username = "adminuser"
admin_password = var.admin_password
disable_password_authentication = false
network_interface_ids = [azurerm_network_interface.example.id]
}
変更後
hcl
resource "azurerm_linux_virtual_machine" "example" {
name = "example-vm"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
size = "Standard_F2"
admin_username = "adminuser"
disable_password_authentication = true
network_interface_ids = [azurerm_network_interface.example.id]
admin_ssh_key {
username = "adminuser"
public_key = file("/secure/path/id_ed25519.pub")
}
}
補足:
- 変更前: パスワード認証を許可し、パスワード入力を使います。
- 変更後: 管理者の公開キーを指定し、パスワード認証を無効にします。