Usa tablas de datos

Compatible con:

Las tablas de datos son construcciones de datos de varias columnas que te permiten ingresar tus propios datos en Google Security Operations. Pueden actuar como tablas de consulta con columnas definidas y los datos almacenados en filas. Puedes crear o importar una tabla de datos a tu cuenta de Google SecOps con la IU de Google SecOps, la API de tablas de datos o con una consulta YARA-L en las reglas.

Administra tablas de datos con la interfaz de usuario de Google SecOps

En las siguientes secciones, se describe cómo administrar tablas de datos con la interfaz de usuario, lo que incluye cómo acceder a ellas, agregar una nueva y editar su contenido, importar datos a la tabla, agregar filas, separar datos con comas o tabulaciones, y quitar una tabla de datos de tu cuenta.

Accede a tus tablas de datos

Para navegar a la página de tablas de datos, ve a la barra lateral de navegación izquierda y haz clic en Detección > Tablas de datos. Para buscar una tabla de datos existente, ingresa el nombre en el campo de búsqueda que se encuentra en la parte superior de la barra lateral.

Agrega una nueva tabla de datos

Para agregar una nueva tabla de datos a Google SecOps, completa los siguientes pasos:

  1. Haz clic en agregar Agregar en la parte superior derecha de la barra lateral.

  2. En el cuadro de diálogo Crear una tabla de datos nueva, asigna un nombre a la tabla nueva y, de manera opcional, agrega una descripción.

  3. Haz clic en Crear. La nueva tabla de datos aparecerá en la ventana principal y estará lista para aceptar datos.

Importa datos a tu tabla de datos

Para agregar datos a tu tabla de datos, puedes importarlos directamente a Google SecOps de la siguiente manera:

  1. Haz clic en Import Data (Importar datos).

  2. Selecciona un archivo CSV estándar (solo se pueden importar archivos CSV a Google SecOps).

  3. Haz clic en Abrir cuando tengas todo listo para importar los datos a tu tabla de datos.

Agrega una fila de datos nueva a tu tabla de datos

Para agregar una fila nueva de datos a una tabla de datos de forma manual, puedes ingresarla directamente, y la primera fila servirá como encabezado de la tabla. Para ello, sigue estos pasos:

  1. En la pestaña Detalles, coloca el cursor al final de una fila existente y presiona Intro.

  2. Ingresa una nueva fila de datos:

    1. Separa los campos de datos con comas o tabulaciones.
    2. Asegúrate de que cada elemento de datos coincida con la columna de datos adecuada.
    3. A medida que ingresas los datos de una fila en la pestaña Detalles, se propagan en el editor de tablas.

Especifica si quieres usar comas o tabulaciones para separar los datos

Para separar los datos con comas o tabulaciones, haz lo siguiente:

  1. Haz clic en Editar tipo de separador junto a Importar datos.

  2. En el diálogo Editar tipo de separador, selecciona Coma o Tab en el menú Separador.

Cómo quitar una tabla de datos

Para quitar una tabla de datos, haz lo siguiente:

  1. Selecciona una tabla de datos de la lista Tablas de datos que se encuentra a la izquierda.

  2. Haz clic en Borrar.

Administra tablas de datos con la API de Chronicle

También puedes usar los recursos de REST disponibles en la API de Chronicle para administrar las tablas de datos en Google SecOps. La API tiene una funcionalidad equivalente a la interfaz de usuario y, además, incluye algunas funciones adicionales que te permiten administrar tablas de datos con más rendimiento y escala.

Estos son los recursos de REST de la tabla de datos:

Usa tablas de datos en Google SecOps

Una vez que hayas importado tablas de datos a tu instancia de Google SecOps, podrás usarlas para filtrar, mejorar y enriquecer tus datos con reglas. En este documento, se incluyen numerosos ejemplos en la sintaxis de YARA-L, que puedes incorporar en las reglas de SecOps de Google en tu instancia. Para obtener más información sobre cómo editar reglas en Google SecOps, consulta Cómo administrar reglas con el Editor de reglas.

Puedes usar tablas de datos junto con reglas de las siguientes maneras:

Filtra los datos de eventos y entidades del UDM con una tabla de datos

Puedes filtrar los eventos y las entidades del UDM comparándolos con las entradas de una tabla de datos.

Vincula los eventos de la AUA a las tablas de datos de las siguientes maneras:

  • Usa un operador de igualdad (=, !=, >, >=, <, <=) para la comparación basada en filas. Por ejemplo, $<udm_variable>.<field_path> = %<data_table_name>.<column_name>

  • Usar la palabra clave in para la comparación basada en columnas Por ejemplo, $<udm_variable>.<field_path> in %<data_table_name>.<column_name>.`

Al igual que con las listas de referencias, los tipos de datos admitidos para cada columna de la tabla de datos pueden ser string, regex o CIDR.

Para usar una columna de tabla de datos de tipo CIDR o expresión regular para la comparación basada en filas, usa la siguiente sintaxis:

net.ip_in_range_cidr($e.principal.ip, %<data_table_name>.<column_name>)

re.regex($e.principal.hostname, %<data_table_name>.<column_name>)

Para usar una columna de tabla de datos de tipo CIDR o expresión regular para la comparación basada en columnas, usa la siguiente sintaxis:

$e.principal.ip in cidr %cidr_data_table.column_name

$e.principal.hostname in regex %regex_data_table.column_name

Si especificaste el tipo de datos de la columna como CIDR o expresión regular, excluye la palabra clave cidr o regex.

También puedes usar el operador not con tablas de datos. En la siguiente regla de ejemplo, se filtran las entradas en las que las direcciones IP ($e.principal.ip) no coinciden con ninguno de los rangos de CIDR que se enumeran en la columna benign_ip en cidr_data_table:

not $e.principal.ip in cidr %cidr_data_table.benign_ip

Cómo unir una tabla de datos con un evento o una entidad de la AUA

Puedes usar una tabla de datos para filtrar los eventos de la AUA con el operador de igualdad (=, !=, >, >=, <, <=) para la comparación basada en filas.

En el siguiente ejemplo, la regla YARA-L verifica que, cuando un usuario accede, su ID de usuario exista en la tabla de datos (example_table). En la misma fila de la tabla de datos en la que se produjo la coincidencia, también verifica si la cuenta de usuario está activa antes de que se registrara el evento de acceso.

// Check if a user exists in a data table and the user is active for all user login events.

rule udm_join_data_table {
meta:
    description = "Join data table with UDM event"
event:
  $e.metadata.event_type = USER_LOGIN
  $e.security_result.action = ALLOW
  $e.principal.user.userid = $userid

// Event must match at least one row in the table where the uid in the table
// row is the userid for the event and the active date in the same table
// row is before the event timestamp

  %example_table.uid = $userid
  $e.principal.hostname = %example_table.hostname

match:
  $userid over 1h

condition:
  $e
}

En el siguiente ejemplo, se ilustra una tabla de datos y datos de eventos de la AUA. Según la lógica de la regla YARA-L anterior, un usuario con el ID de usuario 32452 aparece en la detección, ya que el nombre de host del usuario en el sistema coincide con el nombre de host de la tabla de datos.

Tabla de datos
uid title hostname
32452 RR.HH. host1
64452 Finanzas host2
46364 TI host3
Tabla de eventos de la AUA
principal metadata security_result principal
32452 USER_LOGIN PERMITIR host1
64589 USER_LOGIN PERMITIR host9
87352 USER_LOGIN PERMITIR host4

Usa una tabla de datos como lista de referencia de varias columnas

Puedes usar una tabla de datos como una lista de referencia de varias columnas. Si bien una lista de referencia puede acceder a datos en una sola dimensión, las tablas de datos te permiten acceder a datos en varias dimensiones, lo que habilita el filtrado de datos.

Puedes vincular los eventos de la AUA a una tabla de datos con la palabra clave in para realizar comparaciones basadas en columnas.

Se puede hacer referencia a las tablas de datos como listas de referencia de varias columnas con la misma sintaxis que usan las listas de referencia:

%&lt;data_table_name>.&lt;column_name>.

En el siguiente ejemplo, se activan alertas para las conexiones de red con combinaciones de puertos y protocolos sospechosos. Port y protocol son columnas de la tabla de datos badApps.

rule udm_in_data_table {

    meta:
        description = "Use data table as multicolumn reference list"

    events:
        $e.metadata.event_type = NETWORK_CONNECTION
        $e.security_result.action = ALLOW
        $e.target.asset.asset_id = $assetid
        
        // event port matches at least one value in table column port
        $e.target.port in %badApps.port
        
        // event IP matches at least 1 value in table column protocol
        $e.target.network.ip in %badApps.ip

    match:
        $assetid over 1h

    condition:
        $e
}

Asigna tipos de datos a columnas de tablas de datos individuales

Asigna cada tipo de datos a una sola columna de la tabla de datos. Cualquier columna que contenga valores para varios campos se debe dividir antes de que se pueda usar como tablas de datos.

En el siguiente ejemplo, la columna Field_value de la tabla de datos contiene valores para varios campos:

Field_value Field_name
altostrat.com FQDN
192.0.2.135 IP
Charlie userid
ejemplo Nombre de host

La tabla anterior se divide en cuatro columnas, cada una de las cuales se asigna a un solo tipo de campo antes de que se pueda usar para cualquiera de los casos de uso de la tabla de datos que se presentan en este documento.

FQDN IP Userid Nombre de host
altostrat.com 192.0.2.135 Charlie ejemplo

Asigna nombres de columnas a campos de entidad

Cuando creas una tabla de datos, puedes asignar los nombres de las columnas de la tabla de datos a campos de entidad.

En la siguiente tabla de datos de ejemplo, las columnas Userid y Role se asignan a entity.user.userid y entity.user.attribute.role.name:

Userid
(asignarlo a entity.user.userid)
Correo electrónico Rol
(asignarlo a entity.user.attribute.role.name)
conector jack123@gmail.com administrador
Tony tony123@gmail.com ingeniero

La columna Email no se puede asignar a la ruta de acceso de la entidad entity.user.email_address, ya que es un campo repetido. No puedes asignar una columna de una tabla de datos a un campo repetido.

Puedes asignar una columna de una tabla de datos a un campo de proto de entidad con el campo mapped_column_path del recurso DataTable.

Para las columnas que no tienen definida una ruta de entidad, como Email en esta tabla de ejemplo, debes definir un tipo de datos. Al igual que con las listas de referencia, los tipos de datos admitidos para las tablas de datos son string, regex y cidr.

Puedes especificar columnas asignadas y no asignadas en la tabla de datos con la condición de unión. Las columnas no asignadas van al campo additional de la entidad (a la que se une la tabla de datos) como pares clave-valor, en los que la clave es el nombre de la columna y el valor es el valor de la fila para esa columna.

Escribe los resultados de las consultas de YARA-L en tablas de datos

Puedes escribir los resultados de las consultas de YARA-L en una tabla de datos. Con esta función, puedes crear tablas de datos a partir de tus datos de Google SecOps y usarlas para filtrar y mejorar otros datos.

Puedes usar la sintaxis de reglas YARA-L para tablas de datos para lo siguiente:

  • Define una sintaxis de YARA-L para escribir los resultados de las reglas en tablas de datos. Puedes usar la misma sintaxis para la búsqueda y los paneles.

  • Usa tablas de datos para la inteligencia de amenazas, la respuesta ante incidentes y otros casos de uso de seguridad.

  • Asegúrate de que los datos sean coherentes con las convenciones de YARA-L.

Escribe detecciones y alertas en tablas de datos con reglas

Puedes usar reglas YARA-L para enviar detecciones y alertas a tablas de datos.

Con la función write_row, puedes reemplazar una fila de la tabla de datos con la clave coincidente en la tabla de datos usando los resultados de una regla. Si la clave no se encuentra en la tabla, agrega una fila nueva.

Especifica la función write_row en la sección de exportación de una consulta YARA-L. La escritura de datos en la tabla de datos debe ser la acción final de la regla. Esto garantiza que las variables de resultado se escriban en la tabla de datos.

export:
  %<data_table_name>.write_row(
  data_table_column_x_name: <value>,
  data_table_column_y_name: <value>,
  ...,
  ...,
  data_table_column_z_name: <value>
)
// depending on the key column(s), the rows will be updated for existing keys 
and appended for new keys

Modifica una tabla de datos con YARA-L

A continuación, se muestra cómo modificar una tabla de datos con YARA-L:

TableName: ip_user_domain_table (las columnas clave para la clave primaria se definen en el momento de la creación)

ip_address employee_id* domain
192.0.2.10 Dana altostrat.com
192.0.2.20 Quinn altostrat.com
192.0.2.30 Lee cymbalgroup.com

* indica la clave primaria.

La siguiente regla captura combinaciones únicas de principal.ip, principal.user.employee_id y target.domain. Filtra los resultados según la prevalencia de target.domain:

rule unique_principal_userid_and_ip_and_target_domain_with_low_prevalence {

    meta:
        author = "GP"
        description = "Captures unique combinations of principal.ip, 
        principal.user.employee_id, and target.domain where 
        target.domain.prevalence is less than 5"
        rule_version = "1.0"

    events:
        $e.principal.ip = $principal_ip
        $e.principal.user.employee_id = $principal_user_employee_id
        $e.target.domain.name = $target_domain
        $e.target.domain.prevalence.day_count < 5

    condition:
        $e
}

Resultados de la regla:

ip empid domain
192.0.2.10 Dana altostrat.com
192.0.2.30 Lee examplepetstore.com
192.0.2.20 Quinn altostrat.com

Ejemplo: Usa write_row para escribir el resultado de la regla en una tabla de datos

rule write_to_data_table {

  meta:
    author = "GP"
    description = "Captures uniqueprincipal.user.employee_id, and target.domain where target.domain.prevalence is less than 5"
    rule_version = "1.0"

  events:
    $e.principal.user.employee_id = $principal_user_employee_id
    $e.target.domain.name = $target_domain
    $e.target.domain.prevalence.day_count < 5

  outcome:
    $hostname = $target_domain
    $principal_emp_id = $principal_user_employee_id
 
  condition:
    $e

  export:
    %ips_with_hostnames.write_row (
    employeeid:$principal_emp_id,
    hostname:$hostname,
    )
}

Ejemplo: Información sobre write_row

En el siguiente ejemplo, user y ip son claves primarias. Cada detección que persiste en la tabla de detecciones genera una evaluación de la llamada a función en la sección de exportación de la regla.

Esta es la regla:

rule successful_logins_by_user_to_ip {
    meta:

    events:
        $e.metadata.event_type = "USER_LOGIN"
        all $e.security_result.action != "BLOCK"
        all $e.security_result.action != "UNKNOWN_ACTION"

        $user = $e.principal.user.userid
        $ip = $e.target.ip
        $ts = $e.metadata.event_timestamp.seconds

    match:
        $user, $ip over 1h

    outcome:
        $first_seen = min($ts)

    condition:
        $e

    export:
        %successful_logins.write(user:$user, ip:$ip)
}

Estos son los datos del evento:

metadata: {
  event_type: USER_LOGIN
  event_timestamp: { seconds: 1283299200 }
}
principal: {
  user: {
    userid: "charlie"
  }
}
target: {
  ip: ["192.0.2.135", "192.0.2.136"]
}
security_result: {
  action: ALLOW
}

Se muestran las siguientes detecciones:

ID de detección Coincidencia con $user Match $ip
0 Charlie 192.0.2.135
1 Charlie 192.0.2.136

La tabla de datos contiene lo siguiente:

usuario ip
Charlie 192.0.2.135
Charlie 192.0.2.136

Enriquece el gráfico de entidades con una tabla de datos

Puedes usar tablas de datos para agregar, quitar o reemplazar las entidades que se presentan en el gráfico de entidades. Usa funciones en la sección setup de la regla para indicar cómo se debe combinar la tabla de datos, agregarse a ella o usarse para quitar entidades de los eventos de entidad a los que se hace referencia en la sección events.

Puedes usar la siguiente plantilla de regla para modificar un gráfico de entidades:

rule entity_graph_template {

  meta:
    ...

  setup:
    // import the data table into entity graph
    <enrichment_keyword> <join_condition>

  events:
    ...

  match:
    ...

  condition:
    ...
}

Puedes usar las siguientes funciones de YARA-L 2.0 para mejorar el gráfico de entidades con una tabla de datos:

  • graph_override: Reemplaza las filas del gráfico de entidades que coincidan con la condición de unión con datos de la tabla de datos.

    Por ejemplo:

    [graph_override](?tab=t.0#heading=h.v0fps7eke1if)

  • graph_append: Agrega las filas de la tabla de datos a las filas del grafo de entidades. La operación graph_append requiere un array que incluya una variable de tabla de datos y una variable de evento de entidad en lugar de una condición de unión.

    En el siguiente ejemplo, $g1 es la variable del gráfico de entidades y example_table es la tabla de datos:

    graph_append [$g1, %example_table]

  • graph_exclude: Quita las filas del gráfico de entidades que coincidan con la condición de unión.

    Por ejemplo:

    [graph_exclude](?tab=t.0#heading=h.o0qbb5paki6g)

La condición de unión debe ser una expresión de igualdad entre la columna de la tabla de datos y el campo del gráfico de entidades. Para las funciones graph_override y graph_exclude, la sintaxis para acceder a una tabla de datos es la siguiente:

<data_table_name>.<column_name>

Cualquier filtro especificado para el <entity_variable> en la sección del evento se aplica después de su mejora con la tabla de datos.

Después de que la entidad del gráfico de entidades se enriquece con la entidad de la tabla de datos, la variable de entidad del gráfico de entidades debe unirse a la entidad de la UDM.

Cómo anular el gráfico de entidades con datos de la tabla de datos

Con la función graph_override, los campos presentes en el grafo de entidades y en la tabla de datos se reemplazan por campos de la tabla de datos. Los campos presentes en el gráfico de entidades y no en la tabla de datos permanecen iguales. Se incluyen los campos que no están presentes en el gráfico de entidades, pero que sí lo están en la tabla de datos.

Solo las columnas de la tabla de datos que están asignadas a las entidades anulan las columnas del gráfico de entidades. Las columnas que no se asignan se agregan al campo additional del gráfico de entidades en el que se une la tabla de datos.

Ejemplo: Coincidencia en una sola unión

En el siguiente ejemplo, la tabla de datos anula las filas del gráfico de entidades que coinciden con la condición de unión entre la columna de la tabla de datos y el campo del gráfico de entidades ($g1.graph.entity.ip = %example_table.my_ip).

rule rule_override {
  meta:
    description = "Override entity context with data table before joining with UDM event"

  setup:
    //Rows in the entity graph that match the join condition are overridden by the data table
    graph_override ($g1.graph.entity.ip = %example_table.my_ip)

  events:
    $e.metadata.event_type = "NETWORK_CONNECTION"
    $e.security_result.action = "ALLOW"

    // Filter will be applied after graph is overridden by data table
    $g1.graph.entity.hostname = "ftp01"

    // Accessing unmapped columns
    $g1.graph.additional.fields["Owner"] = "alice"

    // Joining the UDM event with the enriched entity graph
    $e.target.ip = $iocip
    $g1.graph.entity.ip = $iocip

  match:
    $iocip over 1h

  condition:
    $e and $g1
}

Para usar una columna sin asignar (por ejemplo, “Propietario”) de la tabla de datos, usa una sentencia equivalente para $g1.graph.entity.owner = "alice" is $g1.graph.additional.fields["Owner"] = "alice". Esto se debe a que todas las columnas no asignadas de la tabla de datos van al campo additional del grafo de entidades ($g1).

En las siguientes tablas, se ilustra una operación de anulación en la que las filas del gráfico de entidades se enriquecen cuando el campo de IP de la tabla de datos coincide con el campo de IP del gráfico de entidades.

Gráfico de entidades existente
Nombre de host IP MAC
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
Tabla de datos
Nombre de host IP MAC Propietario
ftp01 10.1.1.4 …:bb alice
h1 10.1.1.6 …:cc bob
h2 10.1.1.7 …:dd Chris
h3 10.1.1.4 …:ee doug

Gráfico de entidades enriquecidas
Nombre de host IP MAC Propietario
ftp01 10.1.1.4 …:bb alice
www01 10.1.1.5 …:02
h3 10.1.1.4 …:ee doug

Ejemplo: Coincidencia en varias combinaciones

En el siguiente ejemplo, la tabla de datos anula las filas del gráfico de entidades que coinciden con las múltiples condiciones de unión ($g1.graph.entity.ip = %example_table.my_ip y $g1.graph.entity.hostname = %example_table.my_hostname).

rule rule_override {
meta:
    description = "Override Entity context with Data Table before joining with UDM event"
setup:
  // example with more than one condition
  graph_override ($g1.graph.entity.ip = %example_table.my_ip and
  $g1.graph.entity.hostname = %example_table.my_hostname) 
events:
  $e.metadata.event_type = "NETWORK_CONNECTION"
  $e.security_result.action = "ALLOW"

  // Filter will be applied after graph is overridden by data table
  $g1.graph.entity.hostname = "ftp01"

  // joining the UDM event with the enriched entity graph
  $e.target.ip = $iocip
  $g1.graph.entity.ip = $iocip

match:
  $iocip over 1h

condition:
  $e and $g1
}

En las siguientes tablas, se ilustra una operación de anulación en la que las filas del gráfico de entidades se enriquecen cuando el campo de IP y el campo de nombre de host de la tabla de datos coinciden con el campo de IP y el campo de nombre de host del gráfico de entidades.

Gráfico de entidades existente
Nombre de host IP MAC
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
Tabla de datos
Nombre de host IP MAC Propietario
ftp01 10.1.1.4 …:bb alice
h1 10.1.1.5 …:cc bob
h2 10.1.1.6 …:dd Chris
h3 10.1.1.4 …:ee doug
Gráfico de entidades enriquecidas
Nombre de host IP MAC Propietario
ftp01 10.1.1.4 …:bb alice
www01 10.1.1.5 …:02

Agrega datos de la tabla de datos al gráfico de entidades

Con la función graph_append, no se requiere ninguna condición de unión.

En el siguiente ejemplo, todas las filas de la tabla de datos se adjuntan a las filas del gráfico de entidades.

rule rule_append {
meta:
  description = "Data table append entity"
   
setup:
  graph_append [$g1, %example_table]

events:
    // filter UDM events
  $e.metadata.event_type = "NETWORK_CONNECTION"
  $e.security_result.action = "ALLOW"

  // Join the filtered UDM events with the enriched graph
  $e.target.ip = $iocip
  $g1.graph.entity.ip = $iocip

match:
  $iocip over 1h

condition:
  $e and $g1
}

En la siguiente tabla de ejemplo, se ilustra una operación de adición en la que las filas de la tabla de datos se agregan a las filas del grafo de entidades:

Gráfico de entidades existente
Nombre de host IP MAC
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
Tabla de datos
Nombre de host IP MAC Propietario
10.1.1.4 …:01 alice
10.1.1.6 …:cc bob
10.1.1.7 …:dd Chris
10.1.1.4 …:ee doug
Gráfico de entidades enriquecidas
Nombre de host IP MAC Propietario
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
10.1.1.4 …:bb alice
10.1.1.6 …:cc bob
10.1.1.7 …:dd Chris
10.1.1.4 …:ee doug

Usa graph_exclude para quitar filas del gráfico de entidades

Con la función graph_exclude, se quitan del gráfico de entidades las filas que coinciden con la condición de unión.

En el siguiente ejemplo, se quitan todas las filas del grafo de entidades que coinciden con la condición de unión proporcionada (entre la columna de la tabla de datos y el campo del grafo de entidades). No se agregan filas de la tabla de datos al gráfico de entidades.

rule rule_exclude {

    meta:
    setup:
      graph_exclude ($g1.graph.entity.ip = %example_table.ip)

    events:
        $e.metadata.event_type = "NETWORK_CONNECTION"
        $e.security_result.action = "ALLOW"
        $e.target.ip = $iocip
        $g1.graph.entity.ip = $iocip

    match:
        $iocip over 1h

    condition:
        $e and $g1
}

En las siguientes tablas, se ilustra una operación de exclusión en la que se quitan las filas del grafo de entidades que coinciden con el campo de IP de la tabla de datos:

Gráfico de entidades existente
Nombre de host IP MAC
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
Tabla de datos
IP MAC Propietario
10.1.1.4 …:bb alice
10.1.1.6 …:cc bob
10.1.1.7 …:dd Chris
Gráfico de entidades enriquecidas
Nombre de host IP MAC
www01 10.1.1.5 …:02

Limitaciones

  • Los límites para la cantidad de sentencias in cuando se hace referencia a una lista de referencias en una regla también se aplican a las sentencias in en una tabla de datos.

  • Solo se admite el tipo de archivo CSV para las cargas.

  • El tamaño máximo de una tabla de datos es de 10 GB.

  • El límite máximo agregado del volumen de datos en las tablas de datos de un inquilino es de 1 TB.

  • Cantidad máxima de sentencias in en una regla, con o sin operadores especiales: 7

  • Cantidad máxima de sentencias in con el operador regex: 4

  • Cantidad máxima de sentencias in con el operador cidr: 2

  • No se permiten marcadores de posición en la nueva sección de configuración.

  • Las columnas sin asignar de una tabla de datos con el tipo de datos establecido en string solo se pueden unir con campos de cadena del evento o la entidad del UDM.

  • Usa solo columnas sin asignar en una tabla de datos con un tipo de datos establecido en cidr o regex para CIDR o expresión regular.

  • No puedes asignar la columna de una tabla de datos a un campo repetido.

Usa tablas de datos con reglas

Las siguientes limitaciones se aplican a las tablas de datos cuando se usan con reglas:

Frecuencia de ejecución

La frecuencia de ejecución en tiempo real no es compatible con las reglas que tienen tablas de datos.

Uniones

  • A diferencia de las entidades y la UDM, las tablas de datos no admiten marcadores de posición. Esto significa que no puedes aplicar un conjunto de filtros a una tabla de datos, unirla con una entidad de la AUA y, luego, aplicar un conjunto diferente de filtros a la misma tabla de datos y, al mismo tiempo, unirla con otra variable de marcador de posición de la AUA.

  • Por ejemplo, una tabla de datos llamada dt con 3 columnas: my_hostname, org y my_email, y con la siguiente regla:

events:
$e1.principal.hostname =  %dt.my_hostname
%dt.org ="hr"

$e2.principal.email =  %dt.my_email
%dt.org !="hr"

Primero, se aplican todos los filtros de una tabla de datos y, luego, las filas filtradas de la tabla de datos se unen con la UDM. En este caso, una tabla de datos vacía se une con e1 y e2 porque los dos filtros de la tabla de datos dt se contradicen (%dt.org ="hr" and %dt.org !="hr").

Salida a tablas de datos

  • Solo puedes exportar variables de resultados a una tabla de datos. No puedes exportar directamente las columnas de la ruta de eventos ni de la tabla de datos.

  • Las listas de columnas deben incluir las columnas de clave primaria de las tablas de datos.

  • No puedes tener más de 20 resultados.

  • Las columnas de la tabla de datos no admiten valores repetidos, por lo que todas las variables de resultados que se escriben en una tabla de datos deben ser valores singulares.

  • Si no existe una tabla de datos, se crea una nueva con el tipo de datos de cadena predeterminado para todas las columnas, siguiendo el orden especificado.

  • Solo una regla puede escribir en una tabla de datos a la vez. Si una regla intenta escribir en una tabla de datos en la que ya está escribiendo otra regla, la compilación de la regla falla.

  • No hay garantía de que una regla de productor pueda agregar filas a una tabla de datos antes de que comience una regla de consumidor para esa tabla de datos.

  • Una regla tiene un límite en la cantidad de filas de resultados. Se aplica un límite de 10,000 filas a los resultados y los datos persistentes. El mismo límite se aplica a las tablas de datos. Una sola ejecución de reglas puede generar un máximo de 10,000 filas en una tabla de datos.

  • Si ya existe una fila con la misma clave primaria en la tabla de datos, las columnas de clave no primaria se reemplazarán por los valores nuevos.

  • Solo puedes aplicar una operación de enriquecimiento (override, append o exclude) a una sola variable de gráfico de entidad.

  • Cada operación de enriquecimiento se puede realizar con una sola tabla de datos.

  • Puedes definir un máximo de dos operaciones de enriquecimiento de cualquier tipo en la sección setup de una regla YARA-L.

En el siguiente ejemplo, se aplica una operación de anulación a la variable $g1 del grafo de entidades y una operación append a la variable $g2 del grafo de entidades.

    setup:
    graph_override($g1.graph.entity.user.userid = %table1.myids)
    graph_append [$g2, %table1]

En el ejemplo anterior, se usa la misma tabla de datos (table1) para mejorar diferentes gráficos de entidades. También puedes usar diferentes tablas de datos para mejorar los diferentes gráficos de entidades, como se indica a continuación:

    setup:
    graph_override($g1.graph.entity.user.userid = %table1.myids)
    graph_append [$g2, %table2]