Azure Policy 定义 deny 效果
deny
效果用于通过策略定义防止与定义的标准不匹配的资源请求,并使请求失败。
“拒绝”评估
在资源管理器模式下创建或更新匹配的资源时,Deny 会在发送给资源提供程序之前阻止请求。 该请求返回为 403 (Forbidden)
。 在门户中,可以将 Forbidden
视为策略分配阻止的部署状态。 对于资源提供程序模式,资源提供程序管理资源的评估。
在评估现有资源期间,与 deny
策略定义匹配的资源将标记为不合规。
“拒绝”属性
对于资源管理器模式,deny
效果没有任何属性可用于策略定义的 then
条件。
对于 Microsoft.Kubernetes.Data
的资源提供程序模式,deny
效果具有 details
的以下子属性。 新的策略定义或更新的策略定义需要使用 templateInfo
,因为 constraintTemplate
已被弃用。
templateInfo
(必需)- 无法与
constraintTemplate
一起使用。 sourceType
(必需)定义约束模板的源类型。 允许的值:
PublicURL
或Base64Encoded
。如果是
PublicURL
,则与url
属性配合,以提供约束模板的位置。 位置必须可公开访问。警告
请勿在
url
或可能公开机密的任何其他内容中使用 SAS URI 或令牌。如果是
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
一起使用。 - 如果未提供
constraintInfo
,则可以从templateInfo
和策略生成约束。 sourceType
(必需)定义约束的源类型。 允许的值:
PublicURL
或Base64Encoded
。如果是
PublicURL
,则与url
属性配合,以提供约束的位置。 位置必须可公开访问。警告
请勿在
url
或可能公开机密的任何其他内容中使用 SAS URI 或令牌。
- 不能与
namespaces
(可选)- 要将策略评估限制为的 Kubernetes 命名空间的数组。
- 空值或缺失值会导致策略评估包括所有命名空间,但
excludedNamespaces
中定义的命名空间除外。
excludedNamespaces
(必需)- 要从策略评估中排除的 Kubernetes 命名空间的数组。
labelSelector
(必需)- 一个包含
matchLabels
(对象)和matchExpression
(数组)属性的对象,用于指定要针对所提供标签和选择器的匹配策略评估包含哪些 Kubernetes 资源。 - 空值或缺失值会导致策略评估包括所有标签和选择器,但
excludedNamespaces
中定义的命名空间除外。
- 一个包含
apiGroups
(使用 templateInfo 时需要)- 包含要匹配的 API 组的数组。 空数组 (
[""]
) 是核心 API 组。 - 不允许为 apiGroups 定义
["*"]
。
- 包含要匹配的 API 组的数组。 空数组 (
kinds
(使用 templateInfo 时需要)- 一个数组,其中包含要将评估限制到的 Kubernetes 对象的类型。
- 不允许为 kinds 定义
["*"]
。
values
(可选)- 定义要传递给约束的任何参数和值。 每个值都必须在约束模板 CRD 中存在。
“拒绝”示例
示例 1:对资源管理器模式使用 deny
效果。
"then": {
"effect": "deny"
}
示例 2:对 Microsoft.Kubernetes.Data
的资源提供程序模式使用 deny
效果。 details.templateInfo
中的其他信息声明了 PublicURL
的使用,并将 url
设置为约束模板的位置,以在 Kubernetes 中用于限制允许的容器镜像。
"then": {
"effect": "deny",
"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 管理组。