你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Policy 符合性状态

符合性的工作原理

在分配计划或策略定义时,Azure Policy 会确定哪些资源是适用的,然后评估尚未排除豁免的资源。 评估会根据策略规则以及每个资源对这些要求的遵循情况来生成符合性状态。

可用的符合性状态

不符合

当策略规则的条件评估结果为 TRUE 时,效果为 auditauditIfNotExistsmodify 的策略分配将被视为不符合新建、已更新或现有资源。

当策略规则的条件评估结果为 TRUE 时,效果为 appenddenydeployIfNotExists 的策略分配将被视为不符合现有资源。 在请求时自动修正或拒绝资源和更新的资源,以强制实施符合性。 在更新以前存在的不合规资源时,在资源部署和策略评估完成之前,符合性状态将保持不变。

注意

deployIfNotExistsauditIfNotExists 效果需要 IF 语句为 TRUE,且存在条件为 FALSE 才能为不符合。 如果为 TRUE,则 IF 条件会触发相关资源存在条件的计算。

在两种情况下,具有 manual 效果的策略分配会被视为不符合:

  1. 策略定义的默认符合性状态为不符合,并且对适用资源不存在说明其他情况的活动证明
  2. 资源已证明为不符合。

要确定资源处于不符合状态的原因或查找更改负责人,请参阅确定不符合状态的原因。 要对 deployIfNotExistsmodify 策略的不合规资源进行修正,请参阅使用 Azure Policy 修正不符合的资源

符合

当策略规则的条件评估结果为 FALSE 时,效果为 appendauditauditIfNotExistsdenydeployIfNotExistsmodify 的策略分配将被视为不符合新建、已更新或现有资源。

在两种情况下,具有 manual 效果的策略分配会被视为符合:

  1. 策略定义的默认符合性状态为符合,并且对适用资源不存在说明其他情况的活动证明
  2. 资源已证明为合规。

错误

错误符合性状态会提供给生成系统错误的策略分配,例如模板或评估错误。

存在冲突

如果同一范围内存在两个或更多个策略分配且规则相互矛盾或冲突,则策略分配被视为冲突。 例如,两个定义追加带有不同值的同一个标记。

例外

在策略分配处于豁免范围内时,适用的资源具有该策略分配的豁免符合性状态。

注意

豁免不同于排除。 有关详细信息,请参阅了解 Azure Policy 中的范围

未知

未知是效果为 manual 的定义的默认符合性状态,除非已将默认值显示设置为符合或不符合。 此状态指示符合性证明是有保证的。 此符合性状态仅适用于具有 manual 效果的符合性状态。

受保护

受保护状态表示资源在分配下包含 denyAction 效果。

未注册

如果 Azure Policy 资源提供程序尚未注册,或者登录的帐户无权读取符合性数据,则 Azure 门户中会显示此符合性状态。

注意

如果符合性状态被报告为“未注册”,请验证是否已注册 Microsoft.PolicyInsights 资源提供程序,以及用户是否具有相应的 Azure 基于角色的访问控制 (Azure RBAC) 权限,如 Azure Policy 中的 Azure RBAC 权限所述。 要注册 Microsoft.PolicyInsights,请按照 Azure 资源提供程序和类型中的步骤操作。

未开始

此符合性状态指示尚未启动策略或资源的评估周期。

示例

现在,你已经了解什么是符合性状态以及每种状态的含义,接下来让我们看看使用符合性状态和不符合状态的示例。

假设你有一个资源组 - ContsoRG,其中包含一些向公用网络公开的存储帐户(以红色突出显示)。

向 Contoso R G 资源组中的公共网络公开的存储帐户图。

图中显示了 Contoso R G 资源组中五个存储帐户的映像。 存储帐户 1 和 3 为蓝色,而存储帐户 2、4 和 5 为红色。

在此示例中,需要慎重考虑安全风险。 假设你分配了一个策略定义,以审核向公用网络公开的存储帐户,并且未为此分配创建任何豁免。 策略将检查适用的资源(包括 ContosoRG 资源组中的所有存储帐户),然后评估未从评估中排除的资源。 它会审核向公用网络公开的三个存储帐户,从而将其符合性状态更改为“不符合”。其余部分则会标记为“符合”。

Contoso R G 资源组中存储帐户的合规性图。

图中显示了 Contoso R G 资源组中五个存储帐户的映像。 存储帐户 1 和 3 下面现在有绿色的勾号,而存储帐户 2、4 和 5 下面现在有红色警告标志。

合规性汇总

符合性状态是按资源、按策略分配确定的。 但我们通常需要全面了解环境状态,这是聚合符合性发挥作用的地方。

可通过多种方式在门户中查看聚合的符合性结果:

聚合符合性视图 决定合规性状态的因素
范围 所选范围中的所有策略
计划 计划中的所有策略
计划组或控制 组或控件中的所有策略
策略 所有适用的资源
资源 所有适用的策略

比较不同的符合性状态

那么,如果多个资源或策略本身具有不同的合规性状态,如何确定聚合的合规性状态呢? Azure Policy 会将每种符合性状态进行排名,以便在此情况下,一种状态会优先于另一种状态。 排名顺序为:

  1. 不符合
  2. 符合
  3. 错误
  4. 存在冲突
  5. 受保护(预览版)
  6. 已豁免
  7. 未知(预览版)

注意

符合性汇总计算中不考虑“未启动”和“未注册”。

按照此排名顺序,如果同时存在不合规与合规状态,则汇总的聚合将为不符合,并以此类推。 我们来看一个示例:

假设某个计划包含 10 个策略,有一个资源已从一个策略豁免,但它符合其余的 9 个策略。 由于合规状态比豁免状态的排名更高,该资源将在计划的汇总摘要中注册为“合规”。 因此,仅当某个资源从该计划中的其他每个适用策略豁免,或者对这些策略的符合性未知时,该资源才会显示为从整个计划豁免。 另一方面,如果资源不符合计划中的至少一个适用策略,则无论它是否符合其余的适用策略,它的总体合规性状态都是不符合。

符合性百分比

符合性百分比由“符合”资源、“豁免”资源和“未知”资源与“总资源”之比来确定。 总资源包括符合不符合未知豁免冲突错误状态的资源。

overall compliance % = (compliant + exempt + unknown + protected)  / (compliant + exempt + unknown + non-compliant + conflicting + error + protected)

下图显示了 20 个适用的不同资源,其中只有一个资源不符合。 因此,资源的整体符合性为 95%(19/20)。

“合规性”页面中策略合规性详细信息的屏幕截图。

后续步骤