Esta página trata sobre la seguridad de los datos enviados a Datadog. Si busca productos y funciones de seguridad de la nube y de aplicaciones, consulte la sección Security.

Puede enviar datos al servicio de Datadog mediante un Agent instalado localmente o a través de nuestra HTTP API. Aunque el uso de Datadog no requiere estrictamente el uso del Datadog Agent, la gran mayoría de los clientes aprovechan el Agent. Este artículo describe las principales capacidades y funciones de seguridad disponibles para garantizar que su entorno sea seguro.

Distribución del Agent

Los repositorios oficiales y los paquetes binarios del Agent están firmados. Verifique el canal de distribución comprobando la firma con una de las siguientes claves públicas:

En Debian y Ubuntu, el paquete datadog-agent tiene una dependencia opcional del paquete datadog-signing-keys, lo que hace que las claves anteriores sean confiables para APT. Mantener el paquete actualizado garantiza que las claves de firma más recientes estén presentes en su sistema.

MSI de Windows

Para verificar la firma de un archivo instalador del Datadog Agent en Windows, dirija la salida de Get-AuthenticodeSignature a través de FormatList (fl) y asegúrese de que:

  • el estado sea válido
  • el certificado esté firmado por Datadog, Inc
  • el emisor sea DigiCert

Por ejemplo, para verificar un archivo .msi llamado ddagent-cli-7.49.1.msi:

Get-AuthenticodeSignature ddagent-cli-7.49.1.msi | fl

Si la salida del comando es A certificate chain could not be built to a trusted root authority, es posible que la máquina necesite una actualización de la CA raíz de DigiCert.

Seguridad de la información

El Datadog Agent envía datos a Datadog a través de una conexión TCP cifrada con TLS de forma predeterminada. A partir de la versión 6, el Agent puede configurarse para aplicar una versión mínima de TLS al conectarse a Datadog. Si requiere el uso de criptografía fuerte, por ejemplo, para cumplir con los requisitos de PCI, debe usar el Agent v6/7 y establecer la configuración min_tls_version: 'tlsv1.2', o force_tls_12: true para el Agent < 6.39.0/7.39.0, en el archivo de configuración del Agent.

Redes y proxy

Datadog es un producto SaaS: necesita establecer una conexión saliente desde su red a la internet pública para enviar datos de monitoreo. El tráfico siempre es iniciado por el Agent hacia Datadog desde una conexión TCP cifrada con TLS de forma predeterminada. Nunca se inician sesiones desde Datadog hacia el Agent. Consulte la página Network del Agent para obtener más información sobre cómo configurar firewalls para incluir en la lista de permitidos los dominios y puertos de Datadog requeridos. Además, si desea hacer un seguimiento de hosts sin conectividad directa a la internet pública, o con tráfico saliente restringido, considere enviar datos de seguimiento desde un proxy.

Ofuscación de registros del Agent

El Datadog Agent genera registros locales para respaldar la solución de problemas del Agent según sea necesario. Como medida de precaución de seguridad, estos registros locales se filtran para detectar palabras clave y patrones específicos que podrían indicar la presencia de una credencial potencial (por ejemplo, clave de API, contraseña y token), las cuales luego se ofuscan antes de escribirse en el disco.

Servidor HTTPS local

El Agent v6/7 expone una API HTTPS local para facilitar la comunicación entre un Agent en ejecución y las herramientas del Agent (por ejemplo, los comandos datadog-agent). El servidor de la API solo puede ser accedido desde la interfaz de red local (localhost/127.0.0.1), y la autenticación se aplica a través de un token que solo puede ser leído por el usuario con el que se ejecuta el Agent. La comunicación con la API HTTPS local está cifrada en el transporte para proteger contra la interceptación en localhost.

GUI del Agent

El Agent v6/7 viene incluido con una Interfaz Gráfica de Usuario (GUI) de forma predeterminada, la cual se inicia en su navegador web predeterminado. La GUI se inicia solo si el usuario que la inicia tiene los permisos de usuario correctos, incluida la capacidad de abrir el archivo de configuración del Agent. La GUI solo puede ser accedida desde la interfaz de red local (localhost/127.0.0.1). Finalmente, las cookies del usuario deben estar habilitadas, ya que la GUI genera y guarda un token utilizado para autenticar todas las comunicaciones con el servidor de la GUI, además de proteger contra ataques de Falsificación de Petición en Sitios Cruzados (CSRF). La GUI también puede desactivarse por completo si es necesario.

Escaneos de seguridad del Agent

El programa de Vulnerability Management de Datadog incluye evaluaciones periódicas de la infraestructura de soporte y los componentes de la aplicación, incluidos escaneos activos de los servicios de soporte principales. Los equipos de Datadog Security realizan escaneos periódicos para identificar vulnerabilidades de configuración y software, y realizan un seguimiento de la corrección de los hallazgos de acuerdo con la política de Vulnerability Management de Datadog.

Con respecto a su Container Agent específicamente, Datadog realiza análisis estáticos de vulnerabilidad periódicos tanto en sus versiones de disponibilidad general (GA) como en las versiones candidatas (RC). El Datadog Container Agent se puede encontrar en registros públicos como se menciona en Docker Agent, y además, el código fuente del Datadog Agent es de código abierto. Esto permite a los clientes realizar escaneos de vulnerabilidades con sus herramientas preferidas según una cadencia que satisfaga sus necesidades únicas. Esto proporciona la visibilidad necesaria para los clientes inclinados a hacer un seguimiento del Datadog Agent en busca de posibles vulnerabilidades.

Si cree que ha descubierto un error en la seguridad de Datadog, consulte Reportar un problema. Para verificar el estado de una CVE específica, consulte la página de vulnerabilidades de artefactos públicos. Para obtener información adicional, comuníquese con el Soporte de Datadog a través de su proceso de soporte estándar. Al enviar un ticket de soporte a través del sitio web de Datadog, establezca el campo Product type en Vulnerability Inquiry on Datadog Product.

Ejecución como usuario sin privilegios

De forma predeterminada, el Agent se ejecuta como el usuario dd-agent en Linux y como la cuenta ddagentuser en Windows. Las excepciones son las siguientes:

  • El system-probe se ejecuta como root en Linux y como LOCAL_SYSTEM en Windows.
  • El process-agent se ejecuta como LOCAL_SYSTEM en Windows.
  • El security-agent se ejecuta como root en Linux.

Gestión de secretos

Si tiene el requisito de evitar el almacenamiento de secretos en texto plano en los archivos de configuración del Agent, puede aprovechar el paquete de gestión de secretos. Este paquete permite que el Agent llame a un ejecutable proporcionado por el usuario para manejar la recuperación o el descifrado de secretos, los cuales son cargados posteriormente en la memoria por el Agent. Puede diseñar su ejecutable de acuerdo con su servicio de gestión de claves, método de autenticación y flujo de trabajo de integración continua preferidos.

Para obtener más información, consulte la documentación de Gestión de secretos.

Recopilación de telemetría

El Agent en sitios que no son gubernamentales recopila información sobre el entorno, el rendimiento y el uso de funciones del Datadog Agent. Cuando el Agent detecta un sitio gubernamental, o se utiliza el Datadog Agent FIPS Proxy, el Agent deshabilita automáticamente esta recopilación de telemetría. Cuando dicha detección es imposible (por ejemplo, si se está utilizando un proxy), la telemetría del Agent se emite, pero se descarta inmediatamente en la ingesta de Datadog.

Para evitar que estos datos se emitan en primer lugar, Datadog recomienda deshabilitar la telemetría del Datadog Agent explícitamente actualizando el ajuste agent_telemetry en el archivo de configuración del Datadog Agent, como se muestra en el ejemplo a continuación.

agent_telemetry:
  enabled: false
DD_AGENT_TELEMETRY_ENABLED=false

Datadog puede recopilar información sobre el entorno, el rendimiento y el uso de funciones del Datadog Agent. Esto puede incluir registros de diagnóstico y volcados de memoria del Datadog Agent con seguimientos de pila ofuscados para brindar soporte y mejorar aún más el Datadog Agent.

Puede deshabilitar esta recopilación de telemetría actualizando el ajuste agent_telemetry en el archivo de configuración del Datadog Agent, como se muestra en el ejemplo a continuación.

agent_telemetry:
  enabled: false
DD_AGENT_TELEMETRY_ENABLED=false

Contenido de telemetría:

Para visualizar el contenido de telemetría más reciente, ejecute el siguiente comando:

agent diagnose show-metadata agent-telemetry
Metadatos (source)
ID de la máquina
Nombre de la máquina
OS
OS version
Agent version
Métricas (source)Descripción
Comprobaciones
checks.execution_timeTiempo de ejecución de la verificación en milisegundos
pymem.inuseNúmero de bytes asignados por el intérprete de Python
Registros y métricas
dogstatsd.udp_packets_bytesBytes de paquetes UDP de DogStatsD
dogstatsd.uds_packets_bytesBytes de paquetes UDS de DogStatsD
dogstatsd_client.bytes_sentTotal de bytes enviados por clientes de DogStatsD
dogstatsd_client.bytes_droppedTotal de bytes descartados por clientes de DogStatsD
dogstatsd_client.bytes_dropped_queueTotal de bytes descartados porque la cola del remitente del cliente de DogStatsD está llena
dogstatsd_client.bytes_dropped_writerTotal de bytes descartados porque el escritor del cliente de DogStatsD no puede enviarlos
logs.auto_multi_line_aggregator_flushNúmero de registros multilínea agregados por el Agent
logs.auto_multi_line_default_total_linesTotal de líneas de registro procesadas por el agregador de detección para fuentes que dependen de la detección multilínea automática predeterminada
logs.auto_multi_line_default_would_combineNúmero de líneas que se combinarían si la detección multilínea automática estuviera habilitada de forma predeterminada
logs.auto_multi_line_default_would_truncateNúmero de líneas en grupos que se truncarían si la detección multilínea automática estuviera habilitada de forma predeterminada
logs.bytes_missedNúmero total de bytes perdidos antes de que pudieran ser consumidos por el Agent, por ejemplo, después de la rotación de registros
logs.bytes_sentNúmero total de bytes enviados antes de la codificación, si corresponde
logs.decodedNúmero total de registros decodificados
logs.droppedNúmero total de registros descartados
logs.encoded_bytes_sentNúmero total de bytes enviados después de la codificación, si corresponde
logs.http_connectivity_checkNúmero de checks de conectividad HTTP, etiquetados por estado (éxito o error)
logs.http_connectivity_failureNúmero de fallas en verificaciones de conectividad HTTP, etiquetadas por causa raíz (dns, tls, timeout, connection, http_status, other)
logs.http_connectivity_retry_attemptNúmero de reintentos en checks de conectividad HTTP, etiquetados por estado (éxito o error)
logs.restart_attemptNúmero de intentos de reinicio del Agent de registros, etiquetados por estado y transporte de destino
logs.sender_latencyLatencia del remitente HTTP en milisegundos
logs.truncatedNúmero total de registros truncados por el Agent
logs_destination.destination_workersNúmero máximo de conexiones HTTP activas por destino de registro
point.droppedNúmero total de métricas descartadas
point.sentNúmero total de métricas enviadas
transactions.input_countNúmero de transacciones entrantes
transactions.input_bytesTamaño de la carga útil de la transacción entrante en bytes
transactions.successNúmero de transacciones exitosas
transactions.success_bytesTamaño de la carga útil de la transacción exitosa en bytes
transactions.requeuedNúmero de reencolamientos de transacciones
transactions.retriesNúmero de reintentos de transacciones
Base de datos
oracle.activity_samples_countNúmero de filas obtenidas al medir la actividad de consultas (Número de muestras de actividad recopiladas)
oracle.activity_latencyTiempo para recuperar la actividad de consultas en milisegundos
oracle.statement_metricsTiempo para recuperar las métricas de la base de datos en milisegundos
oracle.statement_plan_errorsNúmero de errores al recuperar los planes de ejecución
postgres.collect_activity_snapshot_msTiempo para obtener la instantánea de actividad en milisegundos
postgres.collect_relations_autodiscovery_msTiempo para recopilar relaciones de Autodiscovery en milisegundos
postgres.collect_statement_samples_msTiempo para obtener muestras de sentencias en milisegundos
postgres.collect_statement_samples_countTotal de filas obtenidas para recopilar muestras de sentencias
postgres.collect_stat_autodiscovery_msTiempo para recopilar estadísticas de Autodiscovery en milisegundos
postgres.get_new_pg_stat_activity_msTiempo para obtener pg_stat_activity en milisegundos
postgres.get_new_pg_stat_activity_countTotal de filas obtenidas para recopilar pg_stat_activity
postgres.get_active_connections_msTiempo para obtener conexiones activas en milisegundos
postgres.get_active_connections_countTotal de filas obtenidas para conseguir conexiones activas
postgres.schema_tables_elapsed_msTiempo para recopilar tablas en el esquema de Postgres
postgres.schema_tables_countTotal de tablas en el esquema de Postgres
API
api_server.request_duration_secondsRendimiento de ejecución de comandos CLI (si se ejecutan)
Eventos
agent_bsodDatos de la pantalla azul de la muerte (BSOD) relacionados con el Agent, incluyendo el código BugCheck, cuatro argumentos asociados y la pila de llamadas de bloqueo sin simbolizar
Service Discovery
service_discovery.discovered_servicesNúmero de servicios detectados por la función de Service Discovery del Agent
Autodiscovery
autodiscovery.discovery_queue_depthNúmero de servicios actualmente en la cola de descubrimiento de integraciones del Agent
autodiscovery.discovery_resultsRecuento de los intentos de descubrimiento de integraciones del Agent, etiquetados por resultado (éxito o error)
GPU Monitoring
gpu.device_totalNúmero total de GPUs en el sistema
APM
trace.enabledSi el proceso trace-agent se está ejecutando.
trace.workingSi el proceso trace-agent está recibiendo y enviando trazas.
Synthetic Monitoring
synthetics_agent.checks_receivedNúmero de pruebas recibidas
synthetics_agent.checks_processedNúmero de pruebas ejecutadas
synthetics_agent.error_test_configNúmero de errores de configuración de prueba
synthetics_agent.traceroute_errorNúmero de errores de traceroute
synthetics_agent.evp_send_result_failureNúmero de errores al enviar resultados
Cluster Agent
admission_webhooks.mutation_attemptsNúmero de intentos de mutación de webhooks de admisión
admission_webhooks.library_injection_attemptsNúmero de intentos de inyección de biblioteca
admission_webhooks.library_injection_errorsNúmero de errores de inyección de biblioteca
admission_webhooks.patcher_errorsNúmero de errores del parcheador de webhooks de admisión
admission_webhooks.rc_provider_configsNúmero de configuraciones del proveedor de configuración remota
admission_webhooks.rc_provider_configs_invalidNúmero de configuraciones no válidas del proveedor de configuración remota
admission_webhooks.image_resolution_attemptsNúmero de intentos de resolución de imagen
autodiscovery.errorsNúmero de errores de Autodiscovery
autodiscovery.watched_resourcesNúmero de recursos observados por Autodiscovery
cluster_checks.configs_dispatchedNúmero de configuraciones de verificación de clúster enviadas
cluster_checks.configs_danglingNúmero de configuraciones de verificación de clúster huérfanas
cluster_checks.configs_infoNombres de las comprobaciones de clúster enviadas
cluster_checks.unscheduled_checkNúmero de comprobaciones de clúster no programadas
instrumentation_controller.resourcesNúmero de DatadogInstrumentation recursos rastreados por el controlador
instrumentation_controller.reconciliationsNúmero de intentos de reconciliación de la sección DatadogInstrumentation, etiquetados por sección y estado
language_detection_patcher.patchesNúmero de parches del parcheador de detección de idioma
tagger.stored_entitiesNúmero de entidades almacenadas en el Tagger
workloadmeta.stored_entitiesNúmero de entidades almacenadas en WorkloadMeta
workloadmeta.pull_errorsNúmero de errores de extracción de WorkloadMeta
appsec_injector.watched_changesNúmero de cambios detectados por el inyector de AppSec para los recursos observados
appsec_injector.sidecar_mutationsNúmero de resultados de admisión de sidecar del inyector de AppSec (mutación y eliminación de pod)
agent_performance.containers_restartsNúmero de reinicios de contenedor para los pods del Cluster Agent y del Cluster Checks Runner
agent_performance.containers_terminatedNúmero de terminaciones de contenedor para los pods del Cluster Agent y del Cluster Checks Runner, etiquetadas por motivo
agent_performance.memory_usageUso total de memoria del tiempo de ejecución del contenedor, en bytes, para los pods del Cluster Agent y del Cluster Checks Runner
agent_performance.memory_limitLímites totales de memoria del tiempo de ejecución del contenedor, en bytes, para los pods del Cluster Agent y del Cluster Checks Runner
agent_performance.cpu_usageUso total de CPU del tiempo de ejecución del contenedor, en núcleos de CPU, para los pods del Cluster Agent y del Cluster Checks Runner
eBPF
ebpf.core_load_successNúmero de cargas exitosas de un programa eBPF CO-RE
ebpf.core_load_errorNúmero de errores al cargar un programa eBPF CO-RE
ebpf.core_remoteconfig_successNúmero de descargas exitosas de datos BTF (BPF Type Format) desde la configuración remota
ebpf.core_remoteconfig_errorNúmero de errores al descargar datos BTF desde la configuración remota

Solo se emiten las métricas aplicables. Por ejemplo, si DBM no está habilitado, no se emite ninguna de las métricas relacionadas con la base de datos.

Lecturas Adicionales

Documentación, enlaces y artículos útiles adicionales: