Effet Deny sur les définitions Azure Policy

L’effet deny empêche l’exécution d’une requête de ressource qui ne correspond pas aux normes définies via une définition de stratégie et qui fait échouer la requête.

Évaluation Deny

Lors de la création ou de la mise à jour d’une ressource correspondante dans un mode Gestionnaire des ressources, deny empêche l’envoi de la demande au fournisseur de ressources. La requête renvoie une erreur 403 (Forbidden). Dans le portail, le Forbidden peut être vu comme un état de déploiement qui a été empêché par l’attribution de stratégie. Pour un mode Fournisseur de ressources, le fournisseur de ressources gère l’évaluation de la ressource.

Lors de l’évaluation des ressources existantes, les ressources qui correspondent à une définition de stratégie deny sont marquées comme non conformes.

Propriétés de Deny

Pour un mode Gestionnaire des ressources, l’effet deny n’a pas d’autres propriétés utilisables dans la condition then de la définition de stratégie.

Pour un mode fournisseur de ressources de Microsoft.Kubernetes.Data, l’effet deny a les sous-propriétés suivantes de details. L’utilisation de templateInfo est requise pour les définitions de stratégie nouvelles ou mises à jour, compte tenu du fait que constraintTemplate est déconseillé.

  • templateInfo (requis)
    • Impossible à utiliser avec constraintTemplate.
    • sourceType (requis)
      • Définit le type de source pour le modèle de contrainte. Valeurs autorisées : PublicURL ou Base64Encoded.

      • Si PublicURL, associé à la propriété url pour fournir l’emplacement du modèle de contrainte. L'emplacement doit être accessible publiquement.

        Avertissement

        N’utilisez pas d’URI ou de jetons SAS dans url ou tout autre élément susceptible d’exposer un secret.

      • Si Base64Encoded, associé à la propriété content pour fournir le modèle de contrainte encodé en base 64. Consultez Créer une définition de stratégie à partir d’un modèle de contrainte pour créer une définition personnalisée à partir d’un modèle de contrainteOpen Policy Agent (OPA) Gatekeeper v3.

  • constraint (facultatif)
    • Impossible à utiliser avec templateInfo.
    • Implémentation CRD du modèle de contrainte. Utilise les paramètres transmis via values en tant que {{ .Values.<valuename> }}. Dans l’exemple 2 ci-dessous, ces valeurs sont {{ .Values.excludedNamespaces }} et {{ .Values.allowedContainerImagesRegex }}.
  • constraintTemplate (déconseillé)
    • Impossible à utiliser avec templateInfo.
    • Doit être remplacé par templateInfo lors de la création ou de la mise à jour d’une définition de stratégie.
    • Modèle de contrainte CustomResourceDefinition (CRD) qui définit de nouvelles contraintes. Le modèle définit la logique Rego, le schéma de contrainte et les paramètres de contrainte transmis via values à partir d’Azure Policy. Pour plus d’informations, consultez Contraintes Gatekeeper.
  • constraintInfo (facultatif)
    • Ne peut pas être utilisé avec constraint, constraintTemplate, apiGroups ou kinds.
    • Si constraintInfo n’est pas fourni, la contrainte peut être générée à partir de templateInfo et de la stratégie.
    • sourceType (requis)
      • Définit le type de source pour la contrainte. Valeurs autorisées : PublicURL ou Base64Encoded.

      • Si PublicURL, associé à la propriété url pour fournir l’emplacement de la contrainte. L'emplacement doit être accessible publiquement.

        Avertissement

        N’utilisez pas d’URI ou de jetons SAS dans url ou tout autre élément susceptible d’exposer un secret.

  • namespaces (facultatif)
    • Tableau des espaces de noms Kubernetes auxquels limiter l’évaluation de la stratégie.
    • En cas de valeur vide ou manquante, l’évaluation de la stratégie inclut tous les espaces de noms, à l’exception des ceux définis dans excludedNamespaces.
  • excludedNamespaces (requis)
  • labelSelector (requis)
    • Object qui inclut des propriétés matchLabels (objet) et matchExpression (tableau) pour permettre de spécifier les ressources Kubernetes à inclure pour l’évaluation de stratégie qui correspond aux étiquettes et sélecteurs fournis.
    • En cas de valeur vide ou manquante, l’évaluation de la stratégie inclut tous les sélecteurs et étiquettes, à l’exception des espaces de noms définis dans excludedNamespaces.
  • apiGroups (obligatoire lors de l’utilisation de templateInfo)
    • Tableau qui inclut les groupes d’API à mettre en correspondance. Un tableau vide ([""]) correspond au groupe d’API principal.
    • La définition de ["*"] pour apiGroups n’est pas autorisée.
  • kinds (obligatoire lors de l’utilisation de templateInfo)
    • Tableau qui inclut le type d’objet Kubernetes auquel limiter l’évaluation.
    • La définition de ["*"] pour kinds n’est pas autorisée.
  • values (facultatif)
    • Définit des paramètres et valeurs à transmettre à la contrainte. Chaque valeur doit exister dans le modèle de contrainte CRD.

Exemple Deny

Exemple 1 : utilisation de l’effet deny pour les modes Gestionnaire des ressources.

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

Exemple 2 : utilisation de l’effet deny pour le mode Fournisseur de ressources Microsoft.Kubernetes.Data. Les informations supplémentaires contenues dans details.templateInfo déclarent l’utilisation de PublicURL et définissent url à l’emplacement du modèle de contrainte à utiliser dans Kubernetes pour limiter les images conteneur autorisées.

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

Étapes suivantes