En esta página hablamos sobre la seguridad de los datos que se envían a Datadog. Si estás buscando productos y funciones para proteger las aplicaciones y las soluciones en la nube, consulta la sección Seguridad.

Es posible enviar datos al servicio Datadog utilizando un Agent instalado localmente o a través de nuestra API HTTP. Aunque para utilizar Datadog no es estrictamente necesario utilizar el Datadog Agent, la gran mayoría de los clientes aprovechan esta posibilidad. Este artículo describe las principales funciones y características de seguridad disponibles para garantizar la seguridad de tu entorno.

Distribución del Agent

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

En Debian y Ubuntu, el paquete datadog-agent tiene una dependencia relativa del paquete de datadog-signing-keys, lo que hace que las claves anteriores sean de confianza para APT. Al mantener el paquete actualizado, te aseguras de que las últimas claves de firma están presentes en tu sistema.

Windows MSI

Para verificar la firma de un archivo de instalación del Datadog Agent en Windows, canaliza la salida de Get-AuthenticodeSignature a través de FormatList (fl) y asegúrate de que:

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

Por ejemplo, para verificar un archivo .msi denominado 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, el equipo puede necesitar una actualización de la CA raíz DigiCert.

Seguridad de la información

El Datadog Agent envía datos a Datadog a través de una conexión TCP cifrada TLS por defecto. A partir de la versión 6, el Agent puede configurarse para imponer una versión mínima de TLS al conectarse a Datadog. Si necesitas utilizar una criptografía sólida (p. ej., para cumplir con los requisitos PCI), debes utilizar el Agent v6 o v7 y establecer el parámetro min_tls_version: 'tlsv1.2' o force_tls_12: true para el Agent v6.39.0/v7.39.0 o versiones anteriores, en el archivo de configuración del Agent.

Redes y proxy

Datadog es un producto SaaS: para enviar datos de monitorización es necesario establecer una conexión saliente desde tu red a la Internet pública. El Agent siempre inicia el tráfico a Datadog desde una conexión TCP cifrada TLS por defecto. Nunca se inician sesiones desde Datadog hacia el Agent. Para obtener más información sobre la configuración de cortafuegos para permitir la lista de dominios y puertos de Datadog necesarios, consulta la página Red del Agent. Además, si quieres monitorizar hosts sin una conexión directa a la Internet pública o con tráfico saliente restringido considera la posibilidad de enviar datos de monitorización desde un proxy.

Enmascarar logs del Agent

El Datadog Agent genera logs locales para facilitar la resolución de problemas del Agent, si es necesario. Como medida de seguridad, estos logs locales se filtran en busca de algunas palabras clave y patrones específicos que podrían indicar una posible credencial (por ejemplo, clave de API, contraseña y palabras clave de token), que luego se enmascaran antes de escribirse en el disco.

Servidor HTTPS local

El Agent v6 y v7 exponen 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). Sólo se puede acceder al servidor de API desde la interfaz de red local (localhost/127.0.0.1) y la autenticación se realiza mediante un token que sólo puede leer el usuario con el que se ejecuta el Agent. La comunicación con la API HTTPS local está cifrada durante el transporte para protegerla de posibles interceptaciones en localhost.

GUI del Agent

El Agent v6 y v7 viene con una interfaz gráfica de usuario (GUI) por defecto que se inicia en tu navegador web predeterminado. La GUI sólo se inicia si el usuario que la ejecuta tiene los permisos de usuario adecuados, incluyendo la capacidad de abrir el archivo de configuración del Agent. Sólo se puede acceder a la GUI desde la interfaz de red local (localhost/127.0.0.1). Además, las cookies del usuario deben estar habilitadas, ya que la GUI genera y guarda un token que se utiliza para autenticar todas las comunicaciones con el servidor de la GUI, así como para proteger contra ataques de falsificación de petición en sitios cruzados (CSRF). Si es necesario, también es posible desactivar por completo la GUI.

Análisis de seguridad del Agent

El programa de gestión de vulnerabilidades de Datadog incluye evaluaciones periódicas de la infraestructura de soporte y los componentes de las aplicaciones, incluidos los análisis activos de los principales servicios de soporte. Los equipos de seguridad de Datadog realizan análisis mensuales para identificar vulnerabilidades en la configuración y el software, y realizan un seguimiento de la corrección de los resultados de acuerdo con la política de gestión de vulnerabilidades de Datadog.

En lo que respecta específicamente a su Agent de contenedores, Datadog realiza análisis estáticos de vulnerabilidades de forma regular a través de clair by CoreOS y snyk.io. Además, Datadog aprovecha el análisis de seguridad como parte de sus lanzamientos del Agent de contenedores al Docker Trusted Registry, así como al catálogo de contenedores de Red Hat. Además del programa interno de gestión de vulnerabilidades de Datadog, Datadog también se asocia con proveedores de seguridad para contenedores.

Si crees que has descubierto un fallo en la seguridad de Datadog, escribe a la dirección security@datadoghq.com y nos pondremos en contacto contigo en un plazo de 24 horas. La clave PGP de Datadog está disponible para su descarga, en caso de que necesites cifrar las comunicaciones con nosotros. Te pedimos que no divulgues públicamente el problema hasta que hayamos tenido la oportunidad de solucionarlo.

Ejecución como usuario sin privilegios

Por defecto, el Agent se ejecuta como el usuario dd-agent en Linux y como la cuenta ddagentuser en Windows. Estas son las excepciones:

  • 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 necesitas evitar el almacenamiento de secretos en texto simple en los archivos de configuración del Agent, puedes utilizar el paquete de gestión de secretos. Este paquete permite al Agent llamar a un ejecutable proporcionado por el usuario para que gestione la recuperación o el descifrado de secretos, que el Agent carga posteriormente en la memoria. Puedes diseñar tu ejecutable de acuerdo con tu 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, consulta la documentación sobre la gestión de secretos.

Recopilación de telemetría

El Agent en sitios no gubernamentales recopila información del entorno, del rendimiento y del uso de funciones del Datadog Agent. Cuando el Agent detecta un sitio gubernamental o se utiliza el proxy FIPS del Datadog Agent, el Agent desactiva automáticamente la recopilación de telemetría. Cuando la detección es imposible (por ejemplo, si se está utilizando un proxy), se emite la telemetría del Agent, pero se abandona inmediatamente en el consumo de Datadog. Para evitar que se emitan estos datos en primer lugar, Datadog recomienda desactivar explícitamente la telemetría del Agent, actualizando el parámetro agent_telemetry en el archivo de configuración del Agent, como se muestra en el ejemplo siguiente.

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 logs de diagnóstico y volcados de memoria del Datadog Agent con trazas (traces) de stack tecnológico ofuscadas para respaldar y mejorar el Datadog Agent.

Puedes desactivar la recopilación de telemetría actualizando el parámetro agent_telemetry en el archivo de configuración del Agent, como se muestra en el siguiente ejemplo.

agent_telemetry:
  enabled: false
DD_AGENT_TELEMETRY_ENABLED=false

Contenido de telemetría:

Metadatos (fuente)
Id de la máquina
Nombre de la máquina
Sistema operativo
Versión del sistema operativo
Versión del Agent
Métricas (fuente)Descripción
checks.execution_timeTiempo de ejecución del check en milisegundos
pymem.inuseNúmero de bytes asignados por el intérprete de Python
pymem.allocNúmero total de bytes asignados por el intérprete de Python desde el inicio del Agent
api_server.request_duration_secondsRendimiento de la ejecución de comandos CLI (si se ejecutan)
logs.decodedNúmero total de logs decodificados
logs.processedNúmero total de logs procesados
logs.sender_latencyLatencia del remitente HTTP en milisegundos
logs.bytes_missedNúmero total de bytes perdidos antes de poder ser consumidos por el Agent, como por ejemplo tras la rotación de logs
logs.sentNúmero total de logs enviados
logs.droppedNúmero total de logs abandonados
logs.bytes_sentNúmero total de bytes enviados antes de la codificación, si los hay
logs.encoded_bytes_sentNúmero total de bytes enviados tras la codificación, si los hay
dogstatsd.udp_packetsBytes de paquetes UDP DogStatsD
dogstatsd.uds_packetsBytes de paquetes UDS DogStatsD
transactions.input_countRecuento de transacciones entrantes
transactions.requeuedRecuento de nuevas colocaciones en colas de transacciones
transactions.retriesRecuento de reintentos de transacciones
point.sentNúmero total de métricas enviadas
point.droppedNúmero total de métricas abandonadas
oracle.activity_samples_countNúmero de filas obtenidas en la medición de la actividad de consulta (Número de muestras de actividad recopiladas)
oracle.activity_latencyTiempo para recuperar la actividad de consulta en milisegundos
oracle.statement_metricsTiempo para recuperar métricas de bases de datos en milisegundos
oracle.statement_plan_errorsNúmero de errores en la recuperación de planes de ejecución
postgres.collect_relations_autodiscovery_msTiempo para recuperar relaciones de Autodiscovery en milisegundos
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 la recopilación pg_stat_activity
postgres.get_active_connections_msTiempo para obtener conexiones activas en milisegundos
postgres.get_active_connections_countTotal de filas obtenidas para ver las conexiones activas
postgres.collect_activity_snapshot_msTiempo para obtener snapshots de actividad 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

Sólo se emiten los métricas aplicables. Por ejemplo, si DBM no está activado, no se emite ninguna métrica relacionada con una base de datos.

Referencias adicionales