{ "mode": "索引", “政策规则”:{ “如果”:{ “全部”:[ { “字段”:“类型”, “等于”:“Microsoft.Resources /订阅/资源组” }, { "field": "标签['环境']", “存在”:“假” } ] }, “然后”:{ "效果": "拒绝" } } } ````
* **说明**:此策略检查资源是否为资源组(`Microsoft.Resources/subscriptions/resourceGroups`)并且`Environment`标记不存在(`exists: false`)。如果两个条件都为真,则“拒绝”效果会阻止创建或更新资源组。
- 单击“保存”。
3. 分配自定义策略
现在,让我们将刚刚创建的策略分配给特定的资源组。
- 在策略服务的左侧导航窗格中的“创建”下,选择“分配”。
-
单击“+ 分配策略”。
-
基础知识:
- 范围:单击三个点 (
...),然后选择要应用策略的订阅和资源组(例如,my-resource-group)。 - 策略定义:单击三个点 (
...) 并查找您创建的策略(需要资源组上的环境标签)。选择它。 - 分配名称:它将自动填充,但您可以更改它(例如:
Attribution-Tag-Environment-RG)。 - 描述:提供描述。
- 策略执行:保持“启用”。
- 范围:单击三个点 (
-
单击“下一步”。
-
参数:该策略没有参数,点击“下一步”。
- 修复:对于具有“DeployIfNotExists”或“Modify”等效果的策略,您可以在此处配置修复任务。对于“拒绝”,它不适用。单击“下一步”。
- 不合格消息:可以选择自定义用户在尝试创建不合格资源时看到的消息。单击“下一步”。
- 查看 + 创建:查看设置并单击 创建。
4. 测试强制标记策略
- 在 Azure 门户中,尝试在分配范围内创建新的资源组(“my-resource-group”)。
- 填写资源组详细信息时,不要添加
Environment标签。 -
尝试创建资源组。
- 预期结果:资源组创建应该失败,并显示一条错误消息,指示“需要资源组上的环境标签”策略拒绝该操作,因为缺少“环境”标签。
-
现在,尝试创建一个新的资源组并添加带有值的
Environment标签(例如:Environment:Development)。- 预期结果:资源组创建应该成功。
5. 制定倡议(政策集)
让我们创建一项计划来对常见安全策略进行分组,例如要求存储帐户使用 HTTPS 以及对 VM 磁盘进行加密。
- 在策略服务的左侧导航窗格中的“创建”下,选择“倡议”。
-
单击“+倡议定义”。
-
基础知识:
- 定义位置:选择订阅或管理组。
- 名称:
基本安全倡议。 - 描述:
一组用于基本合规性的基本安全策略。 - 类别:选择“使用现有”并选择“安全”。
-
单击“下一步”。
-
策略:单击“+ 添加策略定义”。
- 查找内部策略,例如“存储帐户必须仅使用 HTTPS”和“虚拟机磁盘必须加密”。
- 选择它们并单击“添加”。
-
初始参数:如果添加的策略有参数,可以在这里进行配置。单击“下一步”。
- 查看 + 创建:查看设置并单击 创建。
6. 分配倡议
将安全计划分配给整个订阅,以确保应用其中的所有策略。
- 在策略服务的左侧导航窗格中的“创建”下,选择“分配”。
-
单击“+ 分配倡议”。
-
基础知识:
- 范围:选择整个订阅。
- 倡议:搜索“基本安全倡议”并选择它。
- 作业名称:Ser会自动填写。
- 策略执行:保持“启用”。
-
单击“下一步”。
-
参数:配置倡议中定义的任何参数。单击“下一步”。
- 修复:对于“审核”策略,您可以创建修复任务来修复不合规的资源。对于“拒绝”,它不适用。单击“下一步”。
- 不合规消息:(可选)自定义消息。单击“下一步”。
- 查看 + 创建:查看设置并单击 创建。
7. 审查合规性
分配后,Azure Policy 需要一些时间来评估现有资源并报告合规性。
- 在策略服务的左侧导航窗格中的“创作”下,选择“合规性”。
-
您将看到一个合规仪表板,显示您的策略和计划分配的整体合规状态。
-
单击分配以查看详细信息,包括哪些资源合规、哪些资源不合规。您可以按“合规状态”进行过滤,以仅查看不合规的资源。
-
对于不符合
DeployIfNotExists或Modify策略的资源,您可以创建修复任务来自动修复这些资源。- 在作业详细信息页面上,单击“创建修复任务”。
- 选择您要修复的策略,然后单击“修复”。
安全提示和最佳实践
- **从“审核”开始:实施新策略时,从“审核”效果开始,了解影响并识别不合规的资源,而不会阻塞操作。验证后,将其更改为“拒绝”或“修改”/“DeployIfNotExists”。
- 适当的范围:在尽可能高的范围(管理组或订阅)中分配策略,并在必要时对较低范围使用排除。这确保了广泛且一致的覆盖范围。
- 使用倡议:将相关政策分组为倡议,以简化管理并确保应用一套完整的规则。
- 命名约定:对策略定义、计划和分配使用清晰一致的命名约定,以便于识别和管理。
- 版本控制:将您的自定义策略定义存储在版本控制系统(例如 Git)中,以跟踪更改、协作并促进自动化部署。
- 持续监控:定期监控 Azure 策略合规性仪表板。配置严重不合格项的警报。
- 与 Azure DevOps/GitHub Actions 集成:使用 CI/CD 管道自动执行策略部署,以确保以一致且可追踪的方式应用策略。
- 文档:保留有关您的政策、其目标、效果和任何例外情况的清晰文档。
常见故障排除
- 资源被不当阻止:
- 检查 Azure Monitor 中的活动日志以查看哪个策略拒绝了该操作。该错误通常包括策略名称。
- 检查策略定义和分配,以确保条件和范围正确。
- 如果有意阻止,请考虑对特定资源或资源组使用排除。
- 未检测到不合格资源:
- 验证该策略是否已分配到正确的范围,并且强制执行是否为“已启用”。
- 确保策略定义正确,并且对于不合格资源,条件评估为“true”。
- 政策更改的传播和合规性报告的更新最多可能需要 30 分钟。
- 修复任务失败:
- 检查修复任务日志以识别错误。
- 确保分配给策略角色的托管标识具有修改资源所需的权限。
DeployIfNotExists或Modify策略可能在部署模型或修改操作中存在错误。
- 政策不适用于现有资源:
- 具有“拒绝”或“审核”效果的策略评估现有资源和新资源。具有“DeployIfNotExists”和“Modify”的策略需要颜色修复任务修复现有资源或仅对新创建/更新采取行动。
- 策略冲突:如果多个策略适用于同一资源,则通常以限制性最强的策略为准(例如,“拒绝”优于“审核”)。审查任务和范围。
结论
对于任何希望建立有效治理并确保 Azure 云中资源合规性的组织来说,Azure Policy 都是一个基本工具。通过实现从资源标记到关键安全配置的规则执行自动化,Azure Policy 有助于在复杂且不断变化的环境中维持秩序、降低风险并优化成本。创建自定义策略并将其分组为计划的能力提供了满足特定业务和监管要求的灵活性。通过本实用指南,安全专业人员和 IT 管理员将能够配置、验证和管理 Azure Policy,为安全且合规的云治理策略奠定坚实的基础。
参考资料:
[1] 微软学习。 什么是 Azure 策略?。网址:https://learn.microsoft.com/pt-br/azure/governance/policy/overview [2] 微软学习。 教程:创建和管理策略以强制合规性。网址:https://learn.microsoft.com/pt-br/azure/governance/policy/tutorials/create-and-manage [3] 微软学习。 Azure RBAC 中的 Azure Policy 权限。位于:https://learn.microsoft.com/pt-br/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy [4] 微软学习。 Azure 策略定义框架。网址:https://learn.microsoft.com/pt-br/azure/governance/policy/concepts/definition-struct [5] 微软学习。 Azure Policy 计划定义框架。网址:https://learn.microsoft.com/pt-br/azure/governance/policy/concepts/initiative-definition-struct [6] 微软学习。 教程:创建自定义策略定义。网址:https://learn.microsoft.com/pt-br/azure/governance/policy/tutorials/create-custom-policy-definition [7] 微软学习。 如何修复不符合 Azure 策略的资源。网址:https://learn.microsoft.com/pt-br/azure/governance/policy/how-to/remediate-resources