Efecto denyAction de definiciones de Azure Policy

El efecto denyAction se usa para bloquear las solicitudes en función de la acción prevista para los recursos a escala. La única acción admitida hoy en día es DELETE. Este efecto y el nombre de la acción ayudan a prevenir cualquier eliminación accidental de recursos críticos.

Evaluación de DenyAction

Cuando se envía una llamada de solicitud con un nombre de acción aplicable y el ámbito de destino, denyAction impide que la solicitud se realice correctamente. 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.

Microsoft.Authorization/policyAssignments, Microsoft.Authorization/denyAssignments, Microsoft.Blueprint/blueprintAssignments, Microsoft.Resources/deploymentStacks, Microsoft.Resources/subscriptions, y Microsoft.Authorization/locks están exentos de la aplicación denyAction para evitar escenarios de bloqueo.

Eliminación de suscripciones

La directiva no bloquea la eliminación de recursos que se producen durante la eliminación de una suscripción.

Eliminación de grupos de recursos

La directiva evalúa los recursos que admiten la ubicación y las etiquetas con las directivas denyAction durante la eliminación de un grupo de recursos. Solo las directivas que tengan cascadeBehaviors establecido en deny en la regla de directiva bloquean la eliminación de un grupo de recursos. La directiva no bloquear la eliminación de recursos que no admitan la ubicación y las etiquetas ni ninguna directiva con mode:all.

Eliminación en cascada

La eliminación en cascada se produce cuando la eliminación de un recurso primario elimina implícitamente todos sus recursos secundarios y de extensión. La directiva no bloquea la eliminación de recursos secundarios y de extensión cuando una acción de eliminación tiene como destino los recursos primarios. Por ejemplo, Microsoft.Insights/diagnosticSettings es un recurso de extensión Microsoft.Storage/storageaccounts. Si una directiva denyAction tiene como destino Microsoft.Insights/diagnosticSettings, se produce un error en una llamada de eliminación a la configuración de diagnóstico (secundario), pero una eliminación de la cuenta de almacenamiento (primaria) elimina implícitamente la configuración de diagnóstico (extensión).

En esta tabla se describe si un recurso se protegerá de la eliminación dado el recurso aplicable a la directiva denyAction asignada y el ámbito objetivo de la llamada DELETE. En el contexto de esta tabla, un recurso indexado es aquel que admite etiquetas y ubicaciones, y un recurso no indexado es aquel que no admite etiquetas ni ubicaciones. Para más información sobre los recursos indexados y no indexados, consulte el modo de definición. Los recursos secundarios son recursos que solo existen en el contexto de otro recurso. Por ejemplo, un recurso de extensión de máquina virtual es un elemento secundario de la máquina virtual, que es el recurso primario.

Entidad que se va a eliminar Entidad aplicable a condiciones de directiva Acción realizada
Resource Resource Protegido
Suscripción Resource Deleted
Resource group Recurso indexado Depende de cascadeBehaviors
Resource group Recurso no indexado Deleted
Recurso secundario Recurso principal El elemento primario está protegido; se elimina el elemento secundario
Recurso principal Recurso secundario Deleted

Propiedades de DenyAction

La propiedad details del efecto denyAction tiene todas las subpropiedades que definen la acción y los comportamientos.

  • actionNames (obligatorio)
    • Matriz que especifica qué acciones se va a impedir que se ejecuten.
    • Los nombres de acción admitidos son: delete.
  • cascadeBehaviors (opcional)
    • Un Objeto que define qué comportamiento se sigue cuando se elimina implícitamente un recurso cuando se quita un grupo de recursos.
    • Solo se admite en las definiciones de directiva con el modo establecido en indexed.
    • Los valores permitidos son: allow o deny.
    • El valor predeterminado es deny.

Ejemplo DenyAction

Ejemplo: Denegar cualquier llamada de eliminación dirigida a cuentas de base de datos que tengan un entorno de etiqueta que sea igual a producción. Dado que el comportamiento en cascada se establece en deny, bloquee cualquier llamada DELETE destinada a un grupo de recursos con una cuenta de base de datos aplicable.

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.DocumentDb/accounts"
      },
      {
        "field": "tags.environment",
        "equals": "prod"
      }
    ]
  },
  "then": {
    "effect": "denyAction",
    "details": {
      "actionNames": [
        "delete"
      ],
      "cascadeBehaviors": {
        "resourceGroup": "deny"
      }
    }
  }
}

Pasos siguientes