Azure Policy 符合性状态
符合性的工作原理
在分配计划或策略定义时,Azure Policy 会确定哪些资源是适用的,然后评估尚未排除或豁免的资源。 评估会根据策略规则以及每个资源对这些要求的遵循情况来生成符合性状态。
可用的符合性状态
不符合
当策略规则的条件评估结果为 TRUE 时,具有 audit
、auditIfNotExists
或 modify
效果的策略分配将被视为不符合新资源、更新的资源或现有资源。
当策略规则的条件评估结果为 TRUE 时,具有 append
、deny
或 deployIfNotExists
效果的策略分配将被视为不符合现有资源。 在请求时自动修正或拒绝新资源和更新的资源,以强制实施符合性。 在更新以前存在的不合规资源时,在资源部署和策略评估完成之前,符合性状态将保持不变。
注意
DeployIfNotExist 和 AuditIfNotExist 效果要求 IF 语句为 TRUE,而存在条件为 FALSE,即为不符合。 如果为 TRUE,则 IF 条件会触发相关资源存在条件的计算。
在两种情况下,具有 manual
效果的策略分配会被视为不符合:
- 策略定义具有默认符合性状态。
- 该资源已证明为不符合。
若要确定资源不符合的原因或查找更改负责人,请参阅确定不符合性。 要对 deployIfNotExists
和 modify
策略的不合规资源进行修正,请参阅使用 Azure Policy 修正不符合的资源。
符合
当策略规则的条件评估结果为 FALSE 时,具有 append
、audit
、auditIfNotExists
、deny
、deployIfNotExists
或 modify
效果的策略分配将被视为不符合新资源、更新的资源或现有资源。
在两种情况下,具有 manual
效果的策略分配会被视为符合:
- 策略定义的默认符合性状态为“符合”。
- 资源已证明为符合。
错误
错误符合性状态会提供给生成系统错误的策略分配,例如模板或评估错误。
存在冲突
如果同一范围内存在两个或更多个策略分配且规则相互矛盾或冲突,则策略分配被视为冲突。 例如,两个定义追加带有不同值的同一个标记。
例外
在策略分配处于豁免范围内时,适用的资源具有该策略分配的豁免符合性状态。
注意
豁免不同于排除。 有关更多详细信息,请参阅范围。
未知
未知是具有 manual
效果的定义的默认符合性状态,除非默认值已显式设置为符合或不符合。 此符合性状态仅适用于具有 manual
效果的符合性状态。
受保护
受保护状态表示资源在分配下包含 denyAction 效果。
未注册
如果 Azure Policy 资源提供程序尚未注册,或者登录的帐户无权读取符合性数据,则门户中会显示此符合性状态。
注意
如果符合性状态被报告为“未注册”,请验证是否已注册 Microsoft.PolicyInsights 资源提供程序,并按照 Azure Policy 中的 Azure RBAC 权限中的说明来验证用户是否具有适当的 Azure 基于角色的访问控制 (RBAC) 权限 。 要注册 Microsoft.PolicyInsights,请执行这些步骤。
未开始
此符合性状态指示尚未启动策略或资源的评估周期。
示例
现在,你已经了解什么是符合性状态以及每种状态的含义,接下来让我们看看使用符合性状态和不符合状态的示例。
假设你有一个资源组 - 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)。