Azure Automanage 머신 구성 확장

머신 구성 확장은 VM(가상 머신) 내에서 감사 및 구성 작업을 수행하는 Azure Automanage의 기능입니다.

LinuxWindows에 대한 Azure 컴퓨팅 보안 기준 정의와 같은 VM 내의 정책을 확인하려면 머신 구성 확장을 설치해야 합니다.

필수 조건

VM이 머신 구성 서비스에 인증할 수 있도록 하려면 VM에 시스템이 할당한 관리 ID가 있어야 합니다. "type": "SystemAssigned" 속성을 설정하여 VM에 대한 ID 요구 사항을 충족시킬 수 있습니다.

"identity": {
   "type": "SystemAssigned"
}

운영 체제

머신 구성 확장의 운영 체제 지원은 문서화된 엔드투엔드 솔루션의 운영 체제 지원과 동일합니다.

인터넷 연결

머신 구성 확장에서 설치한 에이전트는 게스트 구성 할당에 나열된 콘텐츠 패키지에 연결하고 머신 구성 서비스에 상태를 보고할 수 있어야 합니다. VM은 TCP 포트 443을 통한 아웃바운드 HTTPS 또는 개인 네트워킹을 통해 제공되는 연결을 사용하여 연결할 수 있습니다.

개인 네트워킹에 대해 자세히 알아보려면 다음 문서를 참조하세요.

확장 설치

Azure CLI 또는 PowerShell에서 직접 머신 구성 확장을 설치하고 배포할 수 있습니다. 배포 템플릿은 ARM(Azure Resource Manager), Bicep, Terraform에도 사용할 수 있습니다. 배포 템플릿 세부 정보는 Microsoft.GuestConfiguration guestConfigurationAssignments를 참조하세요.

참고 항목

다음 배포 예제에서 <placeholder> 매개 변수 값을 구성의 특정 값으로 바꿉니다.

배포 고려 사항

머신 구성 확장을 설치하고 배포하기 전에 다음 고려 사항을 검토합니다.

  • 인스턴스 이름 머신 구성 확장을 설치할 때 확장의 인스턴스 이름을 AzurePolicyforWindows 또는 AzurePolicyforLinux로 설정해야 합니다. 앞에서 설명한 보안 기준 정의 정책에는 이러한 특정 문자열이 필요합니다.

  • 버전 기본적으로 모든 배포가 최신 버전으로 업데이트됩니다. autoUpgradeMinorVersion 속성의 값은 달리 지정되지 않는 한 true로 기본 설정됩니다. 이 기능은 새 버전의 머신 구성 확장이 릴리스될 때 코드 업데이트에 대한 우려를 완화하는 데 도움이 됩니다.

  • 자동 업그레이드 머신 구성 확장은 enableAutomaticUpgrade 속성을 지원합니다. 이 속성이 true로 설정되면 Azure는 향후 릴리스가 제공되는 경우 최신 버전의 확장으로 자동 업그레이드됩니다. 자세한 내용은 Azure의 VM 및 Virtual Machine Scale Sets에 대한 자동 확장 업그레이드를 참조하세요.

  • Azure Policy ID 요구 사항을 포함하여 최신 버전의 머신 구성 확장을 대규모로 배포하려면 비규격 리소스를 식별하기 위한 정책 할당 만들기의 단계를 수행합니다. Azure Policy를 사용하여 다음 할당을 만듭니다.

  • 기타 속성 머신 구성 확장에 설정 또는 보호된 설정 속성을 포함할 필요가 없습니다. 에이전트는 Azure REST API 게스트 구성 할당 리소스에서 이 클래스의 정보를 검색합니다. 예를 들어 ConfigurationUri, ModeConfigurationSetting 속성은 VM 확장이 아니라 구성에 따라 각각 관리됩니다.

Azure CLI

Linux용 확장을 배포하려면 다음을 수행합니다.

az vm extension set  --publisher Microsoft.GuestConfiguration --name ConfigurationForLinux --extension-instance-name AzurePolicyforLinux --resource-group <myResourceGroup> --vm-name <myVM> --enable-auto-upgrade true

Windows용 확장을 배포하려면 다음을 수행합니다.

az vm extension set  --publisher Microsoft.GuestConfiguration --name ConfigurationforWindows --extension-instance-name AzurePolicyforWindows --resource-group <myResourceGroup> --vm-name <myVM> --enable-auto-upgrade true

PowerShell

Linux용 확장을 배포하려면 다음을 수행합니다.

Set-AzVMExtension -Publisher 'Microsoft.GuestConfiguration' -ExtensionType 'ConfigurationForLinux' -Name 'AzurePolicyforLinux' -TypeHandlerVersion 1.0 -ResourceGroupName '<myResourceGroup>' -Location '<myLocation>' -VMName '<myVM>' -EnableAutomaticUpgrade $true

Windows용 확장을 배포하려면 다음을 수행합니다.

Set-AzVMExtension -Publisher 'Microsoft.GuestConfiguration' -ExtensionType 'ConfigurationforWindows' -Name 'AzurePolicyforWindows' -TypeHandlerVersion 1.0 -ResourceGroupName '<myResourceGroup>' -Location '<myLocation>' -VMName '<myVM>' -EnableAutomaticUpgrade $true

ARM 템플릿

Linux용 확장을 배포하려면 다음을 수행합니다.

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "[concat(parameters('VMName'), '/AzurePolicyforLinux')]",
  "apiVersion": "2020-12-01",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.GuestConfiguration",
    "type": "ConfigurationForLinux",
    "typeHandlerVersion": "1.0",
    "autoUpgradeMinorVersion": true,
    "enableAutomaticUpgrade": true, 
    "settings": {},
    "protectedSettings": {}
  }
}

Windows용 확장을 배포하려면 다음을 수행합니다.

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "[concat(parameters('VMName'), '/AzurePolicyforWindows')]",
  "apiVersion": "2020-12-01",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.GuestConfiguration",
    "type": "ConfigurationforWindows",
    "typeHandlerVersion": "1.0",
    "autoUpgradeMinorVersion": true,
    "enableAutomaticUpgrade": true, 
    "settings": {},
    "protectedSettings": {}
  }
}

Bicep 템플릿

Linux용 확장을 배포하려면 다음을 수행합니다.

resource virtualMachine 'Microsoft.Compute/virtualMachines@2021-03-01' existing = {
  name: 'VMName'
}
resource windowsVMGuestConfigExtension 'Microsoft.Compute/virtualMachines/extensions@2020-12-01' = {
  parent: virtualMachine
  name: 'AzurePolicyforLinux'
  location: resourceGroup().location
  properties: {
    publisher: 'Microsoft.GuestConfiguration'
    type: 'ConfigurationForLinux'
    typeHandlerVersion: '1.0'
    autoUpgradeMinorVersion: true
    enableAutomaticUpgrade: true
    settings: {}
    protectedSettings: {}
  }
}

Windows용 확장을 배포하려면 다음을 수행합니다.

resource virtualMachine 'Microsoft.Compute/virtualMachines@2021-03-01' existing = {
  name: 'VMName'
}
resource windowsVMGuestConfigExtension 'Microsoft.Compute/virtualMachines/extensions@2020-12-01' = {
  parent: virtualMachine
  name: 'AzurePolicyforWindows'
  location: resourceGroup().location
  properties: {
    publisher: 'Microsoft.GuestConfiguration'
    type: 'ConfigurationforWindows'
    typeHandlerVersion: '1.0'
    autoUpgradeMinorVersion: true
    enableAutomaticUpgrade: true
    settings: {}
    protectedSettings: {}
  }
}

Terraform 템플릿

Linux용 확장을 배포하려면 다음을 수행합니다.

resource "azurerm_virtual_machine_extension" "gc" {
  name                       = "AzurePolicyforLinux"
  virtual_machine_id         = "<myVMID>"
  publisher                  = "Microsoft.GuestConfiguration"
  type                       = "ConfigurationForLinux"
  type_handler_version       = "1.0"
  auto_upgrade_minor_version = "true"
}

Windows용 확장을 배포하려면 다음을 수행합니다.

resource "azurerm_virtual_machine_extension" "gc" {
  name                       = "AzurePolicyforWindows"
  virtual_machine_id         = "<myVMID>"
  publisher                  = "Microsoft.GuestConfiguration"
  type                       = "ConfigurationforWindows"
  type_handler_version       = "1.0"
  auto_upgrade_minor_version = "true"
}

오류 메시지

다음 표에는 게스트 구성 확장을 사용하는 것과 관련된 오류 메시지가 나열되어 있습니다.

오류 코드 설명
NoComplianceReport VM에서 준수 데이터를 보고하지 않았습니다.
GCExtensionMissing 머신 구성(게스트 구성) 확장이 없습니다.
ManagedIdentityMissing 관리 ID가 없습니다.
UserIdentityMissing 사용자 할당 ID가 없습니다.
GCExtensionManagedIdentityMissing 머신 구성(게스트 구성) 확장 및 관리 ID가 없습니다.
GCExtensionUserIdentityMissing 머신 구성(게스트 구성) 확장 및 사용자 할당 ID가 없습니다.
GCExtensionIdentityMissing 머신 구성(게스트 구성) 확장, 관리 ID, 사용자 할당 ID가 없습니다.

다음 단계