audit 效果用于评估不合规资源时在活动日志中创建警告事件,但不会停止请求。
“审核”评估
“审核”是 Azure Policy 在创建或更新资源期间检查的最后一个效果。 对于资源管理器模式,Azure Policy 会将资源发送到资源提供程序。 评估资源的创建或更新请求时,Azure 策略会将 Microsoft.Authorization/policies/audit/action 操作添加到活动日志,并将资源标记为不合规。 在标准符合性评估周期期间,只会更新资源上的符合性状态。
“审核”属性
对于资源管理器模式,Audit 效果没有任何其他属性可用于策略定义的 then 条件。
对于 Microsoft.Kubernetes.Data 的资源提供程序模式,Audit 效果具有 details 的以下子属性。 新的策略定义或更新的策略定义需要使用 templateInfo,因为 constraintTemplate 已被弃用。
- templateInfo(必需)- 无法与 constraintTemplate一起使用。
- 
              sourceType(必需)- 定义约束模板的源类型。 允许的值: - PublicURL或- Base64Encoded。
- 如果是 - PublicURL,则与- url属性配合,以提供约束模板的位置。 位置必须可公开访问。- 警告 - 请勿使用 SAS URI、URL 令牌或可能以纯文本形式公开机密的任何其他内容。 
- 如果是 - Base64Encoded,则与- content属性配合,以提供 base 64 编码的约束模板。
 
 
- 无法与 
- constraint(已弃用)- 无法与 templateInfo一起使用。
- 约束模板的 CRD 实现。 使用通过 values作为{{ .Values.<valuename> }}传递的参数。 在下面的示例 2 中,这些值为{{ .Values.excludedNamespaces }}和{{ .Values.allowedContainerImagesRegex }}。
 
- 无法与 
- constraintTemplate(已弃用)- 无法与 templateInfo一起使用。
- 创建或更新策略定义时必须替换为 templateInfo。
- 约束模板 CustomResourceDefinition (CRD) 定义新约束。 该模板定义 Rego 逻辑、约束架构和通过 Azure Policy 的 values传递的约束参数。 有关详细信息,请转到 Gatekeeper 约束。
 
- 无法与 
- constraintInfo(可选)- 不能与 constraint、constraintTemplate、apiGroups、kinds、scope、namespaces、excludedNamespaces或labelSelector一起使用。
- 如果未提供 constraintInfo,则可以从templateInfo和策略生成约束。
- 
              sourceType(必需)- 定义约束的源类型。 允许的值: - PublicURL或- Base64Encoded。
- 如果是 - PublicURL,则与- url属性配合,以提供约束的位置。 位置必须可公开访问。- 警告 - 请勿在 - url或可能公开机密的任何其他内容中使用 SAS URI 或令牌。
 
 
- 不能与 
- namespaces(可选)- 要将策略评估限制为的 Kubernetes 命名空间的数组。
- 空值或缺失值会导致策略评估包含所有未在 excludedNamespaces 中定义的命名空间。
 
- excludedNamespaces(可选)- 要从策略评估中排除的 Kubernetes 命名空间的数组。
 
- labelSelector(可选)- 一个包含 matchLabels(对象)和 matchExpression(数组)属性的对象,用于指定要针对所提供标签和选择器的匹配策略评估包含哪些 Kubernetes 资源。
- 空值或缺失值会导致策略评估包括所有标签和选择器,但 excludedNamespaces 中定义的命名空间除外。
 
- scope(可选)- 包含范围属性的字符串,用于指定要匹配群集范围的资源还是命名空间范围的资源。
 
- apiGroups(使用 templateInfo 时需要)- 包含要匹配的 API 组的数组。 空数组 ([""]) 是核心 API 组。
- 不允许为 apiGroups 定义 ["*"]。
 
- 包含要匹配的 API 组的数组。 空数组 (
- kinds(使用 templateInfo 时需要)- 一个数组,其中包含要将评估限制到的 Kubernetes 对象的类型。
- 不允许为 kinds 定义 ["*"]。
 
- values(可选)- 定义要传递给约束的任何参数和值。 每个值必须存在并匹配约束模板 CRD 的验证 openAPIV3Schema节中的属性。
 
- 定义要传递给约束的任何参数和值。 每个值必须存在并匹配约束模板 CRD 的验证 
“审核”示例
示例 1:对资源管理器模式使用 Audit 效果。
"then": {
  "effect": "audit"
}
示例 2:对 Microsoft.Kubernetes.Data 的资源提供程序模式使用 Audit 效果。 
              details.templateInfo 中的其他信息声明了 PublicURL 的使用,并将 url 设置为约束模板的位置,以在 Kubernetes 中用于限制允许的容器镜像。
"then": {
  "effect": "audit",
  "details": {
    "templateInfo": {
      "sourceType": "PublicURL",
      "url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
    },
    "values": {
      "imageRegex": "[parameters('allowedContainerImagesRegex')]"
    },
    "apiGroups": [
      ""
    ],
    "kinds": [
      "Pod"
    ]
  }
}
后续步骤
- 在 Azure Policy 示例中查看示例。
- 查看 Azure Policy 定义结构。
- 了解如何以编程方式创建策略。
- 了解如何获取符合性数据。
- 了解如何修正不符合的资源。
- 请查看 Azure 管理组。