评估新 Azure Policy 定义的影响

Azure Policy 是一种功能强大的工具,用于管理 Azure 资源以符合业务标准并满足合规性需求。 当用户、过程或管道创建或更新资源时,Azure Policy 会评审请求。 当策略定义效果为 ModifyAppendDeployIfNotExists 时,Policy 会更改请求或对其进行补充。 当策略定义效果为 AuditAuditIfNotExists 时,Policy 会导致创建活动日志项,用于全新和更新的资源。 当策略定义效果为 DenyDenyAction 时,Policy 会停止创建或更改请求。

如果你知道已正确定义了策略,则这些结果将完全符合预期。 不过,需要先验证新策略按预期方式工作,然后才允许它更改或阻止工作,这十分重要。 验证必须确保仅将预期资源确定为不合规,并且不会在结果中错误地包含任何合规资源(称为假正)。

验证新策略定义的建议方法是执行以下步骤:

  • 严格定义策略
  • 测试策略的有效性
  • 审核新的或更新的资源请求
  • 将策略部署到资源
  • 持续监视

严格定义策略

了解如何将业务策略作为策略定义来实现,以及 Azure 资源与其他 Azure 服务的关系十分重要。 此步骤通过识别要求以及确定资源属性来完成。 不过,超越业务策略的狭隘定义也十分重要。 例如,你的策略状态是否为“所有虚拟机都必须...”? 使用 VM 的其他 Azure 服务(如 HDInsight 或 AKS)怎么处理? 定义策略时,必须考虑此策略如何影响其他服务所使用的资源。

出于此原因,策略定义应严格进行定义,并尽可能侧重于需要评估合规性的资源和属性。

测试策略的有效性

在希望使用新策略定义管理新的或更新的资源之前,最好了解如何评估现有资源的有限子集(如测试资源组)。 你可以在策略分配中使用值为“已禁用”(DoNotEnforce) 的强制模式在开发环境中分配定义,以防止触发该效果或创建活动日志条目

此步骤使你可以在不影响工作流的情况下评估新策略对现有资源的合规性结果。 检查任何合规的资源是否显示为不合规(误报),并且已正确标记预期不合规的所有资源。 按预期验证资源的初始子集后,逐渐将评估扩展到更多现有资源和更多范围。

以这种方式评估现有资源还可以有机会在完整实现新策略之前修正不合规资源。 如果策略定义效果为 DeployIfNotExists 或 Modify,可以手动或通过修正任务完成此清理过程

效果为 DeployIfNotExist 的策略定义应利用 Azure 资源管理器模板来验证和测试部署 ARM 模板时发生的更改

审核新的或更新的资源

验证新策略定义可对现有资源正确报告后,便可以查看策略在创建或更新资源时的影响。 如果策略定义支持效果参数化,请使用 Audit 或 AuditIfNotExist。 此配置使你可以监视资源的创建和更新以了解新策略定义是否在 Azure 活动日志中为不合规资源触发条目,而不影响现有工作或请求。

建议同时更新并创建与策略定义匹配的新资源,以确定 Audit 或 AuditIfNotExist 效果是否按预期正常触发。 请注意本不应受触发 Audit 或 AuditIfNotExist 效果的新策略定义影响的资源请求。 这些受影响的资源是假正的另一个示例,在进行完整实现之前,必须在策略定义中得到修复。

如果在此测试阶段更改了策略定义,则建议从现有资源的审核重新开始验证过程。 在新的或更新的资源上针对假正的策略定义更改也可能会影响现有资源。

将策略部署到资源

通过现有资源以及新的或更新的资源请求完成对新策略定义的验证之后,可开始实现策略的过程。 建议为新的策略定义创建策略分配,将它先分配给所有资源的子集(如资源组)。 可以使用策略分配中的 resourceSelectors 属性进一步按资源类型或位置进行筛选。验证初始部署后,将策略的范围扩展到更广泛的资源组。 验证初始部署后,通过调整 resourceSelector 筛选器以针对更多位置或资源类型,或者删除分配并将其替换为订阅和管理组等范围更广的新分配,从而扩大策略的影响。 继续逐步推出,直到分配给新策略定义涉及的全部资源。

在推出过程中,如果找到应从新策略定义中排除的资源,请按以下方式之一进行处理:

  • 更新策略定义以更明确地减少意外影响
  • 更改策略分配的范围(通过删除并创建新分配)
  • 将资源组添加到策略分配的排除列表中

对范围(级别或排除)进行的任何更改都应进行完整验证,并与安全和合规性组织进行沟通,以确保覆盖范围中没有缺口。

监视策略和合规性

实现并分配策略定义并不是最后一步。 持续监视资源对新策略定义的合规性级别,并设置适当的 Azure Monitor 警报和通知以用于识别出不合规设备的情况。 还建议按计划评估策略定义和相关分配,以验证策略定义是否满足业务策略和合规性需求。 如果不再需要,则应该删除策略。 随着底层 Azure 资源发展,以及添加新属性和功能,策略也需要时常更新。

后续步骤