Share via


Azure 原則 定義拒絕效果

效果 deny 是用來防止資源要求不符合透過原則定義定義的標準,且要求失敗。

拒絕評估

在 Resource Manager 模式中建立或更新相符的資源時,拒絕會在傳送至資源提供者之前防止要求。 要求會以 403 (Forbidden)傳回。 在入口網站中, Forbidden 可以檢視為原則指派所防止的部署狀態。 對於資源提供者模式,資源提供者會管理資源的評估。

在評估現有資源期間,符合 deny 原則定義的資源會標示為不符合規範。

拒絕屬性

對於 Resource Manager 模式, deny 效果不會有任何屬性可用於 then 原則定義的條件。

對於的資源提供者模式 Microsoft.Kubernetes.Datadeny 效果的子屬性 details如下。 templateInfo針對新的或更新的原則定義,必須使用 ,因為 constraintTemplate 已被取代。

  • templateInfo (必要)
    • 無法與 constraintTemplate 搭配使用。
    • sourceType (必要)
      • 定義條件約束範本的來源類型。 允許的值: PublicURLBase64Encoded

      • 如果 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 原則 傳遞的 values Constraint 參數。 如需詳細資訊,請移至 Gatekeeper 條件約束
  • constraintInfo (選擇性)
    • 無法與 、、 constraintTemplateapiGroupskinds搭配constraint使用。
    • 如果未 constraintInfo 提供,則可以從 templateInfo 和 原則產生條件約束。
    • sourceType (必要)
      • 定義條件約束的來源類型。 允許的值: PublicURLBase64Encoded

      • 如果 PublicURL為 ,則與 屬性 url 配對,以提供條件約束的位置。 位置必須可公開存取。

        警告

        請勿在 中或可能公開秘密的任何其他專案使用 url SAS URI或令牌。

  • namespaces (選擇性)
    • 要限制原則評估的 Kubernetes 命名空間陣列
    • 空值或遺漏值會導致原則評估包含所有命名空間,但中所 excludedNamespaces定義的命名空間除外。
  • excludedNamespaces (必要)
  • labelSelector (必要)
    • 物件,包含 matchLabels (object) 和 matchExpression (array) 屬性,以允許指定要包含哪些 Kubernetes 資源,以用於符合所提供標籤和選取器的原則評估。
    • 空值或遺漏值會導致原則評估包含所有標籤和選取器,但 中 excludedNamespaces定義的命名空間除外。
  • apiGroups (使用 templateInfo 時需要)
    • 數位,包含要比對的 API 群組。 空陣列 ([""]) 是核心 API 群組。
    • ["*"]不允許定義 apiGroups
  • kinds (使用 templateInfo 時需要)
  • 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"
    ]
  }
}

下一步