Seguridad de datos

Información general

Las bibliotecas de rastreo de Datadog recopilan datos de una aplicación instrumentada. Esos datos se envían a Datadog como trazas (traces) y pueden contener datos confidenciales, como información de identificación personal (PII). Si estás ingiriendo datos confidenciales como trazas (traces) en Datadog, se pueden añadir remediaciones en la ingestión con Sensitive Data Scanner. También puedes configurar Datadog Agent o la biblioteca de rastreo para corregir datos confidenciales en la recopilación antes de que se envíen las trazas (traces) a Datadog.

Si las configuraciones aquí descritas no cubren tus requisitos de conformidad, ponte en contacto con el equipo de asistencia de Datadog.

Información personal en datos de rastreo

Las bibliotecas de rastreo APM de Datadog recopilan datos de observabilidad relevantes sobre las aplicaciones. Debido a que estas bibliotecas recopilan cientos de atributos únicos en datos de rastreo, esta página describe categorías de datos, centrándose en los atributos que pueden contener información personal sobre tus empleados y usuarios finales.

En la siguiente tabla se describen las categorías de datos personales recopilados por la instrumentación automática que proporcionan las bibliotecas de rastreo, con algunos ejemplos comunes.

CategoríaDescripción
NombreEl nombre completo de un usuario interno (tu empleado) o usuario final.
Correo electrónicoLa dirección de correo electrónico de un usuario interno (tu empleado) o usuario final.
IP del clienteLa dirección IP de tu usuario final asociada a una solicitud entrante o la dirección IP externa de una solicitud saliente.
Declaraciones de base de datosEl literal, la secuencia de literales o las variables de enlace utilizadas en una declaración de base de datos ejecutada.
Localización geográficaCoordenadas de longitud y latitud que pueden utilizarse para identificar a una persona o un hogar.
Parámetros de URILos valores de los parámetros en la parte variable de la ruta o la consulta del URI.
userinfo de URIEl subcomponente userinfo del URI que puede contener el nombre de usuario.

La siguiente tabla describe el comportamiento predeterminado de cada biblioteca de rastreo de lenguajes con respecto a si se recopila una categoría de datos y si se enmascara por defecto.

CategoríaRecopiladoEnmascarado
Nombre
Correo electrónico
IP del cliente
Declaraciones de base de datos
Localización geográfica
Parámetros de URI
userinfo de URI

Nota: Las declaraciones de base de datos no se recopilan por defecto y deben habilitarse.

CategoríaRecopiladoEnmascarado
Nombre
Correo electrónico
IP del cliente
Declaraciones de base de datos
Localización geográfica
Parámetros de URI
userinfo de URI

Nota: Los parámetros de URI no se recopilan por defecto y deben habilitarse.

CategoríaRecopiladoEnmascarado
Nombre
Correo electrónico
IP del cliente
Declaraciones de base de datos
Localización geográfica
Parámetros de URI
userinfo de URI

Nota: El nombre y el correo electrónico no se recopilan por defecto y deben habilitarse.

CategoríaRecopiladoEnmascarado
Nombre
Correo electrónico
IP del cliente
Declaraciones de base de datos
Localización geográfica
Parámetros de URI
userinfo de URI

Nota: Los parámetros IP del cliente, localización geográfica y URI no se recopilan por defecto y deben habilitarse.

CategoríaRecopiladoEnmascarado
Nombre
Correo electrónico
IP del cliente
Declaraciones de base de datos
Localización geográfica
Parámetros de URI
userinfo de URI

Nota: Las IPs de los clientes no se recopilan por defecto y deben habilitarse.

CategoríaRecopiladoEnmascarado
Nombre
Correo electrónico
IP del cliente
Declaraciones de base de datos
Localización geográfica
Parámetros de URI
userinfo de URI

Nota: Las IPs de los clientes no se recopilan por defecto y deben habilitarse. Datadog Agent enmascara las declaraciones de base de datos.

CategoríaRecopiladoEnmascarado
Nombre
Correo electrónico
IP del cliente
Declaraciones de base de datos
Localización geográfica
Ruta del URI del cliente
Cadena de consulta del URI del cliente
Ruta del URI del servidor
Cadena de consulta del URI del servidor
Cuerpo HTTP
Cookies HTTP
Cabeceras HTTP
CategoríaRecopiladoEnmascarado
Nombre
Correo electrónico
IP del cliente
Declaraciones de base de datos
Localización geográfica
Ruta del URI del cliente
Cadena de consulta del URI del cliente
Ruta del URI del servidor
Cadena de consulta del URI del servidor
Cuerpo HTTP
Cookies HTTP
Cabeceras HTTP
CategoríaRecopiladoEnmascarado
Nombre
Correo electrónico
IP del cliente
Declaraciones de base de datos
Localización geográfica
Ruta del URI del cliente
Cadena de consulta del URI del cliente
Ruta del URI del servidor
Cadena de consulta del URI del servidor
Cuerpo HTTP
Cookies HTTP
Cabeceras HTTP
CategoríaRecopiladoEnmascarado
Nombre
Correo electrónico
IP del cliente
Declaraciones de base de datos
Localización geográfica
Ruta del URI del cliente
Cadena de consulta del URI del cliente
Ruta del URI del servidor
Cadena de consulta del URI del servidor
Cuerpo HTTP
Cookies HTTP
Cabeceras HTTP

Si utilizas Datadog Application Security Management (ASM), las bibliotecas de rastreo recopilan datos de solicitudes HTTP para ayudarte a comprender la naturaleza de una traza (trace) de seguridad. Datadog ASM oculta automáticamente ciertos datos y tú puedes configurar tus propias reglas de detección. Obtén más información sobre estos valores predeterminados y las opciones de configuración en la documentación sobre la privacidad de datos de Datadog ASM.

Agent

Nombres de los recursos

Los tramos (spans) de Datadog incluyen un atributo de nombre de recurso que puede contener datos confidenciales. Datadog Agent implementa el enmascaramiento de nombres de recursos para varios casos conocidos:

  • Los literales numéricos SQL y las variables de enlace están enmascarados: Por ejemplo, la siguiente consulta SELECT data FROM table WHERE key=123 LIMIT 10 se se enmascara como SELECT data FROM table WHERE key = ? LIMIT ? antes de establecer el nombre del recurso para el tramo (span) de la consulta.
  • Las cadenas de literales SQL se identifican utilizando las comillas estándar de ANSI para SQL: esto significa que las cadenas deben ir entre comillas simples ('). Algunas variantes de SQL admiten opcionalmente comillas dobles (") para las cadenas, pero la mayoría tratan las cosas entre comillas dobles como identificadores. El enmascarador de Datadog las trata como identificadores y no como cadenas, y no las enmascara.
  • Las consultas de Redis se cuantifican al seleccionar solo los tokens de comando: por ejemplo, la siguiente consulta MULTI\nSET k1 v1\nSET k2 v2 se cuantifica a MULTI SET SET.

Enmascaramiento de trazas (traces)

Datadog Agent también enmascara datos de trazas (traces) confidenciales que no están dentro del nombre del recurso. Puedes configurar las reglas de enmascaramiento utilizando variables de entorno o el archivo de configuración datadog.yaml.

Los siguientes metadatos pueden enmascararse:

  • Consultas de MongoDB
  • Cuerpos de solicitud de ElasticSearch
  • Comandos de Redis
  • Comandos de MemCached
  • URLs HTTP
  • Stack traces

Nota: El enmascaramiento puede tener un impacto en el rendimiento de tu sistema, o podría ocultar información importante que no es confidencial. Considera qué enmascaramiento necesitas para tu configuración y personaliza tu configuración adecuadamente.

Nota: Puedes utilizar la limpieza automática para varios tipos de servicios al mismo tiempo. Configura cada uno de ellos en la sección obfuscation de tu archivo datadog.yaml.

Las consultas de MongoDB dentro de un tramo (span) del tipo mongodb se enmascaran por defecto.

apm_config:
  enabled: true

  ## (...)

  obfuscation:
    mongodb:
      ## Configura reglas de enmascaramiento para tramos (spans) del tipo "mongodb". Habilitado por defecto.
      enabled: true
      keep_values:
        - document_id
        - template_id
      obfuscate_sql_values:
        - val1

También puede deshabilitarse con la variable de entorno DD_APM_OBFUSCATION_MONGODB_ENABLED=false.

  • keep_values o la variable de entornoDD_APM_OBFUSCATION_MONGODB_KEEP_VALUES definen un conjunto de claves a excluir del enmascaramiento de trazas (traces) de Datadog Agent. Si no se define, se enmascaran todas las claves.
  • obfuscate_sql_values o la variable de entorno DD_APM_OBFUSCATION_MONGODB_OBFUSCATE_SQL_VALUES definen un conjunto de claves a incluir en el enmascaramiento de trazas (traces) de Datadog Agent. Si no se define, se enmascaran todas las claves.

Los cuerpos de las peticiones de ElasticSearch dentro de un tramo (span) del tipo elasticsearch se enmascaran por defecto.

apm_config:
  enabled: true

  ## (...)

  obfuscation:
    elasticsearch:
      ## Configura las reglas de enmascaramiento para tramos (spans) del tipo "elasticsearch". Habilitado por defecto.
      enabled: true
      keep_values:
        - client_id
        - product_id
      obfuscate_sql_values:
        - val1

También puede deshabilitarse con la variable de entorno DD_APM_OBFUSCATION_ELASTICSEARCH_ENABLED=false.

  • keep_values o la variable de entornoDD_APM_OBFUSCATION_ELASTICSEARCH_KEEP_VALUES definen un conjunto de claves a excluir del enmascaramiento de trazas (traces) de Datadog Agent. Si no se define, se enmascaran todas las claves.
  • obfuscate_sql_values o la variable de entornoDD_APM_OBFUSCATION_ELASTICSEARCH_OBFUSCATE_SQL_VALUES definen un conjunto de claves a incluir en el enmascaramiento de trazas (traces) de Datadog Agent. Si no se define, se enmascaran todas las claves.

Los comandos de Redis dentro de un tramo (span) del tipo redis se enmascaran por defecto.

apm_config:
  enabled: true

  ## (...)

  obfuscation:
    ## Configura las reglas de enmascaramiento para tramos (spans) del tipo "redis". Habilitado por defecto.
    redis:
      enabled: true
      remove_all_args: true

También puede deshabilitarse con la variable de entorno DD_APM_OBFUSCATION_REDIS_ENABLED=false.

  • remove_all_args o la variable de entorno DD_APM_OBFUSCATION_REDIS_REMOVE_ALL_ARGS reemplazan todos los argumentos de un comando de redis con un único “?” si el valor es true. Está deshabilitado por defecto.

Los comandos de MemCached dentro de un tramo (span) del tipo memcached se enmascaran por defecto.

apm_config:
  enabled: true

  ## (...)

  obfuscation:
    memcached:
      ## Configura las reglas de enmascaramiento para tramos (spans) del tipo "memcached". Habilitado por defecto.
      enabled: true

También puede deshabilitarse con la variable de entorno DD_APM_OBFUSCATION_MEMCACHED_ENABLED=false.

Las URLs HTTP dentro de un tramo (span) del tipo http o web no se enmascaran por defecto.

Nota: Datadog no recopila las contraseñas dentro del Userinfo de una URL.

apm_config:
  enabled: true

  ## (...)

  obfuscation:
    http:
      ## Habilita el enmascaramiento de cadenas de consulta en URLs. Deshabilitado por defecto.
      remove_query_string: true
      remove_paths_with_digits: true
  • remove_query_string o la variable de entornoDD_APM_OBFUSCATION_HTTP_REMOVE_QUERY_STRING: si tienen el valor true, se enmascaran las cadenas de consulta en las URL (http.url).
  • remove_paths_with_digits o la variable de entornoDD_APM_OBFUSCATION_HTTP_REMOVE_PATHS_WITH_DIGITS: tienen el valor true, los segmentos de ruta en las URLs (http.url) que contienen solo dígitos se sustituyen por “?”.

Está deshabilitado por defecto.

Establece el parámetro remove_stack_traces en true para eliminar las stack traces y sustituirlas por ?.

apm_config:
  enabled: true

  ## (...)

  obfuscation:
    ## Permite eliminar las stack traces para reemplazarlas por "?". Deshabilitado por defecto.
    remove_stack_traces: true # default false

También puede habilitarse con la variable de entorno DD_APM_OBFUSCATION_REMOVE_STACK_TRACES=true.

Sustituir etiquetas (tags)

Para limpiar datos confidenciales de las etiquetas (tags) de tu tramo (span), utiliza la configuración replace_tags en tu archivo de configuración datadog.yaml o la variable de entorno DD_APM_REPLACE_TAGS. El valor de la configuración o de la variable de entorno es una lista de uno o más grupos de parámetros que especifican cómo sustituir los datos confidenciales en tus etiquetas (tags). Estos parámetros son:

  • name: la clave de la etiqueta (tag) a sustituir. Para que coincida con todas las etiquetas (tags), utiliza *. Para que coincida con el recurso, utiliza resource.name.
  • pattern: el patrón regexp con el que debe coincidir.
  • repl: la cadena de sustitución.

Por ejemplo:

apm_config:
  replace_tags:
    # Sustituye todos los caracteres a partir de la cadena `token/` en la etiqueta (tag) "http.url" con "?"
    - name: "http.url"
      pattern: "token/(.*)"
      repl: "?"
    # Elimina el carácter "/" final en los nombres de recursos
      pattern: "(.*)\/$"
      repl: "$1"
    # Sustituye todas las apariciones de "foo" en cualquier etiqueta (tag) por "bar"
    - name: "*"
      pattern: "foo"
      repl: "bar"
    # Elimina todos los valores de la etiqueta (tag) "error.stack"
    - name: "error.stack"
      pattern: "(?s).*"
    # Sustituye series de números en mensajes de error
    - name: "error.msg"
      pattern: "[0-9]{10}"
      repl: "[REDACTED]"
DD_APM_REPLACE_TAGS=[
      {
        "name": "http.url",
        "pattern": "token/(.*)",
        "repl": "?"
      },
      {
        "name": "resource.name",
        "pattern": "(.*)\/$",
        "repl": "$1"
      },
      {
        "name": "*",
        "pattern": "foo",
        "repl": "bar"
      },
      {
        "name": "error.stack",
        "pattern": "(?s).*"
      },
      {
        "name": "error.msg",
        "pattern": "[0-9]{10}",
        "repl": "[REDACTED]"
      }
]

Configura la variable de entorno DD_APM_REPLACE_TAGS:

  • Para Datadog Operator, en override.nodeAgent.env en tu datadog-agent.yaml
  • Para Helm, en agents.containers.traceAgent.env en tu datadog-values.yaml
  • Para la configuración manual, en la sección del contenedor trace-agent de tu manifiesto
- name: DD_APM_REPLACE_TAGS
  value: '[
            {
              "name": "http.url",
              "pattern": "token/(.*)",
              "repl": "?"
            },
            {
              "name": "resource.name",
              "pattern": "(.*)\/$",
              "repl": "$1"
            },
            {
              "name": "*",
              "pattern": "foo",
              "repl": "bar"
            },
            {
              "name": "error.stack",
              "pattern": "(?s).*"
            },
            {
              "name": "error.msg",
              "pattern": "[0-9]{10}",
              "repl": "[REDACTED]"
            }
          ]'

Ejemplos

Datadog Operator:

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  override:
    nodeAgent:
      env:
        - name: DD_APM_REPLACE_TAGS
          value: '[
                   {
                     "name": "http.url",
                  # (...)
                  ]'

Helm:

agents:
  containers:
    traceAgent:
      env:
        - name: DD_APM_REPLACE_TAGS
          value: '[
                   {
                     "name": "http.url",
                  # (...)
                  ]'
- DD_APM_REPLACE_TAGS=[{"name":"http.url","pattern":"token/(.*)","repl":"?"},{"name":"resource.name","pattern":"(.*)\/$","repl":"$1"},{"name":"*","pattern":"foo","repl":"bar"},{"name":"error.stack","pattern":"(?s).*"},{"name":"error.msg","pattern":"[0-9]{10}","repl":"[REDACTED]"}]

Ignorar recursos

Para conocer en profundidad las opciones a fin de evitar el rastreo de recursos específicos, consulta Ignorar recursos no deseados.

Si tus servicios incluyen tráfico simulado como, por ejemplo, checks de estado, es posible que quieras excluir estas trazas (traces) de la recopilación para que las métricas de tus servicios coincidan con el tráfico de producción.

El agente puede configurarse para excluir un recurso específico de las trazas (traces) enviadas por el agente a Datadog. Para evitar el envío de recursos específicos, utiliza la configuración ignore_resources en el archivo datadog.yaml. A continuación, crea un lista de una o más expresiones regulares, especificando qué recursos filtra el agente con base en su nombre de recurso.

Si estás ejecutando en un entorno de contenedores, establece DD_APM_IGNORE_RESOURCES en el contenedor con Datadog Agent en su lugar. Consulta las variables de entorno del APM Agent en Docker para obtener más detalles.

###### @param ignore_resources - lista de cadenas - opcional

###### Se puede proporcionar una lista de expresiones regulares para excluir ciertas trazas (traces) según su nombre de recurso.

###### Todas las entradas deben estar entre comillas dobles y separadas por comas.

###### ignore_resources: ["(GET|POST) /healthcheck","API::NotesController#index"]

Biblioteca

HTTP

Datadog está estandarizando la semántica de etiquetas (tags) de tramo (span) en todas las bibliotecas de rastreo. La información de las solicitudes HTTP se añaden como etiquetas (tags) de tramo (span) con el prefijo http.. Las bibliotecas tienen las siguientes opciones de configuración para controlar los datos confidenciales recopilados en tramos (span) HTTP.

Ocultar cadenas de consulta

Se le asigna a la etiqueta (tag) http.url el valor completo de la URL, incluida la cadena de consulta. La cadena de consulta podría contener datos confidenciales, por lo que, de forma predeterminada, Datadog la analiza y oculta los valores de aspecto sospechoso. Este proceso de ocultamiento es configurable. Para modificar la expresión regular utilizada para el ocultamiento, establece la variable de entornoDD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP en una expresión regular válida de tu elección. La expresión regular válida depende de la plataforma. Cuando la expresión regular encuentra un par clave-valor sospechoso, lo sustituye por <redacted>.

Si no deseas recopilar la cadena de consulta, establece la variable de entornoDD_HTTP_SERVER_TAG_QUERY_STRING en false. El valor predeterminado es true.

Recopilar encabezados

Para recopilar etiquetas (tags) de encabezados de traza (trace), establece la variable de entorno DD_TRACE_HEADER_TAGS con un mapa de claves de encabezado que no distinga mayúsculas de minúsculas para etiquetar nombres. La biblioteca aplica los valores de encabezado coincidentes como etiquetas (tags) en los tramos (spans) raíz. La configuración también acepta entradas sin un nombre de etiqueta (tag) especificado, por ejemplo:

DD_TRACE_HEADER_TAGS=CASE-insensitive-Header:my-tag-name,User-ID:userId,My-Header-And-Tag-Name

Procesamiento

Algunas bibliotecas de rastreo proporcionan una interfaz para el procesamiento de tramos (spans) a fin de modificar o eliminar manualmente los datos confidenciales recopilados en trazas (traces):

Recopilación de telemetría

Datadog puede recopilar información del entorno y de diagnóstico sobre tus bibliotecas de rastreo para el procesamiento; esto puede incluir información sobre el host que ejecuta una aplicación, el sistema operativo, el lenguaje de programación y el tiempo de ejecución, las integraciones de APM utilizadas y las dependencias de la aplicación. Además, Datadog puede recopilar información como registros de diagnóstico, volcados de memoria con stack traces enmascaradas y varias métricas de rendimiento del sistema.

Puedes deshabilitar esta recopilación de telemetría utilizando cualquiera de estos ajustes:

apm_config:
  telemetry:
    enabled: false
export DD_INSTRUMENTATION_TELEMETRY_ENABLED=false

Cumplimiento del estándar PCI DSS para el cumplimiento de APM

El cumplimiento del estándar PCI para APM solo está disponible para las organizaciones de Datadog en el sitio US1.

Para configurar una organización de Datadog que cumpla con el estándar PCI, sigue estos pasos:

To set up PCI compliant Application Performance Monitoring, you must meet the following requirements:

  • Audit Trail must be enabled and remain enabled for PCI DSS compliance. If you haven’t already enabled Audit Trail, it is automatically enabled once the org is configured as PCI-compliant (after following the steps below).
  • Your Datadog organization is in the US1 site.
  • All spans sent to the PCI endpoints using HTTPS only. If you are using the Agent to send spans, you should enforce HTTPS transport.
  • All your spans endpoints need to be changed to the PCI endpoints for spans.
  • You may request access to the PCI Attestation of Compliance and Customer Responsibility Matrix on Datadog’s Trust Center - note that these documents are only applicable once you have finished all the onboarding steps and have been manually configured to be compliant by Datadog support.

To begin onboarding:

  1. Contact Datadog support or your Customer Success Manager to request to being the PCI onboarding process while ensuring the necessary PCI requirements are met.
  2. After Datadog support or Customer Success confirms that the org is PCI DSS compliant, configure the respective configuration file to send spans to the dedicated PCI compliant endpoint:
  • https://trace-pci.agent.datadoghq.com for Agent and non-Agent traffic
  1. For example, add the following lines to the Agent configuration file:
apm_config:
  apm_dd_url: <https://trace-pci.agent.datadoghq.com>
  1. All spans that are sent to the PCI compliant endpoint(s) automatically have a set of Sensitive Data Scanner PCI rules that are applied to scrub any cardholder data. These dedicated PCI rules must be enalbed for PCI DSS compliance and are included with no additional charge.

To finish onboarding and be moved to compliant:

  1. Inform your Datadog support or your Customer Success Manager that you have moved over all your endpoints to the PCI compliant endpoint(s).
  2. Once confirmed by Datadog, your span configuration and Application Performance Monitoring is considered PCI-compliant.

If you have any questions about how your now PCI-compliant Application Performance Monitoring satisfies the applicable requirements under PCI DSS, contact your account manager. See information on setting up PCI-compliant Log Management.

Consulta Cumplimiento del estándar PCI DSS para obtener más información. Para habilitar el cumplimiento del estándar PCI para logs, consulta Cumplimiento del estándar PCI DSS para Log Management.

El cumplimiento del estándar PCI para APM no está disponible para el sitio .

Leer más

PREVIEWING: mervebolat/span-id-preprocessing