다음을 통해 공유


Azure Machine Configuration 확장

Machine Configuration 확장은 VM(가상 머신) 내에서 감사 및 구성 작업을 수행합니다.

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

필수 조건

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

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

운영 체제

컴퓨터 구성 확장에 대한 운영 체제 지원은 엔드 투 엔드 솔루션에 대한 문서화된 운영 체제 지원과 동일합니다.

Internet connectivity

컴퓨터 구성 확장에 의해 설치된 에이전트는 게스트 구성 할당에 나열된 콘텐츠 패키지에 도달하고 상태를 Machine Configuration 서비스에 보고할 수 있어야 합니다. VM은 TCP 포트 443을 통해 아웃바운드 HTTPS를 사용하거나 프라이빗 네트워킹을 통해 제공되는 연결을 사용하여 연결할 수 있습니다.

프라이빗 네트워킹에 대한 자세한 내용은 다음 문서를 참조하세요.

익스텐션 설치

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

비고

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

배포 고려 사항

Machine Configuration 확장을 설치하고 배포하기 전에 다음 고려 사항을 검토합니다.

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 template

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

오류 메시지

다음 표에서는 게스트 구성 확장 사용과 관련된 가능한 오류 메시지를 나열합니다.

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

다음 단계