You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Terraform在Microsoft Defender for Cloud中启用指定代理

在Microsoft Defender for Cloud中通过Terraform启用Log Analytics/Azure Monitor代理的问题

我希望通过Terraform在Microsoft Defender for Cloud中启用「Log Analytics agent/Azure Monitor agent」,但当前使用的Terraform代码无法生效,请问该如何操作?

Defender for Cloud代理启用界面

我的Terraform代码如下:

resource "azurerm_security_center_subscription_pricing" "mdc_vm" {
  count         = var.enable_defender_plan_for_virtualmachines ? 1 : 0
  tier          = "Standard"
  resource_type = "VirtualMachines"
}

resource "null_resource" "reset_vm" {
  count = var.enable_defender_plan_for_virtualmachines ? 1 : 0
  triggers = {
    ad_info = local.az_info
  }
  provisioner "local-exec" {
    when    = destroy
    command = <<-EOD
      az login --service-principal -u ${element(split(",", self.triggers.ad_info), 0)} -p $ARM_CLIENT_SECRET --tenant ${element(split(",", self.triggers.ad_info), 2)}
      az security pricing create -n VirtualMachines --tier 'Free' --subscription ${element(split(",", self.triggers.ad_info), 1)}
    EOD
  }
}

问题原因

你当前的代码仅启用了Defender for Virtual Machines的标准防护层,但没有配置自动部署代理的核心设置——Defender for Cloud的代理启用需要同时开启防护计划和自动代理部署两个环节,缺一不可。

解决方案

添加azurerm_security_center_auto_provisioning资源来配置自动部署代理,以下是完整的修正代码:

# 启用Defender for Virtual Machines标准层
resource "azurerm_security_center_subscription_pricing" "mdc_vm" {
  count         = var.enable_defender_plan_for_virtualmachines ? 1 : 0
  tier          = "Standard"
  resource_type = "VirtualMachines"
}

# 配置自动部署Log Analytics代理(适用于传统代理)
resource "azurerm_security_center_auto_provisioning" "log_analytics_agent" {
  count               = var.enable_defender_plan_for_virtualmachines ? 1 : 0
  auto_provision      = "On"
  # 如果需要指定自定义工作区,取消下面注释并填入工作区ID
  # workspace_id       = azurerm_log_analytics_workspace.example.id
}

# 若要启用Azure Monitor代理(新一代代理),添加以下资源
resource "azurerm_security_center_auto_provisioning" "azure_monitor_agent" {
  count                               = var.enable_defender_plan_for_virtualmachines ? 1 : 0
  azure_monitor_agent_auto_provision = "On"
}

# 销毁时重置防护计划和代理部署设置
resource "null_resource" "reset_vm" {
  count = var.enable_defender_plan_for_virtualmachines ? 1 : 0
  triggers = {
    ad_info = local.az_info
  }
  provisioner "local-exec" {
    when    = destroy
    command = <<-EOD
      az login --service-principal -u ${element(split(",", self.triggers.ad_info), 0)} -p $ARM_CLIENT_SECRET --tenant ${element(split(",", self.triggers.ad_info), 2)}
      # 重置Defender防护层为Free
      az security pricing create -n VirtualMachines --tier 'Free' --subscription ${element(split(",", self.triggers.ad_info), 1)}
      # 关闭自动代理部署
      az security auto-provisioning-setting update -n default --auto-provision Off --subscription ${element(split(",", self.triggers.ad_info), 1)}
      # 若启用了Azure Monitor代理,也需要关闭
      az security auto-provisioning-setting update -n default --azure-monitor-agent-auto-provision Off --subscription ${element(split(",", self.triggers.ad_info), 1)}
    EOD
  }
}

关键说明

  • azurerm_security_center_auto_provisioning是控制代理自动部署的核心资源:
    • auto_provision = "On"会自动给订阅内的虚拟机部署Log Analytics代理
    • azure_monitor_agent_auto_provision = "On"用于启用新一代Azure Monitor代理的自动部署
  • 如果需要将代理数据发送到自定义Log Analytics工作区,指定workspace_id参数即可,否则会使用Defender默认创建的工作区
  • 确保执行Terraform的服务主体拥有Security Admin或Contributor权限,否则无法修改安全中心设置

内容的提问来源于stack exchange,提问作者One Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:50:20