你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Microsoft Defender for Cloud 中创建自定义安全标准和建议
Microsoft Defender for Cloud 中的安全建议可帮助改进和增强安全状况。 建议基于针对为已启用 Defender for Cloud 的 Azure 订阅、AWS 帐户和 GCP 项目定义的安全标准的评估。
本文介绍如何:
- 使用 KQL 查询创建适用于所有云(Azure、AWS 和 GCP)的自定义建议。
- 将自定义建议分配给自定义安全标准。
开始之前
- 要创建新的安全标准,需要对订阅具有所有者权限。
- 需要具有安全管理员权限才能创建自定义建议。
- 要基于 KQL 创建自定义建议,必须启用 Defender CSPM 计划。 所有客户都可以基于 Azure Policy 创建自定义建议。
- 查看 Azure 云中的支持以获取自定义建议。
建议观看此 Defender for Cloud 运用剧集以详细了解功能,并深入了解如何创建 KQL 查询。
创建自定义建议
创建自定义建议,包括修正步骤、严重性,以及应将建议分配到的标准。 使用 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.azure.com/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.azure.com/{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 查询的详细信息: