Administra reglas unificadas con la API de Rules

Se admite en los siguientes sistemas operativos:

La API de Rules proporciona extremos programáticos para administrar reglas personalizadas y seleccionadas. En este documento, se describe cómo usar la API de Rules para administrar reglas personalizadas y seleccionadas de forma programática.

Usa la API de Rules para realizar las siguientes tareas:

  • Buscar y enumerar reglas: Ejecuta búsquedas estructuradas, ordena los resultados y recupera recursos de reglas expandidos.

  • Ver detalles de reglas seleccionadas: Recupera metadatos de solo lectura, etiquetas aplicadas y lógica de texto sin procesar para las reglas creadas por Google.

  • Modifica la configuración de reglas por lotes: Actualiza de forma síncrona los estados activos, los estados de alerta, los estados de archivo y las asignaciones de etiquetas en varias reglas.

Cómo buscar reglas con la opción List rules

El método rules.list admite recursos de reglas expandidos y búsquedas estructuradas. Para consultar estos recursos detallados, usa una de las siguientes vistas:

  • CONFIG_ONLY

  • TRENDS

Ambas vistas proporcionan información expandida, que incluye lo siguiente:

  • Información sobre la implementación de reglas (habilitación de reglas activas, habilitación de alertas, estado archivado, estado de ejecución)

  • Etiquetas de reglas asociadas

  • Acceso a recursos de reglas seleccionados en la vista de CONFIG_ONLY

  • Tamaño de página más grande de 5,000 resultados en la vista CONFIG_ONLY

  • Sólidas capacidades de búsqueda estructurada

Ordena los resultados de la búsqueda en los campos de recursos de la regla con order_by en la solicitud de rules.list. Se admiten los siguientes campos de reglas:

  • alerting_enabled

  • archived

  • author

  • create_time

  • display_name

  • execution_state

  • live_mode_enabled

  • revision_create_time

  • rule_id

  • rule_owner

  • severity

  • type

  • update_time

Solicitud de ejemplo:

HTTP

GET https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules?filter=archived%3Dfalse&pageSize=100&pageToken=&view=TRENDS

Respuesta de ejemplo:

JSON

{
  "rules": [
    {
      "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_fd3fe28c-2d7b-4f7e-9fca-4fdd6029d228",

      "revisionId": "v_1719339990_701951000",

      "displayName": "SomaMaglevProberRule",

      "author": "test@google.com",

      "metadata": {
        "description": "enabled live rule used for maglev rules latency prober"

      },

      "createTime": "2024-06-25T18:26:30.701951Z",

      "revisionCreateTime": "2024-06-25T18:26:30.701951Z",

      "type": "SINGLE_EVENT",

      "etag": "CNaX7LMGEJjY284C",

      "nearRealTimeLiveRuleEligible": true,

      "ruleOwner": "CUSTOMER",

      "alertingEnabled": true,

      "liveModeEnabled": true,

      "runFrequency": "LIVE",

      "currentDayDetectionCount": 10000,

      "executionState": "DEFAULT"

    },
    {
      "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_fbf56bf1-ea5f-4b5b-bbe9-e91e13f3b3b3",

      "revisionId": "v_1696452642_197471000",

      "displayName": "LoadTestingRule",

      "author": "loadtesting@google.com",

      "createTime": "2023-10-04T20:50:42.197471Z",

      "revisionCreateTime": "2023-10-04T20:50:42.197471Z",

      "type": "SINGLE_EVENT",

      "etag": "CKKg96gGEJjWlF4=",

      "nearRealTimeLiveRuleEligible": true,

      "ruleOwner": "CUSTOMER",

      "alertingEnabled": true,

      "liveModeEnabled": true,

      "runFrequency": "LIVE",

      "executionState": "DEFAULT"
    }
  ]
}

Consulta los detalles de las reglas seleccionadas con getRule y listRules

rules.getRule y rule.listRules admiten la recuperación de detalles para las reglas seleccionadas. Las respuestas de rule.listRules se pueden filtrar para mostrar solo las reglas seleccionadas con el filtro rule_owner: "GOOGLE". Puedes encontrar más detalles sobre el uso del filtro rule_owner en la sección de sintaxis de búsqueda de reglas.

Ejemplo de una solicitud listRules para leer una regla seleccionada:

HTTP

GET https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules?filter=rule_owner%3A%22GOOGLE%22pageSize=1&view=TRENDS

Respuesta de ejemplo:

JSON

{
  "rules": [
    {
      "name": "projects/<ID>/locations/us/instances/<ID>/rules/ur_e34bf150-6cfb-494c-ad9d-ec8f7216a03c",

      "revisionId": "v_1755272664_971453000",

      "displayName": "Example Curated Rule",

      "severity": {
        "displayName": "Info"
      },

      "metadata": {
        "technique": "T1136.003",
        "rule_name": "Example Curated Rule",
        "description": "Example Curated Rule Description",
        "tactic": "TA0003"
      },

      "createTime": "2024-10-02T18:10:43.647897Z",

      "revisionCreateTime": "2025-08-15T15:44:24.971453Z",

      "type": "SINGLE_EVENT",

      "etag": "CNir/cQGEMjknM8D",

      "nearRealTimeLiveRuleEligible": true,

      "ruleOwner": "GOOGLE",

      "tags": [
        "google.mitre.tactic.ta0003",
        "google.mitre.technique.t1136.003"
      ],

      "executionState": "DEFAULT"
    }
  ]
}

El método rule.getRule admite la recuperación de una regla seleccionada con su nombre de recurso.

Ejemplo de solicitud getRule para recuperar reglas seleccionadas:

HTTP

GET https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules/ur_e34bf150-6cfb-494c-ad9d-ec8f7216a03c?view=BASIC

Respuesta de ejemplo:

JSON

{
  "rules": [
    {
      "name": "projects/<ID>/locations/us/instances/<ID>/rules/ur_e34bf150-6cfb-494c-ad9d-ec8f7216a03c",

      "revisionId": "v_1755272664_971453000",

      "displayName": "Example Curated Rule",

      "severity": {
        "displayName": "Info"
      },

      "metadata": {
        "technique": "T1136.003",
        "rule_name": "Example Curated Rule",
        "description": "Example curated rule description",
        "tactic": "TA0003"
      },

      "createTime": "2024-10-02T18:10:43.647897Z",

      "revisionCreateTime": "2025-08-15T15:44:24.971453Z",

      "text": "Example curated rule text",

      "type": "SINGLE_EVENT",

      "etag": "CNir/cQGEMjknM8D",

      "nearRealTimeLiveRuleEligible": true,

      "ruleOwner": "GOOGLE",

      "tags": [
        "google.mitre.tactic.ta0003",
        "google.mitre.technique.t1136.003"
      ],

      "executionState": "DEFAULT"
    }
  ]
}

Modifica la configuración de reglas por lotes con modifyRules

El método rules.modifyRules admite la siguiente actualización por lotes en reglas personalizadas y reglas seleccionadas:

  • Actualiza el estado de la regla en vivo

  • Actualiza el estado de las alertas

  • Actualiza las etiquetas aplicadas

  • Actualizar el estado del archivo (solo para reglas personalizadas)

Las actualizaciones por lotes se ejecutan de forma síncrona e independiente. El proceso no es atómico y continúa a pesar de las fallas individuales. Los errores parciales se detallan en el campo failed_requests, un mapa en el que la clave representa el índice de la solicitud fallida y el valor proporciona el motivo del error. Las actualizaciones exitosas se documentan en el campo rule_updates, en el que el resultado de cada solicitud se coloca en su índice correspondiente del lote original.

Ejemplo de solicitud de modifyRules:

HTTP

POST https://chronicle.googleapis.com/v1alpha/projects/<ID>/locations/us/instances/<ID>/rules:modifyRules 

JSON

{
  "parent": "projects/<ID>/locations/us/instances/<ID>",
  "requests": [
    {
      "update_mask": "liveModeEnabled",
      "rule": {
        "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_aaaaaaaaaaaaaaaaaaaaaaa",
        "liveModeEnabled": true
      }
    },
    {
      "update_mask": "alertingEnabled",
      "rule": {
        "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ur_zzzzzzzzzzzzzzzzzzzzz",
        "alertingEnabled": false
      }
    },
    {
      "update_mask": "tags",
      "rule": {
        "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_bbbbbbbbbbbbbbbbbbbbbbb",
        "tags": [
          "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/google.mitre.tactic.TA0043",
          "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/google.mitre.technique.T1595"
        ]
      }
    },
    {
      "update_mask": "archived",
      "rule": {
        "name": "projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/rules/ru_cccccccccccccccccccccc",
        "archived": true
      }
    }
  ]
}

Respuesta de ejemplo:

JSON

{
  "failed_requests": {
    "0": {
      "code": 5,
      "message": "rule is already enabled"
    },
    "3": {
      "code": 5,
      "message": "rule is already archived"
    }
  },
  "rule_updates": [
    {},
    { "alerting_state_updated": true },
    { "tagsUpdated": true },
    {}
  ]
}

Lineamientos para actualizar las reglas seleccionadas

Cuando modifiques los estados de alerta o en vivo de las reglas seleccionadas, ten en cuenta lo siguiente:

  • Control independiente: Puedes administrar el estado de una regla de forma independiente de la política de su conjunto de reglas principal. Si el estado de una regla difiere de la política principal, tu parámetro de configuración personalizado persistirá hasta que la política principal reciba su próxima actualización.

  • Requisito de derechos: Solo puedes actualizar estos estados si tu instancia tiene derechos activos para el paquete de reglas principal.

Lineamientos para actualizar etiquetas

Puedes asociar etiquetas a tus reglas con los siguientes métodos:

  • Incluye códigos T de MITRE (táctica o técnica) en los campos de metadatos tactic, technique o mitre_ttp en el texto de la regla.

  • Especifica los nombres completos de los recursos de etiquetas en el campo de metadatos tags del texto de la regla.

  • Especifica los nombres completos de los recursos de etiquetas con solicitudes a la API de ModifyRule.

La API de ModifyRules admite etiquetas de tactic y technique de MITRE. Las etiquetas proporcionadas en una actualización de la API reemplazan las etiquetas existentes, excepto las que se infieren directamente del texto de la regla.

Las etiquetas tactic de MITRE administradas por Google usan el prefijo de espacio de nombres google.mitre.tactic.

Ejemplo de un nombre de recurso completo para la etiqueta de la táctica TA0001:


projects/11344677023/locations/eu/instances/e902a911-16e3-4c39-978d-e25234232492/google.mitre.tactic.TA0001

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.