Azure VM 관리자 SSH 공개 키 설정 점검

승인된 관리자 인증 방식을 구성하고 키 접속을 시험한 뒤 비밀번호 인증을 제한하세요.

설명

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")
  }
}

설명:

  • 변경 전: 비밀번호 인증을 허용하고 비밀번호 입력을 사용합니다.
  • 변경 후: 관리자 공개 키를 지정하고 비밀번호 인증을 비활성화합니다.

참조