Share via


Efecto de denegación de definiciones de Azure Policy

El efecto deny se usa para evitar que una solicitud de recurso que no coincida con los estándares definidos mediante una definición de directiva y produzca un error en la solicitud.

Evaluación de deny

Al crear o actualizar un recurso coincidente en un modo de Administrador de recursos, deny evita la solicitud antes de que se envíe al proveedor de recursos. La solicitud se devuelve como un código 403 (Forbidden). En el portal, Forbidden se puede ver como un estado de implementación que impedía la asignación de directiva. Para el modo de Proveedor de recursos, el proveedor de recursos administra la evaluación del recurso.

Durante la evaluación de los recursos existentes, los recursos que coinciden con una definición de directiva deny se marcan como no compatibles.

Propiedades de deny

Para un modo de Resource Manager, el efecto deny no tiene más propiedades para su uso en la condición then de la definición de directiva.

Para un modo proveedor de recursos de Microsoft.Kubernetes.Data, el efecto deny tiene las siguientes subpropiedades de details. El uso de templateInfo es necesario para las definiciones de directiva nuevas o actualizadas, ya que constraintTemplate está en desuso.

  • templateInfo (obligatorio)
    • No se puede usar con constraintTemplate.
    • sourceType (obligatorio)
      • Define el tipo de origen de la plantilla de restricciones. Valores permitidos: PublicURL o Base64Encoded.

      • Si PublicURL, emparejado con propiedad url para proporcionar la ubicación de la plantilla de restricción. La ubicación debe ser públicamente accesible.

        Advertencia

        No use el URI de SAS ni tokens en url ni nada que pueda exponer un secreto.

      • Si Base64Encoded, emparejado con la propiedad content para proporcionar la plantilla de restricción codificada en base 64. Consulte Creación de una definición de directiva a partir de una plantilla de restricción para crear una definición de directiva personalizada a partir de una plantilla de restricción Gatekeeper v3 de Open Policy Agent (OPA).

  • constraint (opcional)
    • No se puede usar con templateInfo.
    • La implementación de CRD de la plantilla de restricción. Usa parámetros pasados a través de values como {{ .Values.<valuename> }}. En el ejemplo 2 siguiente, estos valores son {{ .Values.excludedNamespaces }} y {{ .Values.allowedContainerImagesRegex }}.
  • constraintTemplate (en desuso)
    • No se puede usar con templateInfo.
    • Debe reemplazarse por templateInfo al crear o actualizar una definición de directiva.
    • La plantilla de restricción CustomResourceDefinition (CRD) que define nuevas restricciones. La plantilla define la lógica de Rego, el esquema de restricción y los parámetros de restricción que se pasan a través de values en Azure Policy. Para más información, vaya a Restricciones de Gatekeeper.
  • constraintInfo (opcional)
    • No se puede usar con constraint, constraintTemplate, apiGroups o kinds.
    • Si constraintInfo no se proporciona, la restricción se puede generar a partir de templateInfo y la directiva.
    • sourceType (obligatorio)
      • Define el tipo de origen para la restricción. Valores permitidos: PublicURL o Base64Encoded.

      • Si PublicURL, emparejado con la propiedad url para proporcionar la ubicación de la restricción. La ubicación debe ser públicamente accesible.

        Advertencia

        No use el URI de SAS ni tokens en url ni nada que pueda exponer un secreto.

  • namespaces (opcional)
    • Una matriz de espacios de nombres de Kubernetes a la que limitar la evaluación de directivas.
    • Un valor vacío o que falta hace que la evaluación de directivas incluya todos los espacios de nombres, excepto los definidos en excludedNamespaces.
  • excludedNamespaces (obligatorio)
  • labelSelector (obligatorio)
    • Un objeto que incluye propiedades matchLabels (objeto) y matchExpression (matriz) para permitir especificar qué recursos de Kubernetes incluir para la evaluación de directivas que coinciden con las etiquetas y selectores proporcionados.
    • Un valor vacío o inexistente puede hacer que la evaluación de la directiva incluya todas las etiquetas y selectores, excepto los espacios de nombres definidos en excludedNamespaces.
  • apiGroups (necesario al usar templateInfo)
    • Una matriz que incluye los grupos API que deben coincidir. Una matriz vacía ([""]) es el grupo de API principal.
    • No se permite definir ["*"] para apiGroups.
  • kinds (necesario al usar templateInfo)
    • Una matriz que incluye el tipo de objeto de Kubernetes al que se debe limitar la evaluación.
    • No se permite definir ["*"] para kinds.
  • values (opcional)
    • Define cualquier parámetro y valor para pasar a la restricción. Cada valor debe existir en la CRD de la plantilla de restricción.

Ejemplo de deny

Ejemplo 1: Uso del efecto deny para los modos de Resource Manager.

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

Ejemplo 2: Uso del efecto deny para un modo proveedor de recursos de Microsoft.Kubernetes.Data. La información adicional de details.templateInfo declara el uso de PublicURL y establece url en la ubicación de la plantilla Restricción que se va a usar en Kubernetes para limitar las imágenes de contenedor permitidas.

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

Pasos siguientes