效果 deny 是用來防止資源要求不符合透過原則定義定義的標準,且要求失敗。
拒絕評估
在 Resource Manager 模式中建立或更新相符的資源時,拒絕會在傳送至資源提供者之前防止要求。 要求會以 403 (Forbidden) 的形式傳回。 在入口網站中, Forbidden 可以檢視為原則指派所防止的部署狀態。 對於資源提供者模式,資源提供者會管理資源的評估。
在評估現有資源期間,符合 deny 原則定義的資源會標示為不符合規範。
拒絕屬性
對於 Resource Manager 模式, deny 效果不會有任何屬性可用於 then 原則定義的條件。
對於的資源提供者模式 Microsoft.Kubernetes.Data, deny 效果的子屬性 details如下。
templateInfo針對新的或更新的原則定義,必須使用 ,因為 constraintTemplate 已被取代。
-
templateInfo(必要)- 無法與
constraintTemplate搭配使用。 -
sourceType(必要)定義條件約束範本的來源類型。 允許值:
PublicURL或Base64Encoded。如果
PublicURL為 ,則與 屬性url配對,以提供條件約束範本的位置。 該位置必須可公開存取。警告
請勿在
url中或任何可能公開祕密的其他地方使用 SAS URI 或權杖。如果
Base64Encoded為 ,則與 屬性content配對,以提供基底 64 編碼的條件約束範本。 請參閱 從條件約束範本建立原則定義 ,以從現有的 開放式原則代理程式 (OPA) Gatekeeper v3 條件約束範本建立自定義定義。
- 無法與
-
constraint(選擇性)- 無法與
templateInfo搭配使用。 - 條件約束範本的CRD實作。 使用透過
values傳遞做為{{ .Values.<valuename> }}的參數。 在下列範例 2 中,這些值為{{ .Values.excludedNamespaces }}和{{ .Values.allowedContainerImagesRegex }}。
- 無法與
-
constraintTemplate(已淘汰)- 無法與
templateInfo搭配使用。 - 建立或更新原則定義時,必須取代
templateInfo為 。 - 定義新條件約束的條件約束範本 CustomResourceDefinition (CRD)。 範本會定義 Rego 邏輯、條件約束架構,以及從 Azure 原則傳遞的
valuesConstraint 參數。 如需詳細資訊,請移至 Gatekeeper 條件約束。
- 無法與
-
constraintInfo(選擇性)- 無法與
constraint、constraintTemplate、apiGroups或kinds搭配使用。 - 如果未
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 管理群組。