在 Microsoft Defender for Cloud 中创建自定义安全标准和建议

Microsoft Defender for Cloud 中的安全建议可帮助改进和增强安全状况。 建议基于针对为已启用 Defender for Cloud 的 Azure 订阅定义的安全标准的评估。

本文介绍如何:

  • 使用 KQL 查询为所有 Azure 创建自定义建议。
  • 将自定义建议分配给自定义安全标准。

开始之前

  • 要创建新的安全标准,需要对订阅具有所有者权限。
  • 需要具有安全管理员权限才能创建自定义建议。
  • 要基于 KQL 创建自定义建议,必须启用 Defender CSPM 计划。 所有客户都可以基于 Azure Policy 创建自定义建议。
  • 查看 Azure 云中的支持以获取自定义建议。

创建自定义建议

创建自定义建议,包括修正步骤、严重性,以及应将建议分配到的标准。 使用 KQL 添加建议逻辑。 可以使用带有内置查询模板的简单查询编辑器,可根据需要对其进行调整,也可以从头开始编写 KQL 查询。

  1. 在 Defender for Cloud 门户的>“环境设置”中,选择相关范围。

  2. 选择“安全策略”>“+创建”>“自定义建议”。

  3. 在“建议详细信息”中,填写建议详细信息(例如:名称、严重性),然后选择要应用此建议的标准

    显示在何处填写建议说明详细信息的屏幕截图。

  4. 选择下一步

  5. 在“建议查询”中,编写 KQL 查询,或选择“打开查询编辑器”来构建查询。 如果要使用查询编辑器,请按照下面的说明操作。

  6. 查询就绪后,选择“下一步”

  7. 在“标准”中,选择要向其添加自定义建议的自定义标准

  8. 并在“查看并创建”中查看建议详细信息

    显示查看建议详细信息的位置的屏幕截图。

使用查询编辑器

建议使用查询编辑器来创建建议查询。

  • 使用编辑器有助于先生成和测试查询,然后再开始使用。
  • 选择“操作方法”,以获取有关构建查询的帮助,以及其他说明和链接
  • 编辑器包含内置建议查询的示例,可用于帮助生成自己的查询。 数据显示结构和 API 中的一样。
  1. 在查询编辑器中,选择“新建查询”以创建查询

  2. 使用示例查询模板及其说明,或选择一个示例内置建议查询以开始使用。

    显示如何使用 Azure 查询编辑器的屏幕截图。

  3. 选择“运行查询”,测试已创建的查询

  4. 查询准备就绪后,将其从编辑器剪切并粘贴到“建议查询”窗格中

创建自定义标准

可将自定义建议分配给一个或多个自定义标准。

  1. 登录到 Azure 门户

  2. 导航到“Microsoft Defender for Cloud”“环境设置”。

  3. 选择相关范围。

  4. 选择“安全策略”>“+创建”>“标准”。

  5. 在“建议”中,选择要添加到自定义标准的建议。 对于 Azure 订阅,还可以查看源。

    列出可用于为自定义标准选择的所有建议的屏幕截图。

  6. 选择创建

使用 Azure Policy 创建和增强自定义建议(旧版)

对于 Azure 订阅,可以使用 Azure Policy 创建自定义建议和标准并对其进行增强。 这是一项旧功能,建议使用新的自定义建议功能。

创建自定义建议/标准(旧版)

可以在 Defender for Cloud 中创建自定义建议和标准,方法是在 Azure Policy 中创建策略定义和计划,然后在 Defender for Cloud 中载入它们。

下面介绍了操作方法:

  1. Azure Policy 门户中创建一个或多个策略定义,或以编程方式创建。
  2. 创建策略计划,其中包含自定义策略定义。

将计划载入为自定义标准(旧版)

策略分配由 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 查询的详细信息: