Teilen über


Auswirkung „deny“ von Azure Policy-Definitionen

Mit der Auswirkung deny werden Ressourcenanforderungen abgelehnt, die nicht den über eine Richtliniendefinition festgelegten Standards entsprechen. Für die Anforderung wird anschließend ein Fehler ausgegeben.

Auswertung von „deny“

Beim Erstellen oder Aktualisieren einer entsprechenden Ressource in einem Resource Manager-Modus wird die Anforderung durch „deny“ verhindert, bevor sie an den Ressourcenanbieter gesendet wird. Für die Anforderung wird 403 (Forbidden) zurückgegeben. Im Portal kann Forbidden als ein Bereitstellungsstatus angezeigt werden, der durch die Richtlinienzuweisung verhindert wurde. Bei Verwendung eines Ressourcenanbietermodus wird die Auswertung der Ressource vom Ressourcenanbieter verwaltet.

Während der Auswertung vorhandener Ressourcen werden Ressourcen, die einer deny-Richtliniendefinition entsprechen, als nicht konform markiert.

Eigenschaften von „deny“

Wenn Sie einen Resource Manager-Modus verwenden, verfügt die Auswirkung deny über keine weiteren Eigenschaften zur Verwendung in der then-Bedingung der Richtliniendefinition.

Wenn Sie den Ressourcenanbietermodus Microsoft.Kubernetes.Data verwenden, verfügt die Auswirkung deny über folgende weitere Untereigenschaften von details. Die Verwendung von templateInfo ist für neue oder aktualisierte Richtliniendefinitionen erforderlich, da constraintTemplate veraltet ist.

  • templateInfo (erforderlich)
    • Kann nicht mit "constraintTemplate" verwendet werden.
    • sourceType (erforderlich)
      • Definiert den Typ der Quelle für die Einschränkungsvorlage. Zulässige Werte: PublicURL oder Base64Encoded.

      • Bei PublicURL wird der Wert mit der Eigenschaft url kombiniert, um den Speicherort der Einschränkungsvorlage anzugeben. Auf den Speicherort muss öffentlich zugegriffen werden können.

        Warnung

        Verwenden Sie keine SAS-URIs oder Token in url oder andere Elemente, die ein Geheimnis offenlegen könnten.

      • Bei Base64Encoded wird der Wert mit der Eigenschaft content kombiniert, um die Base64-codierte Einschränkungsvorlage anzugeben. Unter Erstellen einer Richtliniendefinition aus einer Einschränkungsvorlage erfahren Sie, wie Sie eine benutzerdefinierte Definition aus einer vorhandenen Open Policy Agent (OPA) Gatekeeper v3-Einschränkungsvorlage erstellen.

  • constraint (optional)
    • Kann nicht mit "templateInfo" verwendet werden.
    • Die CRD-Implementierung der Einschränkungsvorlage. Verwendet Parameter, die über values als {{ .Values.<valuename> }} übergeben werden. In „Beispiel 2“ weiter unten lauten diese Werte {{ .Values.excludedNamespaces }} und {{ .Values.allowedContainerImagesRegex }}.
  • constraintTemplate (veraltet)
    • Kann nicht mit "templateInfo" verwendet werden.
    • Muss beim Erstellen oder Aktualisieren einer Richtliniendefinition durch templateInfo ersetzt werden.
    • Die Einschränkungsvorlage CustomResourceDefinition (CRD), die neue Einschränkungen definiert. Die Vorlage definiert die Rego-Logik, das Einschränkungsschema und die Einschränkungsparameter, die über values von Azure Policy übergeben werden. Weitere Informationen finden Sie unter Gatekeeper-Einschränkungen.
  • constraintInfo (optional)
    • Kann nicht mit constraint, constraintTemplate, apiGroups oder kinds verwendet werden.
    • Wenn constraintInfo nicht angegeben wird, kann die Einschränkung aus templateInfo und der Richtlinie generiert werden.
    • sourceType (erforderlich)
      • Definiert den Typ der Quelle für die Einschränkung. Zulässige Werte: PublicURL oder Base64Encoded.

      • Bei PublicURL wird der Wert mit der Eigenschaft url kombiniert, um den Speicherort der Einschränkung anzugeben. Auf den Speicherort muss öffentlich zugegriffen werden können.

        Warnung

        Verwenden Sie keine SAS-URIs oder Token in url oder andere Elemente, die ein Geheimnis offenlegen könnten.

  • namespaces (optional)
    • Ein Array von Kubernetes-Namespaces, auf das die Richtlinienauswertung beschränkt werden soll.
    • Bei einem leeren oder fehlenden Wert werden alle Namespaces mit Ausnahme der in excludedNamespaces definierten Namespaces in die Richtlinienauswertung einbezogen.
  • excludedNamespaces (erforderlich)
  • labelSelector (erforderlich)
    • Ein Objekt, das die Eigenschaften matchLabels (Objekt) und matchExpression (Array) umfasst. Hiermit können Sie angeben, welche Kubernetes-Ressourcen, die den angegebenen Bezeichnungen und Selektoren entsprechen, in die Richtlinienauswertung einbezogen werden sollen.
    • Bei einem leeren oder fehlenden Wert werden alle Bezeichnungen und Selektoren mit Ausnahme der in excludedNamespaces definierten Namespaces in die Richtlinienauswertung einbezogen.
  • apiGroups (erforderlich bei Verwendung von templateInfo)
    • Ein Array, der die API-Gruppen enthält, die übereinstimmen müssen. Ein leeres Array ([""]) ist die API-Kerngruppe.
    • Das Definieren von ["*"] für apiGroups ist nicht zulässig.
  • kinds (erforderlich bei Verwendung von templateInfo)
    • Ein Array, das die Art von Kubernetes-Objekten festlegt, auf die die Auswertung beschränkt werden soll.
    • Das Definieren von ["*"] für kinds ist nicht zulässig.
  • values (optional)
    • Definiert Parameter und Werte, die an die Einschränkung übergeben werden. Jeder Wert muss in der CRD der Einschränkungsvorlage vorhanden sein.

Beispiel für „deny“

Beispiel 1: Verwenden der Auswirkung deny für Resource Manager-Modi.

"then": {
  "effect": "deny"
}

Beispiel 2: Verwenden der Auswirkung deny für den Ressourcenanbietermodus Microsoft.Kubernetes.Data. Die zusätzlichen Informationen in details.templateInfo deklarieren die Verwendung von PublicURL und legen url auf den Speicherort der Einschränkungsvorlage fest, die in Kubernetes verwendet werden soll, um die zulässigen Containerimages einzuschränken.

"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"
    ]
  }
}

Nächste Schritte