在 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 门户。
导航到“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 查询的详细信息: