Configuración de permisos de archivos para la rotación de logs (Linux)
El Datadog Agent se ejecuta con el usuario dd-agent
y el grupo dd-agent
. Esto impide que el Datadog Agent acceda a logs en /var/log
, ya que sólo son accesibles por un administrador raíz (o un administrador sudo).
Para permitir el acceso de sólo lectura sólo a datadog-agent
, crea las ACL y modifica logrotate para conservar los cambios de los permisos.
Comprobar que las ACL están habilitadas en tu sistema
Es necesario que las ACL estén habilitadas en tu sistema de archivos para configurar permisos utilizando los métodos descritos en este artículo. Verifica que las ACL están habilitadas utilizando los comandos getfacl
y setfacl
para configurar permisos para el usuario datadog-agent
en un directorio de test, por ejemplo:
mkdir /var/log/test-dir
getfacl /var/log/test-dir/
setfacl -m u:dd-agent:rx /var/log/test-dir
getfacl /var/log/test-dir/
Si las ACL están habilitadas, los permisos configurados para datadog-agent
aparecen en el resultado de getfacl.
Concesión de permisos de lectura y ejecución en directorios de logs a dd-agent
Una vez que hayas verificado que las ACL están habilitadas, concede permisos de lectura y ejecución al usuario datadog-agent
en los directorios apropiados para la recopilación de logs. Por ejemplo, para conceder acceso a /var/log/apache
, ejecuta:
setfacl -m u:dd-agent:rx /var/log/apache
Obtener más información sobre cómo configurar las ACL en Linux
Configuración de permisos para la rotación de archivos de logs
Configurar los permisos una vez no servirá para la rotación de logs, ya que logrotate no vuelve a aplicar la configuración de ACL. Para obtener una solución más permanente, añade una regla a logrotate para restablecer la ACL en un nuevo archivo:
sudo touch /etc/logrotate.d/dd-agent_ACLs
Archivo de ejemplo:
/var/log/apache/*.log {
postrotate
/usr/bin/setfacl -m g:dd-agent:rx /var/log/apache/access.log
/usr/bin/setfacl -m g:dd-agent:rx /var/log/apache/error.log
endscript
}
Comprueba el estado de la ACL de un archivo con:
getfacl /var/log/apache/access.log
Nota: Para PostgreSQL v10 y versiones anteriores, configura el permiso en 0700. Para PostgreSQL v11, configúralo en 0700 o 0750. Intentar iniciar un servidor con una carpeta de datos base que tenga permisos diferentes de 0700 o 0750 resultará en un fallo del proceso postmater.
Nota: El directorio de gestión de logs de PostgreSQL no puede estar ubicado en el mismo directorio que la instalación base de PostgreSQL.
Configuración de permisos cuando las ACL no están presentes
Cuando las ACL no estén presentes en un sistema, configura tus permisos basándote en el acceso de grupo.
Por ejemplo, si tu servicio MySQL está gestionando logs en las siguientes localizaciones:
/var/log/mysql/mysql_error.log
/var/log/mysql/mysql-slow.log
Sus permisos están asociados al usuario ‘mysql’ y al grupo ‘mysql’ por defecto. Este esquema de gestión de logs deniega el acceso al archivo de logs a cualquier usuario que no pertenezca al grupo ‘mysql’. Por lo general, es posible que veas algo así:
$ ls -l /var/log | grep -i mysql
drwxr-x--- 2 mysql mysql 4096 Feb 20 06:25 mysql
En este caso, el camino más fácil es proporcionar a todos acceso de lectura al archivo en la configuración de logrotate:
/var/log/mysql/mysql_error.log /var/log/mysql/mysql-slow.log {
daily
rotate 7
missingok
create 644 mysql adm
compress
}
Cada aplicación existente seguirá una nomenclatura similar. La ventaja es que evitas proporcionar acceso privilegiado a una cuenta individual y utilizas una práctica estandarizada. Esto te ayuda a mantener tus reglas de auditoría bajo control.
Leer más
Más enlaces, artículos y documentación útiles: