在分配计划或策略定义时,Azure Policy 会确定哪些资源是适用的,然后评估尚未排除或豁免的资源。 评估会根据策略规则以及每个资源对这些要求的遵循情况来生成符合性状态。
当策略规则的条件评估结果为 TRUE
时,具有 audit
、auditIfNotExists
或 modify
效果的策略分配将被视为不符合新建、更新或现有资源。
当策略规则的条件评估结果为 TRUE
时,具有 append
、deny
和 deployIfNotExists
效果的策略分配被视为不符合 现有 资源。 新和更新的资源在请求时会被自动修正或拒绝,以确保遵循合规要求。 在更新以前存在的不合规资源时,在资源部署和策略评估完成之前,符合性状态将保持不变。
注意
deployIfNotExists
和 auditIfNotExists
效果需要 IF 语句为 TRUE,且存在条件为 FALSE 才会不符合规定。 如果为 TRUE,则 IF 条件会触发相关资源存在条件的计算。
在两种情况下,具有 manual
效果的策略分配会被视为不符合:
- 策略定义的默认符合性状态为不符合。
- 资源被认定为不合规。
要确定资源处于不符合状态的原因或查找更改负责人,请参阅确定不符合状态的原因。 要对 和 deployIfNotExists
策略的不合规资源进行modify
,请参阅使用 Azure Policy 修正不符合的资源。
当策略规则的条件评估结果为 FALSE
时,具有 append
、audit
、auditIfNotExists
、deny
、deployIfNotExists
或 modify
效果的策略分配将被视为符合适用于 新建、已更新 或 现有 资源。
在两种情况下,具有 manual
效果的策略分配会被视为符合:
- 策略定义的默认符合性状态为“符合”。
- 资源已证明为合规。
错误符合性状态提供给生成系统错误的策略分配,例如模板或评估错误。
如果同一范围内存在两个或更多个策略分配且规则相互矛盾或冲突,则策略分配被视为冲突。 例如,两个定义追加带有不同值的同一个标记。
当适用资源的策略分配在豁免范畴内时,其符合性状态为豁免。
注意
豁免不同于排除。 有关详细信息,请参阅了解 Azure Policy 中的范围。
除非将默认状态显式设置为符合或不符合,否则对于具有 manual
效果的定义,“未知”是其默认符合性状态。 此合规状态仅适用于具有 manual
效果的策略分配。
受保护状态表示资源在分配下包含 denyAction 效果。
如果 Azure Policy 资源提供程序尚未注册,或者登录的帐户无权读取符合性数据,则 Azure 门户中会显示此符合性状态。
注意
如果符合性状态被报告为“未注册”,请验证是否已注册 Microsoft.PolicyInsights
资源提供程序,以及用户是否具有相应的 Azure 基于角色的访问控制 (Azure RBAC) 权限,如 Azure Policy 中的 Azure RBAC 权限所述。
要注册 Microsoft.PolicyInsights
,请按照 Azure 资源提供程序和类型中的步骤操作。
此符合性状态指示尚未启动策略或资源的评估周期。
现在,你已经了解什么是符合性状态以及每种状态的含义,接下来让我们看看使用符合性状态和不符合状态的示例。
假设你有一个资源组 - ContsoRG,其中包含一些向公用网络公开的存储帐户(以红色突出显示)。
图中显示了 Contoso R G 资源组中五个存储帐户的映像。 存储帐户 1 和 3 为蓝色,而存储帐户 2、4 和 5 为红色。
在此示例中,需要慎重考虑安全风险。 假设你分配了一个策略定义,以审核向公用网络公开的存储帐户,并且未为此分配创建任何豁免。 策略将检查适用的资源(包括 ContosoRG 资源组中的所有存储帐户),然后评估未从评估中排除的资源。 它会审核向公用网络公开的三个存储帐户,从而将其符合性状态更改为“不符合”。其余部分则会标记为“符合”。
图中显示了 Contoso R G 资源组中五个存储帐户的映像。 存储帐户 1 和 3 下面现在有绿色的勾号,而存储帐户 2、4 和 5 下面现在有红色警告标志。
符合性状态是按资源、按策略分配确定的。 但我们通常需要全面了解环境状态,这是聚合符合性发挥作用的地方。
可通过多种方式在门户中查看聚合的符合性结果:
聚合合规性视图 | 决定合规性状态的因素 |
---|---|
范围 | 所选范围中的所有策略 |
计划 | 倡议中的所有策略 |
计划组或控件 | 组或控件中的所有策略 |
策略 | 所有适用的资源 |
资源 | 所有适用的策略 |
那么,如果多个资源或策略本身具有不同的合规性状态,如何确定聚合的合规性状态呢? Azure Policy 会将每种符合性状态进行排名,以便在此情况下,一种状态会优先于另一种状态。 排名顺序为:
- 不符合
- 符合
- 错误
- 冲突
- 受保护(预览版)
- 已豁免
- 未知(预览版)
按此排名顺序,如果同时存在不合规和合规状态,则汇总聚合将是不合规的,依此类推。 我们来看一个示例:
假设某个计划包含 10 个策略,有一个资源已从一个策略豁免,但它符合其余的 9 个策略。 由于合规状态比豁免状态的排名更高,该资源将在计划的汇总摘要中注册为“合规”。 因此,仅当某资源从该计划中的其他所有适用策略豁免,或者对这些策略的符合性未知时,该资源才会显示为从整个计划豁免。 另一方面,如果资源不符合计划中的至少一个适用策略,则无论它是否符合其余的适用策略,它的总体合规性状态都是不符合。
符合性百分比由“符合”资源、“豁免”资源和“未知”资源与“总资源”之比来确定。 总资源包括符合、不符合、未知、豁免、冲突和错误状态的资源。
overall compliance % = (compliant + exempt + unknown + protected) / (compliant + exempt + unknown + non-compliant + conflicting + error + protected)
下图显示了 20 个适用的不同资源,其中只有一个资源不符合。 因此,资源的整体符合性为 95%(19/20)。
- 了解如何获取符合性数据
- 了解如何确定不符合的原因
- 通过 Azure Policy 的 Azure Resource Graph 示例查询获取符合性数据