Azure 原則 定義拒絕效果
效果 deny
是用來防止資源要求不符合透過原則定義定義的標準,且要求失敗。
拒絕評估
在 Resource Manager 模式中建立或更新相符的資源時,拒絕會在傳送至資源提供者之前防止要求。 要求會以 403 (Forbidden)
傳回。 在入口網站中, Forbidden
可以檢視為原則指派所防止的部署狀態。 對於資源提供者模式,資源提供者會管理資源的評估。
在評估現有資源期間,符合 deny
原則定義的資源會標示為不符合規範。
拒絕屬性
對於 Resource Manager 模式, deny
效果不會有任何屬性可用於 then
原則定義的條件。
對於的資源提供者模式 Microsoft.Kubernetes.Data
, deny
效果的子屬性 details
如下。 templateInfo
針對新的或更新的原則定義,必須使用 ,因為 constraintTemplate
已被取代。
templateInfo
(必要)- 無法與
constraintTemplate
搭配使用。 sourceType
(必要)
- 無法與
constraint
(選擇性)- 無法與
templateInfo
搭配使用。 - 條件約束範本的CRD實作。 使用透過
values
傳遞做為{{ .Values.<valuename> }}
的參數。 在下列範例 2 中,這些值為{{ .Values.excludedNamespaces }}
和{{ .Values.allowedContainerImagesRegex }}
。
- 無法與
constraintTemplate
(已淘汰)- 無法與
templateInfo
搭配使用。 - 建立或更新原則定義時,必須取代
templateInfo
為 。 - 定義新條件約束的條件約束範本 CustomResourceDefinition (CRD)。 範本會定義 Rego 邏輯、條件約束架構,以及從 Azure 原則 傳遞的
values
Constraint 參數。 如需詳細資訊,請移至 Gatekeeper 條件約束。
- 無法與
constraintInfo
(選擇性)- 無法與 、、
constraintTemplate
apiGroups
或kinds
搭配constraint
使用。 - 如果未
constraintInfo
提供,則可以從templateInfo
和 原則產生條件約束。 sourceType
(必要)定義條件約束的來源類型。 允許的值:
PublicURL
或Base64Encoded
。如果
PublicURL
為 ,則與 屬性url
配對,以提供條件約束的位置。 位置必須可公開存取。警告
請勿在 中或可能公開秘密的任何其他專案使用
url
SAS URI或令牌。
- 無法與 、、
namespaces
(選擇性)- 要限制原則評估的 Kubernetes 命名空間陣列。
- 空值或遺漏值會導致原則評估包含所有命名空間,但中所
excludedNamespaces
定義的命名空間除外。
excludedNamespaces
(必要)- 要從原則評估中排除的 Kubernetes 命名空間陣列。
labelSelector
(必要)- 物件,包含
matchLabels
(object) 和matchExpression
(array) 屬性,以允許指定要包含哪些 Kubernetes 資源,以用於符合所提供標籤和選取器的原則評估。 - 空值或遺漏值會導致原則評估包含所有標籤和選取器,但 中
excludedNamespaces
定義的命名空間除外。
- 物件,包含
apiGroups
(使用 templateInfo 時需要)- 數位,包含要比對的 API 群組。 空陣列 (
[""]
) 是核心 API 群組。 ["*"]
不允許定義 apiGroups。
- 數位,包含要比對的 API 群組。 空陣列 (
kinds
(使用 templateInfo 時需要)- 數位,包含要限制評估的 Kubernetes 物件種類。
["*"]
不允許定義種類。
values
(選擇性)- 定義要傳遞至條件約束的任何參數和值。 每個值都必須存在於條件約束範本 CRD 中。
拒絕範例
範例 1:使用 deny
Resource Manager 模式的效果。
"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 原則範例檢閱範例。
- 檢閱 Azure 原則定義結構。
- 了解如何以程式設計方式建立原則。
- 了解如何取得合規性資料。
- 了解如何補救不符合規範的資源。
- 檢閱 Azure 管理群組。