Compartir vía


Estructura de exención de Azure Policy

La característica de exenciones de Azure Policy se usa para eximir una jerarquía de recursos o un recurso individual de la evaluación de iniciativas o definiciones. Los recursos que están exentos cuentan para el cumplimiento general, pero no se pueden evaluar ni tienen una renuncia temporal. Para obtener más información, vea ¿Qué es la aplicabilidad en Azure Policy?. Las exenciones de Azure Policy también funcionan con los siguientes modos de Resource Manager: Microsoft.Kubernetes.Data, Microsoft.KeyVault.Datay Microsoft.Network.Data.

Puede usar notación de objetos JavaScript (JSON) para crear una exención de directiva. La exención de directiva contiene elementos para:

Una exención de directiva se crea como un objeto secundario en la jerarquía de recursos o el recurso individual a los que se ha concedido la exención. Las exenciones no se pueden crear en el nivel de componente del modo Proveedor de recursos. Si se quita el recurso primario al que se aplica la exención, también se quita la exención.

Por ejemplo, en el siguiente JSON se puede ver una exención de directiva de la categoría de renuncia de un recurso en una asignación de iniciativa denominada resourceShouldBeCompliantInit. El recurso está exento solo de dos de las definiciones de directiva de la iniciativa, la definición de directiva personalizada customOrgPolicy (policyDefinitionReferenceId: requiredTags) y la definición de directiva integrada Ubicaciones permitidas (policyDefinitionReferenceId: allowedLocations):

{
  "id": "/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Authorization/policyExemptions/resourceIsNotApplicable",
  "apiVersion": "2020-07-01-preview",
  "name": "resourceIsNotApplicable",
  "type": "Microsoft.Authorization/policyExemptions",
  "properties": {
    "displayName": "This resource is scheduled for deletion",
    "description": "This resources is planned to be deleted by end of quarter and has been granted a waiver to the policy.",
    "metadata": {
      "requestedBy": "Storage team",
      "approvedBy": "IA",
      "approvedOn": "2020-07-26T08:02:32.0000000Z",
      "ticketRef": "4baf214c-8d54-4646-be3f-eb6ec7b9bc4f"
    },
    "policyAssignmentId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
    "policyDefinitionReferenceId": [
      "requiredTags",
      "allowedLocations"
    ],
    "exemptionCategory": "waiver",
    "expiresOn": "2020-12-31T23:59:00.0000000Z",
    "assignmentScopeValidation": "Default"
  }
}

Nombre para mostrar y descripción

Use displayName y description para identificar la exención de directiva y proporcionar contexto para su uso con el recurso específico. displayName tiene una longitud máxima de 128 caracteres y description una longitud máxima de 512 caracteres.

Metadatos

La propiedad metadata permite crear cualquier propiedad secundaria necesaria para almacenar información relevante. En el ejemplo, las propiedades requestedBy, approvedBy, approvedOny ticketRef contienen valores de cliente para proporcionar información sobre quién solicitó la exención, quién la aprobó y cuándo, y un vale de seguimiento interno para la solicitud. Estas propiedades metadata son ejemplos, pero no son necesarias y metadata no se limita a estas propiedades secundarias.

Id. de asignación de directiva

Este campo debe ser el nombre de la ruta de acceso completa de una asignación de directiva o una asignación de iniciativa. El policyAssignmentId es una cadena y no una matriz. Esta propiedad define de qué asignación está exenta la jerarquía de recursos primaria o el recurso individual.

Identificadores de definición de directiva

Si el policyAssignmentId es para una asignación de iniciativa, se puede usar la propiedad policyDefinitionReferenceId para especificar la definición de directiva de la iniciativa a la que el recurso sujeto tiene una exención. Dado que el recurso puede estar exento de una o varias definiciones de directiva incluidas, esta propiedad es una matriz. Los valores deben coincidir con los valores de la definición de iniciativa de los campos policyDefinitions.policyDefinitionReferenceId.

Categoría de exención

Existen dos categorías de exención y se usan para agrupar las exenciones:

  • Mitigada: Se concede la exención porque la intención de la directiva se alcanza a través de otro método.
  • Renuncia: Se concede la exención porque el estado de no cumplimiento del recurso se acepta temporalmente. Otro motivo para usar esta categoría es excluir un recurso o jerarquía de recursos de una o varias definiciones de una iniciativa, pero no debe excluirse de toda la iniciativa.

Expiración

Para establecer cuándo una jerarquía de recursos o un recurso individual ya no están exentos de una asignación, establezca la propiedad expiresOn. Esta propiedad opcional debe tener el formato DateTime universal ISO 8601 yyyy-MM-ddTHH:mm:ss.fffffffZ.

Nota

Las exenciones de directiva no se eliminan cuando se alcanza la fecha expiresOn. El objeto se conserva para el mantenimiento de registros, pero ya no se respeta la exención.

Selectores de recursos

Las exenciones admiten una propiedad opcional resourceSelectors que funciona de la misma manera en las exenciones que en las asignaciones. La propiedad permite el lanzamiento o reversión gradual de una exención a determinados subconjuntos de recursos de forma controlada en función del tipo de recurso, la ubicación del recurso o si el recurso tiene una ubicación. Puede encontrar más detalles sobre cómo usar selectores de recursos en la estructura de asignación. El siguiente JSON es una exención de ejemplo que usa selectores de recursos. En este ejemplo, solo los recursos de westcentralus están exentos de la asignación de directiva:

{
  "properties": {
    "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "policyDefinitionReferenceId": [
      "limitSku",
      "limitType"
    ],
    "exemptionCategory": "Waiver",
    "resourceSelectors": [
      {
        "name": "TemporaryMitigation",
        "selectors": [
          {
            "kind": "resourceLocation",
            "in": [
              "westcentralus"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
  "type": "Microsoft.Authorization/policyExemptions",
  "name": "DemoExpensiveVM"
}

Se pueden agregar o quitar regiones de la lista resourceLocation del ejemplo. Los selectores de recursos permiten una mayor flexibilidad de dónde y cómo se pueden crear y administrar las exenciones.

Validación del ámbito de asignación (versión preliminar)

En la mayoría de los escenarios, el ámbito de exención se valida para asegurarse de que está en o en el ámbito de asignación de directiva. La propiedad opcional assignmentScopeValidation puede permitir que una exención omita esta validación y crearse fuera del ámbito de asignación. Esta validación está pensada para situaciones en las que una suscripción debe moverse de un grupo de administración (MG) a otro, pero la directiva bloquearía el traslado debido a las propiedades de los recursos de la suscripción. En este escenario, se podría crear una exención para la suscripción en su MG actual para excluir los recursos de una asignación de directiva en el MG de destino. De este modo, cuando la suscripción se mueve al MG de destino, la operación no se bloquea porque los recursos ya están exentos de la asignación de directiva en cuestión. El uso de esta propiedad se muestra en el ejemplo siguiente:

{
  "properties": {
    "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgName}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "policyDefinitionReferenceId": [
      "limitSku",
      "limitType"
    ],
    "exemptionCategory": "Waiver",
    "assignmentScopeValidation": "DoNotValidate",
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
  "type": "Microsoft.Authorization/policyExemptions",
  "name": "DemoExpensiveVM"
}

Los valores permitidos de assignmentScopeValidation son Default y DoNotValidate. Si no se especifica, se produce el proceso de validación predeterminado.

Permisos necesarios

Los permisos de control de acceso basado en rol de Azure (RBAC de Azure) necesarios para administrar los objetos de exención de directiva se encuentran en el grupo de operaciones de Microsoft.Authorization/policyExemptions. Los roles integrados Colaborador de la directiva de recursos y Administrador de seguridad tienen los permisos read y write, y Escritor de datos de Policy Insights (versión preliminar) tiene el permiso read.

Las exenciones tienen medidas de seguridad adicionales debido al efecto de conceder una exención. Además de exigir la operación Microsoft.Authorization/policyExemptions/write en la jerarquía de recursos o el recurso individual, el creador de una exención debe tener el verbo exempt/Action en la asignación de destino.

Creación y administración de exenciones

Se recomienda el uso de exenciones para escenarios específicos o con límite de tiempo en los que un recurso o jerarquía de recursos debe seguir siendo objeto de seguimiento y que, de otro modo, se evaluaría, pero existe una razón específica por la que no debe evaluarse su cumplimiento. Por ejemplo, si un entorno tiene asignada la definición integrada Storage accounts should disable public network access (Id.: b2982f36-99f2-4db5-8eff-283140c09693) con efecto establecido en auditar. Tras la evaluación del cumplimiento, el StorageAcc1 de recursos no es compatible, pero StorageAcc1 debe tener habilitado el acceso a la red pública para fines empresariales. En ese momento, se debe enviar una solicitud para crear un recurso de exención que tenga como destino StorageAcc1. Una vez creada la exención, StorageAcc1 se muestra como exentos en la revisión de cumplimiento.

Revise periódicamente las exenciones para asegurarse de que todos los elementos elegibles estén exentos y quiten rápidamente los que no cumplan los requisitos para la exención. En ese momento, también se pueden eliminar los recursos de exención expirados.

Pasos siguientes