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

Azure Policy 定义审核效果

在评估不合规资源时,该 audit 效果用于在活动日志中创建警告事件,但不会停止请求。

审核评估

审核是在创建或更新资源期间由 Azure Policy 检查的最后一个效果。 对于资源管理器模式,Azure Policy 然后将资源发送到资源提供程序。 评估资源的创建或更新请求时,Azure Policy 会将作添加到 Microsoft.Authorization/policies/audit/action 活动日志,并将资源标记为不符合。 在标准符合性评估周期中,只会更新资源上的符合性状态。

审核属性

对于 Resource Manager 模式,审核效果没有任何其他属性可用于 then 策略定义的条件。

对于资源提供程序模式 Microsoft.Kubernetes.Data,审核效果具有以下子属性 details。 新的策略定义或更新的策略定义需要使用 templateInfo,因为 constraintTemplate 已被弃用。

  • templateInfo(必需)

    • 无法与 constraintTemplate 一起使用。
    • sourceType(必需)
      • 定义约束模板的源类型。 允许的值:PublicURLBase64Encoded

      • 如果是 PublicURL,则与 url 属性配合,以提供约束模板的位置。 位置必须可公开访问。

        警告

        请勿使用 SAS URI、URL 令牌或可能以纯文本形式公开机密的任何其他内容。

      • 如果是 Base64Encoded,则与 content 属性配合,以提供 Base 64 编码约束模板。 若要根据现有的 Open Policy Agent (OPA) Gatekeeper v3 约束模板创建自定义定义,请参阅基于约束模板创建策略定义

  • constraint(已弃用)

    • 无法与 templateInfo 一起使用。
    • 约束模板的 CRD 实现。 使用通过 values 作为 {{ .Values.<valuename> }} 传递的参数。 在下面的示例 2 中,这些值为 {{ .Values.excludedNamespaces }}{{ .Values.allowedContainerImagesRegex }}
  • constraintTemplate(已弃用)

    • 无法与 templateInfo 一起使用。
    • 创建或更新策略定义时必须替换为 templateInfo
    • 约束模板 CustomResourceDefinition (CRD) 定义新约束。 该模板定义 Rego 逻辑、约束架构和通过 Azure Policy 的 values 传递的约束参数。 有关详细信息,请参阅 Gatekeeper 约束
  • constraintInfo(可选)

    • 不能与、、、apiGroups、、、namespaceslabelSelectorexcludedNamespaces一起使用constraintscopekindsconstraintTemplate
    • 如果未提供 constraintInfo,则可以从 templateInfo 和策略生成约束。
    • sourceType(必需)
      • 定义约束的源类型。 允许的值:PublicURLBase64Encoded

      • 如果是 PublicURL,则与 url 属性配合,以提供约束的位置。 位置必须可公开访问。

        警告

        请勿在 url 或可能公开机密的任何其他内容中使用 SAS URI 或令牌。

  • namespaces(可选)

    • 要将策略评估限制为的 Kubernetes 命名空间的数组。
    • 空值或缺失值会导致策略评估包括 未在 excludedNamespaces 中定义的所有命名空间。
  • excludedNamespaces(可选)

    • 要从策略评估中排除的 Kubernetes 命名空间的数组。
  • labelSelector(可选)

    • 一个包含 matchLabels (object) 和 matchExpression (array) 属性的对象,用于指定匹配提供的标签和选择器的策略评估要包括哪些 Kubernetes 资源。
    • 空值或缺失值会导致策略评估包括除 excludedNamespaces 中定义的命名空间之外的所有标签和选择器。
  • scope(可选)

    • 包含范围属性的字符串,用于指定是否匹配群集范围或命名空间范围的资源。
  • apiGroups (使用 templateInfo 时需要)

    • 包含要匹配的 API 组的数组。 空数组 ([""]) 是核心 API 组。
    • 不允许为 apiGroups 定义 ["*"]
  • kinds (使用 templateInfo 时需要)

    • 一个数组,其中包含要将评估限制到的 Kubernetes 对象的类型
    • 不允许为 kinds 定义 ["*"]
  • values(可选)

    • 定义要传递给约束的任何参数和值。 每个值必须存在并匹配约束模板 CRD 验证 openAPIV3Schema 部分中的属性。

“审核”示例

示例 1:对资源管理器模式使用审核效果。

"then": {
  "effect": "audit"
}

示例 2:对资源提供程序模式 Microsoft.Kubernetes.Data使用审核效果。 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"
    ]
  }
}

后续步骤