重要
注意:根据世纪互联发布的公告,2026 年 8 月 18 日,中国地区的 Azure 中将正式停用所有 Microsoft Defender for Cloud 功能。
Microsoft Defender for Cloud 中的安全建议可帮助改进和增强安全状况。 建议基于针对为已启用 Defender for Cloud 的 Azure 订阅定义的安全标准的评估。
本文介绍如何:
- 使用 KQL 查询为所有 Azure 创建自定义建议。
- 将自定义建议分配给自定义安全标准。
开始之前
- 要创建新的安全标准,需要对订阅具有所有者权限。
- 需要具有安全管理员权限才能创建自定义建议。
- 要基于 KQL 创建自定义建议,必须启用 Defender CSPM 计划。 所有客户都可以基于 Azure Policy 创建自定义建议。
- 查看 Azure 云中的支持以获取自定义建议。
创建自定义建议
创建自定义建议,包括修正步骤、严重性,以及应将建议分配到的标准。 使用 KQL 添加建议逻辑。 可以使用带有内置查询模板的简单查询编辑器,可根据需要对其进行调整,也可以从头开始编写 KQL 查询。
- 在 Defender for Cloud 门户的>“环境设置”中,选择相关范围。 
- 选择“安全策略”“+创建”>“自定义建议”。> 
- 在“建议详细信息”中,填写建议详细信息(例如:名称、严重性),然后选择要应用此建议的标准。 
- 选择下一步。 
- 在“建议查询”中,编写 KQL 查询,或选择“打开查询编辑器”来构建查询。 如果要使用查询编辑器,请按照下面的说明操作。 
- 查询就绪后,选择“下一步”。 
- 在“标准”中,选择要向其添加自定义建议的自定义标准。 
- 并在“查看并创建”中查看建议详细信息。 
使用查询编辑器
建议使用查询编辑器来创建建议查询。
- 使用编辑器有助于先生成和测试查询,然后再开始使用。
- 选择“操作方法”,以获取有关构建查询的帮助,以及其他说明和链接。
- 编辑器包含内置建议查询的示例,可用于帮助生成自己的查询。 数据显示结构和 API 中的一样。
- 在查询编辑器中,选择“新建查询”以创建查询 
- 使用示例查询模板及其说明,或选择一个示例内置建议查询以开始使用。 
- 选择“运行查询”,测试已创建的查询。 
- 查询准备就绪后,将其从编辑器剪切并粘贴到“建议查询”窗格中。 
大规模使用自定义建议
对于大多数用户而言,通过 Azure 门户用户界面创建自定义推荐是最佳方式。 该界面提供了一个便捷的 Kusto 查询语言 (KQL) 编辑器以及内置的验证工具。 然而,采用编程方式自动创建推荐可能会有帮助。 当你需要跨多个环境或订阅部署建议时,此方法尤为有用。
通过 API 自动执行
如果预先验证了 KQL 查询并想要自动创建自定义建议,则可以使用 Azure Defender for Cloud 应用程序编程接口 (API)。 使用此方法,可以快速部署建议,确保它们在整个云环境中保持一致且可缩放。
- 优势:可以自动执行和缩放自定义建议的部署。
- 何时使用:此方法非常适合大规模实现,在这种大规模实现中,需要在多个环境中一致地应用建议。
有关使用 API 管理自定义建议的详细信息,请参阅 API 文档。
创建自定义标准
可将自定义建议分配给一个或多个自定义标准。
- 登录到 Azure 门户。 
- 导航到“Microsoft Defender for Cloud”“环境设置”。 
- 选择相关范围。 
- 选择“安全策略”“+创建”>“标准”。> 
- 在“建议”中,选择要添加到自定义标准的建议。 对于 Azure 订阅,还可以查看源。 
- 选择创建。 
使用 Azure Policy 创建和增强自定义建议(旧版)
对于 Azure 订阅,可以使用 Azure Policy 创建自定义建议和标准并对其进行增强。 这是一项旧功能,建议使用新的自定义建议功能。
创建自定义建议/标准(旧版)
可以在 Defender for Cloud 中创建自定义建议和标准,方法是在 Azure Policy 中创建策略定义和计划,然后在 Defender for Cloud 中载入它们。
下面介绍了操作方法:
- 在 Azure Policy 门户中创建一个或多个策略定义,或以编程方式创建。
- 创建策略计划,其中包含自定义策略定义。
将计划载入为自定义标准(旧版)
策略分配由 Azure Policy 用于将 Azure 资源分配到策略或计划。
若要将计划载入 Defender 中的自定义安全标准,需要在请求正文中包含 "ASC":"true",如下所示。 
              ASC 字段将计划加入 Microsoft Defender for Cloud。
以下示例演示如何执行此操作。
有关载入自定义计划的示例
  PUT  
  PUT https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policySetDefinitions/{policySetDefinitionName}?api-version=2021-06-01
  Request Body (JSON) 
  {
    "properties": {
      "displayName": "Cost Management",
      "description": "Policies to enforce low cost storage SKUs",
      "metadata": {
        "category": "Cost Management"
        "ASC":"true"
      },
      "parameters": {
        "namePrefix": {
          "type": "String",
          "defaultValue": "myPrefix",
          "metadata": {
            "displayName": "Prefix to enforce on resource names"
          }
        }
      },
      "policyDefinitions": [
        {
          "policyDefinitionId": "/subscriptions/<Subscription ID>/providers/Microsoft.Authorization/policyDefinitions/7433c107-6db4-4ad1-b57a-a76dce0154a1",
          "policyDefinitionReferenceId": "Limit_Skus",
          "parameters": {
            "listOfAllowedSKUs": {
              "value": [
                "Standard_GRS",
                "Standard_LRS"
              ]
            }
          }
        },
        {
          "policyDefinitionId": "/subscriptions/<Subscription ID>/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
          "policyDefinitionReferenceId": "Resource_Naming",
          "parameters": {
            "prefix": {
              "value": "[parameters('namePrefix')]"
            },
            "suffix": {
              "value": "-LC"
            }
          }
        }
      ]
    }
  }
有关删除工作分配的示例
此示例演示如何删除分配:
  DELETE   
  https://management.chinacloudapi.cn/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2018-05-01 
增强自定义建议(旧版)
通过 Microsoft Defender for Cloud 提供的内置建议包括严重性级别和修正说明等详细信息。 如果要将此类型的信息添加到 Azure 的自定义建议中,请使用 REST API。
可添加的两种类型的信息为:
- RemediationDescription - 字符串
- Severity - 枚举 [Low、Medium、High]
对于属于自定义计划一部分的策略,应将元数据添加到策略定义中。 它应在“securityCenter”属性中,如下所示:
 "metadata": {
  "securityCenter": {
    "RemediationDescription": "Custom description goes here",
    "Severity": "High"
    },
下面是包含 metadata/securityCenter 属性的另一个自定义策略示例:
{
"properties": {
"displayName": "Security - ERvNet - AuditRGLock",
"policyType": "Custom",
"mode": "All",
"description": "Audit required resource groups lock",
"metadata": {
  "securityCenter": {
    "RemediationDescription": "Resource Group locks can be set via Azure Portal -> Resource Group -> Locks",
    "Severity": "High"
 }
},
"parameters": {
  "expressRouteLockLevel": {
    "type": "String",
    "metadata": {
      "displayName": "Lock level",
      "description": "Required lock level for ExpressRoute resource groups."
    },
    "allowedValues": [
      "CanNotDelete",
      "ReadOnly"
    ]
  }
},
"policyRule": {
  "if": {
    "field": "type",
    "equals": "Microsoft.Resources/subscriptions/resourceGroups"
  },
  "then": {
    "effect": "auditIfNotExists",
    "details": {
      "type": "Microsoft.Authorization/locks",
      "existenceCondition": {
        "field": "Microsoft.Authorization/locks/level",
        "equals": "[parameters('expressRouteLockLevel')]"
      }
    }
  }
}
}
}
有关使用 securityCenter 属性的其他示例,请参阅 REST API 文档的此部分。
相关内容
可使用以下链接了解有关 Kusto 查询的详细信息:
 
              
               
              
               
              
              