Este documento cubre la configuración y gestión de la autenticación y autorización en InfluxDB.

Autenticación: Autorización:
Configurar la autenticación Tipos de usuario y privilegios
Autenticar solicitudes Comandos de gestión de usuarios
Errores HTTP Errores HTTP

Nota: No se debe confiar en la autenticación y la autorización para evitar el acceso y proteger los datos de actores malintencionados. Si se desean características adicionales de seguridad o cumplimiento, InfluxDB debe ejecutarse detrás de un servicio de terceros.

Autenticación

La API HTTP de InfluxDB y la interfaz de línea de comandos (CLI), que se conecta a la base de datos mediante la API, incluyen una autenticación simple e integrada basada en las credenciales del usuario. Cuando habilita la autenticación, InfluxDB solo ejecuta solicitudes HTTP que se envían con credenciales válidas.

Nota: La autenticación solo se produce en el ámbito de la solicitud HTTP. Actualmente, los complementos no tienen la capacidad de autenticar solicitudes y los puntos finales de servicio (por ejemplo, Graphite, collectd, etc.) no están autenticados.

Configurar la autenticación

1. Cree al menos un usuario administrador.

Consulte la sección de autorización para saber cómo crear un usuario administrador.

Nota: Si habilita la autenticación y no tiene usuarios, InfluxDB no impondrá la autenticación y solo aceptará la consulta que crea un nuevo usuario administrador.

InfluxDB aplicará la autenticación una vez que haya un usuario administrador.

2. De forma predeterminada, la autenticación está deshabilitada en el archivo de configuración.

Habilite la autenticación configurando el auth-enabled opción a true en el [http] sección del archivo de configuración:

[http]  
  enabled = true  
  bind-address = ":8086"  
  auth-enabled = true # ✨
  log-enabled = true  
  write-tracing = false  
  pprof-enabled = false  
  https-enabled = false  
  https-certificate = "/etc/ssl/influxdb.pem"  

3. Reinicie el proceso.

Ahora InfluxDB verificará las credenciales de usuario en cada solicitud y solo procesará las solicitudes que tengan credenciales válidas para un usuario existente.

Autenticar solicitudes

Autenticarse con la API HTTP

Hay dos opciones para autenticarse con la API HTTP.

Si se autentica con autenticación básica y los parámetros de consulta de URL, las credenciales de usuario especificadas en los parámetros de consulta tienen prioridad. Las consultas de los siguientes ejemplos suponen que el usuario es un usuario administrador. Consulte la sección sobre autorización para los diferentes tipos de usuarios, sus privilegios y más sobre la administración de usuarios.

Nota: InfluxDB redacta las contraseñas cuando habilita la autenticación.

Autenticar con autenticación básica como se describe en RFC 2617, Sección 2

Este es el método preferido para proporcionar credenciales de usuario.

Ejemplo:

curl -G http://localhost:8086/query -u todd:influxdb4ever --data-urlencode "q=SHOW DATABASES"
Autenticar proporcionando parámetros de consulta en la URL o el cuerpo de la solicitud

Colocar u como nombre de usuario y p como contraseña.

Ejemplo usando parámetros de consulta:

curl -G "http://localhost:8086/query?u=todd&p=influxdb4ever" --data-urlencode "q=SHOW DATABASES"

Ejemplo usando el cuerpo de la solicitud:

curl -G http://localhost:8086/query --data-urlencode "u=todd" --data-urlencode "p=influxdb4ever" --data-urlencode "q=SHOW DATABASES"

Autenticarse con la CLI

Hay tres opciones para autenticarse con la CLI.

Autenticarse con el INFLUX_USERNAME y INFLUX_PASSWORD Variables de entorno

Ejemplo:

export INFLUX_USERNAME todd
export INFLUX_PASSWORD influxdb4ever
echo $INFLUX_USERNAME $INFLUX_PASSWORD
todd influxdb4ever

influx
Connected to http://localhost:8086 version 1.3.x
InfluxDB shell 1.3.x
Autenticar configurando el username y password banderas cuando inicias la CLI

Ejemplo:

influx -username todd -password influxdb4ever
Connected to http://localhost:8086 version 1.3.x
InfluxDB shell 1.3.x
Autenticarse con auth después de iniciar la CLI

Ejemplo:

influx
Connected to http://localhost:8086 version 1.3.x
InfluxDB shell 1.3.x
> auth
username: todd
password:
>

Autenticar solicitudes de Telegraf en InfluxDB

La autenticación de solicitudes de Telegraf en una instancia de InfluxDB con la autenticación habilitada requiere algunos pasos adicionales. En el archivo de configuración de Telegraf (/etc/telegraf/telegraf.conf), descomente y edite el username y password ajustes:

###############################################################################
#                            OUTPUT PLUGINS                                   #
###############################################################################

[...]

## Write timeout (for the InfluxDB client), formatted as a string.
## If not provided, will default to 5s. 0s means no timeout (not recommended).
timeout = "5s"
username = "telegraf" #💥
password = "metricsmetricsmetricsmetrics" #💥

[...]

A continuación, reinicie Telegraf y estará listo.

Autorización

La autorización solo se aplica una vez que haya habilitado la autenticación. De forma predeterminada, la autenticación está deshabilitada, todas las credenciales se ignoran silenciosamente y todos los usuarios tienen todos los privilegios.

Tipos de usuario y privilegios

Usuarios administradores

Los usuarios administradores tienen READ y WRITE acceso a todas las bases de datos y acceso completo a las siguientes consultas administrativas:

Gestión de la base de datos: ◦ CREATE DATABASE, y DROP DATABASEDROP SERIES y DROP MEASUREMENTCREATE RETENTION POLICY, ALTER RETENTION POLICY, y DROP RETENTION POLICYCREATE CONTINUOUS QUERY y DROP CONTINUOUS QUERY

Consulte las páginas de administración de bases de datos y consultas continuas para obtener una descripción completa de los comandos enumerados anteriormente.

Gestión de usuarios: ◦ Gestión de usuarios administradores: CREATE USER, GRANT ALL PRIVILEGES, REVOKE ALL PRIVILEGES, y SHOW USERS ◦ Gestión de usuarios no administradores: CREATE USER, GRANT [READ,WRITE,ALL], REVOKE [READ,WRITE,ALL], y SHOW GRANTS ◦ Gestión general de usuarios: SET PASSWORD y DROP USER

Consulte a continuación para obtener una explicación completa de los comandos de administración de usuarios.

Usuarios que no son administradores

Los usuarios que no son administradores pueden tener uno de los siguientes tres privilegios por base de datos: ◦ READWRITEALL (ambos READ y WRITE acceso)

READ, WRITE, y ALL los privilegios se controlan por usuario por base de datos. Un nuevo usuario que no sea administrador no tiene acceso a ninguna base de datos hasta que un usuario administrador le otorgue privilegios específicos sobre una base de datos. Los usuarios que no son administradores pueden SHOW las bases de datos en las que tienen READ y / o WRITE permisos.

Comandos de gestión de usuarios

Gestión de usuarios administradores

Cuando habilita la autenticación HTTP, InfluxDB requiere que cree al menos un usuario administrador antes de que pueda interactuar con el sistema.

CREATE USER admin WITH PASSWORD '' WITH ALL PRIVILEGES

CREATE otro usuario administrador:
CREATE USER  WITH PASSWORD '' WITH ALL PRIVILEGES

Ejemplo de CLI:

> CREATE USER paul WITH PASSWORD 'timeseries4days' WITH ALL PRIVILEGES
>

Nota: Repitiendo el exacto CREATE USER declaración es idempotente. Si algún valor cambia, la base de datos devolverá un error de usuario duplicado. Ver problema de GitHub N.º 6890 para detalles.

Ejemplo de CLI:

> CREATE USER todd WITH PASSWORD '123456' WITH ALL PRIVILEGES
> CREATE USER todd WITH PASSWORD '123456' WITH ALL PRIVILEGES
> CREATE USER todd WITH PASSWORD '123' WITH ALL PRIVILEGES
ERR: user already exists
> CREATE USER todd WITH PASSWORD '123456'
ERR: user already exists
> CREATE USER todd WITH PASSWORD '123456' WITH ALL PRIVILEGES
>
GRANT privilegios administrativos para un usuario existente:
GRANT ALL PRIVILEGES TO 

Ejemplo de CLI:

> GRANT ALL PRIVILEGES TO "todd">
REVOKE privilegios administrativos de un usuario administrador:
REVOKE ALL PRIVILEGES FROM 

Ejemplo de CLI:

> REVOKE ALL PRIVILEGES FROM "todd">
SHOW todos los usuarios existentes y su estado de administrador:
SHOW USERS

Ejemplo de CLI:

> SHOW USERS
user 	 admin
todd     false
paul     true
hermione false
dobby    false

Gestión de usuarios no administradores

CREATE un nuevo usuario no administrador:
CREATE USER  WITH PASSWORD ''

Ejemplo de CLI:

> CREATE USER todd WITH PASSWORD 'influxdb41yf3'> CREATE USER alice WITH PASSWORD 'wonder'land'
> CREATE USER "rachel_smith" WITH PASSWORD 'asdf1234!'
> CREATE USER "monitoring-robot" WITH PASSWORD 'XXXXX'
> CREATE USER "$savyadmin" WITH PASSWORD 'm3tr1cL0v3r'
>

Notas:

  • El valor del usuario debe estar entre comillas dobles si comienza con un dígito, es una palabra clave de InfluxQL, contiene un guión o incluye cualquier carácter especial, por ejemplo: [email protected]#$%^&*()-
  • La contraseña string debe estar entre comillas simples.
  • No incluya las comillas simples al autenticar solicitudes.

Para las contraseñas que incluyen una comilla simple o un carácter de nueva línea, escape el carácter de comillas simples o de nueva línea con una barra invertida tanto al crear la contraseña como al enviar solicitudes de autenticación.

  • Repitiendo el exacto CREATE USER declaración es idempotente. Si algún valor cambia, la base de datos devolverá un error de usuario duplicado. Ver problema de GitHub N.º 6890 para detalles.

Ejemplo de CLI:

> CREATE USER "todd" WITH PASSWORD '123456'
> CREATE USER "todd" WITH PASSWORD '123456'
> CREATE USER "todd" WITH PASSWORD '123'
ERR: user already exists
> CREATE USER "todd" WITH PASSWORD '123456'
> CREATE USER "todd" WITH PASSWORD '123456' WITH ALL PRIVILEGES
ERR: user already exists
> CREATE USER "todd" WITH PASSWORD '123456'
>
GRANTREAD, WRITE o ALL privilegios de base de datos para un usuario existente:
GRANT [READ,WRITE,ALL] ON  TO 

Ejemplos de CLI:

GRANTREAD el acceso a los todd sobre el NOAA_water_database base de datos:

> GRANT READ ON "NOAA_water_database" TO "todd">

GRANTALL el acceso a los todd sobre el NOAA_water_database base de datos:

> GRANT ALL ON "NOAA_water_database" TO "todd">
REVOKEREAD, WRITE, o ALL privilegios de base de datos de un usuario existente:
REVOKE [READ,WRITE,ALL] ON  FROM 

Ejemplos de CLI:

REVOKEALL privilegios de todd sobre el NOAA_water_database base de datos:

> REVOKE ALL ON "NOAA_water_database" FROM "todd">

REVOKEWRITE privilegios de todd sobre el NOAA_water_database base de datos:

> REVOKE WRITE ON "NOAA_water_database" FROM "todd">

Nota: Si un usuario con ALL privilegios tiene WRITE privilegios revocados, se quedan con READ privilegios y viceversa.

SHOW privilegios de la base de datos de un usuario:
SHOW GRANTS FOR 

Ejemplo de CLI:

> SHOW GRANTS FOR "todd"
database		            privilege
NOAA_water_database	        WRITE
another_database_name	    READ
yet_another_database_name   ALL PRIVILEGES

Gestión general de usuarios administradores y no administradores

ReSET una contraseña de usuario:
SET PASSWORD FOR  = ''

Ejemplo de CLI:

> SET PASSWORD FOR "todd"='influxdb4ever'>
> **Note:** The password [string](/influxdb/v1.3/query_language/spec/#strings) must be wrapped in single quotes.

No incluya las comillas simples al autenticar solicitudes. > Para las contraseñas que incluyen una comilla simple o un carácter de nueva línea, escape el carácter de comillas simples o de nueva línea con una barra invertida tanto al crear la contraseña como al enviar solicitudes de autenticación.

DROP un usuario:
DROP USER 

Ejemplo de CLI:

> DROP USER"todd">

Errores HTTP de autenticación y autorización

Las solicitudes sin credenciales de autenticación o credenciales incorrectas producen el HTTP 401 Unauthorized respuesta.

Las solicitudes de usuarios no autorizados producen el HTTP 403 Forbidden respuesta.