El procesador Sensitive Data Scanner

Este producto no es compatible con el sitio Datadog seleccionado. ().
Disponible para:

Registros

Descripción general

El procesador Sensitive Data Scanner escanea los registros para detectar y redactar o hashear información sensible, como PII, PCI y datos sensibles personalizados. Puede elegir entre la biblioteca de reglas predefinidas de Datadog o ingresar reglas de expresiones regulares (Regex) personalizadas para buscar datos confidenciales.

Puede configurar el pipeline y el procesador en la UI, API o Terraform.

Consulte Mejores prácticas para optimizar el rendimiento para obtener consejos sobre cómo reducir el uso de recursos.

Configure el procesador en la UI

Para configurar el procesador:

  1. Defina un filter query. Consulte Sintaxis de búsqueda de registros para obtener más información.
    • Solo los eventos que coinciden con el filtro se escanean y procesan.
    • Todos los eventos, independientemente de si coinciden con la consulta de filtro, se envían al siguiente paso del pipeline.
  2. Haga clic en Add Scanning Rule.
  3. Seleccione una de las siguientes opciones:
  1. En el menú desplegable, seleccione la regla de biblioteca que desea utilizar.
  2. Las palabras clave recomendadas se agregan automáticamente según la regla de biblioteca seleccionada. Después de agregar la regla de escaneo, puede agregar palabras clave adicionales o eliminar las palabras clave recomendadas.
  3. En la sección Define rule target and conditions, seleccione si desea escanear Entire Event, Specific Attributes o Exclude Attributes en el menú desplegable.
    • Si está escaneando todo el evento, puede excluir opcionalmente atributos específicos del escaneo. Utilice notación de ruta (outer_key.inner_key) para acceder a claves anidadas. Para los atributos especificados con datos anidados, se excluyen todos los datos anidados.
    • Si está escaneando atributos específicos, especifique qué atributos desea escanear. Utilice notación de ruta (outer_key.inner_key) para acceder a claves anidadas. Para atributos especificados con datos anidados, se escanean todos los datos anidados.
  4. Para Define actions on match, seleccione la acción que desea realizar para la información coincidente. Nota: La redacción, la redacción parcial y el hashing son acciones irreversibles.
    • Redact: Reemplaza todos los valores coincidentes con el texto que especifique en el campo Replacement text.
    • Partially Redact: Reemplaza una porción especificada de todos los datos coincidentes. En la sección Redact, especifique la cantidad de caracteres que desea redactar y qué parte de los datos coincidentes desea redactar.
    • Hash: Reemplaza todos los datos coincidentes con un identificador único. Los bytes UTF-8 de la coincidencia se hashean con la huella digital de 64 bits de FarmHash.
  5. Opcionalmente, haga clic en Add Field para agregar etiquetas que desee asociar con los eventos coincidentes.
  6. Agregue un nombre para la regla de escaneo.
  7. Opcionalmente, agregue una descripción para la regla.
  8. Haga clic en Save.

Agregue palabras clave adicionales

Después de agregar reglas de escaneo de la biblioteca, puede editar cada regla por separado y agregar palabras clave adicionales al diccionario de palabras clave.

  1. Navegue a su pipeline.
  2. En el procesador Sensitive Data Scanner con la regla que desea editar, haga clic en Manage Scanning Rules.
  3. Active Use recommended keywords si desea que la regla los utilice. De lo contrario, agregue sus propias palabras clave al campo Create keyword dictionary. También puede requerir que estas palabras clave estén dentro de un número especificado de caracteres de una coincidencia. De forma predeterminada, las palabras clave deben estar dentro de los 30 caracteres antes de un valor coincidente.
  4. Haga clic en Update.
  1. En la sección Define match conditions, especifique el patrón regex que se utilizará para buscar coincidencias con eventos en el campo Define the regex. Consulte Writing Effective Grok Parseo Rules with Regular Expressions para obtener más información. Sensitive Data Scanner admite expresiones regulares compatibles con Perl (PCRE), pero no se admiten los siguientes patrones:
    • Referencias inversas y subexpresiones de captura (lookarounds)
    • Aserciones arbitrarias de ancho cero
    • Referencias de subrutinas y patrones recursivos
    • Patrones condicionales
    • Verbos de control de backtracking
    • La directiva \C “single-byte” (que rompe secuencias UTF-8)
    • La coincidencia de nueva línea \R
    • La directiva de reinicio de coincidencia \K
    • Callouts y código incrustado
    • Agrupación atómica y cuantificadores posesivos
  2. Ingrese datos de muestra en el campo Add sample data para verificar que su patrón regex sea válido.
  3. Para Create keyword dictionary, agregue palabras clave para refinar la precisión de la detección al hacer coincidir condiciones regex. Por ejemplo, si está escaneando un número de tarjeta de crédito Visa de dieciséis dígitos, puede agregar palabras clave como visa, credit y card. También puede requerir que estas palabras clave estén dentro de un número especificado de caracteres de una coincidencia. De forma predeterminada, las palabras clave deben estar dentro de los 30 caracteres antes de un valor coincidente.
  4. En la sección Define rule target and conditions, seleccione si desea escanear Entire Event, Specific Attributes o Exclude Attributes en el menú desplegable.
    • Si está escaneando todo el evento, puede excluir opcionalmente atributos específicos del escaneo. Utilice notación de ruta (outer_key.inner_key) para acceder a claves anidadas. Para los atributos especificados con datos anidados, se excluyen todos los datos anidados.
    • Si está escaneando atributos específicos, especifique qué atributos desea escanear. Utilice notación de ruta (outer_key.inner_key) para acceder a claves anidadas. Para atributos especificados con datos anidados, se escanean todos los datos anidados.
  5. Para Define actions on match, seleccione la acción que desea realizar para la información coincidente. Nota: La redacción, la redacción parcial y el hashing son acciones irreversibles.
    • Redact: Reemplaza todos los valores coincidentes con el texto que especifique en el campo Replacement text.
    • Partially Redact: Reemplaza una porción especificada de todos los datos coincidentes. En la sección Redact, especifique la cantidad de caracteres que desea redactar y qué parte de los datos coincidentes desea redactar.
    • Hash: Reemplaza todos los datos coincidentes con un identificador único. Los bytes UTF-8 de la coincidencia se hashean con la huella digital de 64 bits de FarmHash.
  6. Opcionalmente, haga clic en Add Field para agregar etiquetas que desee asociar con los eventos coincidentes.
  7. Agregue un nombre para la regla de escaneo.
  8. Opcionalmente, agregue una descripción para la regla.
  9. Haga clic en Add Rule.

Eliminar una regla

Para eliminar una regla en el Sensitive Data Scanner:

  1. Navegue a Observability Pipelines.
  2. Seleccione su canalización.
  3. Haga clic en el procesador Sensitive Data Scanner para expandirlo.
  4. Haga clic en Manage Scanning Rules.
  5. Seleccione la regla que desea eliminar.
  6. Haga clic en Delete.

Ejemplo de notación de ruta

For this log structure example:

{
    "outer_key": {
        "inner_key": "inner_value",
        "a": {
            "double_inner_key": "double_inner_value",
            "b": "b value"
        },
        "c": "c value"
    },
    "d": "d value"
}

Follow these reference rules:

  • Use outer_key.inner_key to reference the key with the value inner_value.
  • Use outer_key.a.double_inner_key to reference the key with the value double_inner_value.

To specify a nested field with a literal . in the attribute key, wrap the key in escaped quotes in the search query. For example, the search query "service.status":disabled matches the event {"service.status": "disabled"}.

Configure el procesador usando Terraform

Puede utilizar el Datadog Observability Pipeline Terraform resource para configurar una pipeline con el procesador Sensitive Data Scanner. Para agregar una regla al procesador Sensitive Data Scanner usando Terraform:

  1. Utilice la fuente de datos Datadog Sensitive Data Scanner Standard Pattern para recuperar el ID de regla de la library rule de Sensitive Data Scanner.

    data "datadog_sensitive_data_scanner_standard_pattern" "<RULE_IDENTIFIER>" {
      filter = "<RULE_NAME>"
    }
       

    Reemplace los marcadores de posición:

    • <RULE_IDENTIFIER> con un nombre para usar cuando configure posteriormente el procesador Sensitive Data Scanner en el recurso de Observability Pipelines.
    • <RULE_NAME> con el nombre exacto de la regla. Consulte Library Rules para ver la lista completa de reglas.

    Por ejemplo, si desea utilizar el AWS Access Key ID Scanner, configure la fuente de datos como sigue:

    data "datadog_sensitive_data_scanner_standard_pattern" "aws_access_key" {
      filter = "AWS Access Key ID Scanner"
    }
       
    Consulte el ejemplo de configuración completa sobre cómo agregar fuentes de datos para varias reglas.

  2. Agregue un bloque rule en su recurso de Observability Pipeline para la regla de biblioteca.

    ...
      sensitive_data_scanner {
        rule {
          name = "<YOUR_RULE_NAME>"
          tags = []
          on_match {
            redact {
              replace = "***"
            }
          }
          pattern {
            library {
              id                       = data.datadog_sensitive_data_scanner_standard_pattern.<RULE_IDENTIFIER>.id
              use_recommended_keywords = true
            }
          }
          scope {
            all = true
          }
        }
      }
       

    Reemplace los marcadores de posición:

    • <YOUR_RULE_NAME> con un nombre para la regla. Este nombre se muestra en la Pipelines UI.
    • <RULE_IDENTIFIER> con el identificador de regla que utilizó en la fuente de datos en el paso 1.

    Por ejemplo, si utiliza la fuente de datos AWS Access Key ID Scanner del paso 1, configure el bloque de regla como sigue:

    ...
      sensitive_data_scanner {
        rule {
          name = "Redact AWS Access Key IDs"
          tags = []
          on_match {
            redact {
              replace = "***"
            }
          }
          pattern {
            library {
              id                       = data.datadog_sensitive_data_scanner_standard_pattern.aws_access_key.id
              use_recommended_keywords = true
            }
          }
          scope {
            all = true
          }
        }
      }
       

    Consulte el ejemplo de configuración completa sobre cómo agregar varias reglas.

  3. Repita los pasos 1 y 2 para todas las reglas de biblioteca que desee agregar.

Ejemplo de configuración completa

El panel del procesador Sensitive Data Scanner que muestra dos reglas de escaneo: Redactar ID de clave de acceso de AWS y Redactar SSN de EE. UU.

Si desea utilizar el procesador Sensitive Data Scanner para buscar ID de clave de acceso de AWS y números de Seguro Social de EE. UU., y redactarlos reemplazándolos con la cadena ***:

  1. Utilice la fuente de datos Datadog Sensitive Data Scanner Standard Pattern para recuperar los ID de regla para el Escáner de ID de clave de acceso de AWS y el Escáner de número de Seguro Social de EE. UU..
  2. En el procesador Sensitive Data Scanner de su recurso Datadog Observability Pipeline, utilice las reglas de Sensitive Data Scanner definidas en las fuentes de datos.
data "datadog_sensitive_data_scanner_standard_pattern" "aws_access_key" {
  filter = "AWS Access Key ID Scanner"
}
data "datadog_sensitive_data_scanner_standard_pattern" "us_ssn" {
  filter = "US Social Security Number Scanner"
}

resource "datadog_observability_pipeline" "sensitive_data_pipeline" {
  name = "Sensitive Data Pipeline"

  config {
    source {
      id = "source-0"
      datadog_agent {}
    }

    processor_group {
      display_name = "Processors"
      enabled      = true
      id           = "group-0"
      include      = "*"
      inputs       = ["source-0"]

      processor {
        display_name = "Sensitive Data Scanner"
        enabled      = true
        id           = "processor-sds-0"
        include      = "*"

        sensitive_data_scanner {
          rule {
            name = "Redact AWS Access Key IDs"
            tags = []
            on_match {
              redact {
                replace = "***"
              }
            }
            pattern {
              library {
                id                       = data.datadog_sensitive_data_scanner_standard_pattern.aws_access_key.id
                use_recommended_keywords = true
              }
            }
            scope {
              all = true
            }
          }
          rule {
            name = "Redact US SSNs"
            tags = []
            on_match {
              redact {
                replace = "***"
              }
            }
            pattern {
              library {
                id                       = data.datadog_sensitive_data_scanner_standard_pattern.us_ssn.id
                use_recommended_keywords = true
              }
            }
            scope {
              all = true
            }
          }
        }
      }
    }

    destination {
      id     = "destination-0"
      inputs = ["group-0"]
      datadog_logs {}
    }
  }
}

Mejores prácticas para optimizar el rendimiento

El procesador Sensitive Data Scanner consume muchos recursos de CPU. Utilice las siguientes mejores prácticas para optimizar el rendimiento.

Visualice el uso de las reglas de escaneo con el tablero Observability Pipelines Overview

Observability Pipelines incluye un tablero Observability Pipelines Overview preconfigurado con una sección de Datos confidenciales encontrados por Observability Pipelines. Utilice los widgets de esa sección para ver qué reglas de escaneo están coincidiendo con los datos.

  1. Navegue a Dashboards > Observability Pipelines Overview.
  2. Utilice las variables de plantilla (pipeline_id, host, worker_uuid, component_type, component_kind, component_id) en la parte superior del tablero para definir el contexto de la vista a una canalización o Worker específico.
  3. Utilice el selector de tiempo para definir el contexto a un marco temporal más amplio.

Utilice los siguientes widgets para evaluar el uso de las reglas de escaneo de sus procesadores Sensitive Data Scanner:

  • Registros que contienen datos confidenciales por regla de escaneo: Enumera cada regla por nombre (por ejemplo, visa_card_scanner_1x16_1x19_digits o redact_ipv4) con la cantidad de coincidencias durante el marco de tiempo seleccionado. Las reglas con recuentos altos están coincidiendo activamente con datos. Este es el widget principal para visualizar qué reglas están en uso.
  • Recuento total de registros que contienen datos confidenciales: Muestra el volumen total de datos confidenciales que coinciden en todas las reglas.
  • Registros que contienen datos confidenciales por Pipeline: Muestra los registros coincidentes que contienen datos confidenciales. Puede definir el contexto de las coincidencias por pipeline_id, lo que le ayuda a ver si los registros que contienen datos confidenciales se encuentran en todos los pipelines o solo en pipelines específicos.
  • Registros que contienen datos confidenciales por servidor: Desglosa las coincidencias de datos confidenciales por servidor de Worker. Utilice este widget para confirmar la cobertura en toda su implementación.
  • Patrones que contienen información confidencial y Lista de registros que contienen datos confidenciales: Muestra los patrones de registro y los eventos de muestra donde se encontraron datos confidenciales.

Después de identificar las reglas sin coincidencias durante un período de tiempo representativo, confirme que no son necesarias y elimínelas. Consulte Eliminar una regla.

Nota: Una regla con cero coincidencias significa que la regla no coincidió en el período de tiempo seleccionado, no que la regla sea inválida.

Habilite solo las reglas que necesita

Las reglas que están habilitadas pero no se utilizan consumen recursos innecesarios. Verifique el procesador Sensitive Data Scanner para visualizar cuántas coincidencias ha tenido cada regla en las últimas 24 horas.

  1. Navegue a Observability Pipelines.
  2. Seleccione su canalización.
  3. Haga clic en el procesador Sensitive Data Scanner para expandirlo.
  4. Haga clic en View Scanning Rules para abrir el panel lateral y visualizar Matches in the last 24 hours para cada regla.

Consulte Eliminar una regla para eliminar una regla que no se utiliza.

Escanee solo los eventos y campos que necesitan ser escaneados en busca de datos confidenciales

El tiempo que le toma al Sensitive Data Scanner escanear un evento escala aproximadamente con el tamaño del evento. Para optimizar el rendimiento del procesador:

  • Si conoce los tipos de eventos que desea escanear, defina una consulta de procesador que solo envíe al procesador los eventos que desea.

  • Reduzca el tiempo de escaneo seleccionando atributos de evento específicos para escanear o excluyendo atributos de evento del escaneo. Consulte el paso Define rule target and conditions en Configurar el procesador.

Evalúe y compare las optimizaciones de rendimiento

Utilice la métrica pipelines.component_latency_seconds para:

  • Compare el rendimiento del procesador al agregar una regla
  • Evalúe el rendimiento después de realizar cambios de optimización, como reducir la cantidad de campos escaneados y eliminar reglas no utilizadas

Para visualizar la métrica pipelines.component_latency_seconds:

  1. Navegue a Metrics Explorer.
  2. En el campo de métrica, ingrese pipelines.component_latency_seconds.
  3. En el campo from, ingrese la etiqueta component_id:<COMPONENT_ID>, donde <COMPONENT_ID> es el ID de su procesador Sensitive Data Scanner.

Nota: pipelines.component_latency_seconds es una métrica de distribución, por lo que debe habilitar los percentiles para esa métrica. Consulte Habilitar la funcionalidad de consulta avanzada para obtener instrucciones.

Métricas de estado

Para component metrics y processor buffer metrics emitidas por todos los procesadores, consulte la documentación de Pipelines Usage Metrics.

Métricas de Sensitive Data Scanner

  • Utilice la etiqueta component_id para filtrar o agrupar por componentes individuales.
  • La etiqueta component_type es sensitive_data_scanner para las métricas del procesador Sensitive Data Scanner.
pipelines.sds_rule_matched_total
Descripción: La cantidad de eventos que coincidieron con una regla de Sensitive Data Scanner. Etiquetado con el nombre de la regla correspondiente.
Tipo de métrica: conteo
pipelines.scanned_events
Descripción: La cantidad de eventos escaneados por el motor de Sensitive Data Scanner.
Tipo de métrica: conteo
pipelines.scanning.match_count
Descripción: El número de coincidencias encontradas por el Sensitive Data Scanner.
Tipo de métrica: count
pipelines.scanning.suppressed_match_count
Descripción: El número de coincidencias suprimidas por el Sensitive Data Scanner.
Tipo de métrica: count
pipelines.scanning.duration
Descripción: Tiempo de reloj acumulado, en segundos, dedicado al escaneo de eventos. Utilice esta métrica para comparar el rendimiento del procesador y evaluar las optimizaciones.
Tipo de métrica: count
pipelines.scanning.cpu_duration
Descripción: Tiempo de CPU acumulado, en segundos, dedicado al escaneo de eventos.
Tipo de métrica: count
pipelines.scanner.total_count
Descripción: El número de procesadores de Sensitive Data Scanner que se están ejecutando actualmente.
Tipo de métrica: gauge
pipelines.scanner.total_regexes
Descripción: El número de expresiones regulares almacenadas en todos los Sensitive Data Scanner.
Tipo de métrica: gauge

Lecturas adicionales