Tanto la API HTTP como el cliente de línea de comandos (que también utiliza la API HTTP para conectarse al motor) de InfluxDB, incluyen un mecanismo de autenticación simple basado en credenciales de usuario (nombre de usuario y contraseña). Cuando se habilita la autenticación en InfluxDB, el motor sólo ejecuta los pedidos HTTP que incluyan credenciales válidas. Este mecanismo de autenticación no está habilitado por defecto, por ende este artículo explica cómo habilitar la autenticación en un servidor InfluxDB, y cómo crear un usuario con privilegios de sólo lectura (para Grafana), a fin de mejorar la seguridad de la instalación.



Habilitar la autenticación en InfluxDB

El primer paso consiste en habilitar la autenticación en la configuración de InfluxDB:

root@debian:~# nano /etc/influxdb/influxdb.conf

Para ello, cambiar el valor de la variable auth-enabled por "true":

[http]
  enabled = true
  bind-address = ":8086"
  auth-enabled = true

Luego reiniciar InfluxDB:

root@debian:~# service influxdb stop
[ ok ] Stopping database: influxd.
root@debian:~# service influxdb start
[ ok ] Starting database: influxd.

Cuando se habilita la autenticación y no existe al menos un usuario administrador, InfluxDB no permite ejecutar ninguna consulta, excepto la creación de un usuario administrador.

Al ingresar al motor con el cliente influx:

root@debian:~# influx
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
Connected to http://localhost:8086 version 1.0.2
InfluxDB shell version: 1.0.2
> use collectd
ERR: error authorizing query: create admin user first or disable authentication

Se observa que ni siquiera permite ejecutar el comando use. Para crear un usuario administrador entonces, ejecutar la siguiente consulta:

> create user admin with password '1234' with all privileges
> quit

No hace falta decir que es necesario cambiar 1234 por una contraseña fuerte.

A continuación, verificar el funcionamiento. Al ingresar sin especificar credenciales, no es posible ejecutar consulta alguna:

root@debian:~# influx
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
Connected to http://localhost:8086 version 1.0.2
InfluxDB shell version: 1.0.2
> use collectd
ERR: unable to parse authentication credentials
> quit

A partir de ahora es necesario autenticarse ingresando usuario (-username) y contraseña (-password) como parámetros al cliente influx:

root@debian:~# influx -username admin -password ''
password: 
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
Connected to http://localhost:8086 version 1.0.2
InfluxDB shell version: 1.0.2
> use collectd
Using database collectd
>

Para que la contraseña no se divulgue en el historial, logs, etc. se debe especificar una contraseña en blanco (parámetro '' a la opción -password), lo cual hace que el cliente solicite la misma de forma interactiva.

Crear un usuario con privilegios de sólo lectura

Habiendo creado un usuario administrador (all privileges), es posible crear un usuario de sólo lectura (read) para Grafana:

> create user grafana with password '1234'
> grant read on "collectd" to "grafana"
> quit

En este ejemplo sólo se da permiso de lectura a la base de datos "collectd" al usuario "grafana".

Configurar la autenticación en Grafana

Ahora es posible configurar la autenticación sobre el data source correspondiente en grafana. De lo contrario se pierde el acceso al mismo, tal como se comprueba desde el cliente de línea de comandos influx. Acceder a la configuración de data sources en Grafana e ingresar el usuario y clave debajo de la sección "InfluxDB Details":

Referencias


Tal vez pueda interesarte


Compartí este artículo