Nuestro equipo especializado pasados ciertos días de trabajo y de recopilar de datos, obtuvieron la respuesta, nuestro deseo es que te resulte útil para tu proyecto.
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 elusername
ypassword
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 DATABASE
◦ DROP SERIES
y DROP MEASUREMENT
◦ CREATE RETENTION POLICY
, ALTER RETENTION POLICY
, y DROP RETENTION POLICY
◦ CREATE 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: ◦ READ
◦ WRITE
◦ ALL
(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 '
CREATE
otro usuario administrador:
CREATE USERWITH 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 USERWITH 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' >
GRANT
READ
, WRITE
o ALL
privilegios de base de datos para un usuario existente:
GRANT [READ,WRITE,ALL] ONTO
Ejemplos de CLI:
GRANT
READ
el acceso a los todd
sobre el NOAA_water_database
base de datos:
> GRANT READ ON "NOAA_water_database" TO "todd">
GRANT
ALL
el acceso a los todd
sobre el NOAA_water_database
base de datos:
> GRANT ALL ON "NOAA_water_database" TO "todd">
REVOKE
READ
, WRITE
, o ALL
privilegios de base de datos de un usuario existente:
REVOKE [READ,WRITE,ALL] ONFROM
Ejemplos de CLI:
REVOKE
ALL
privilegios de todd
sobre el NOAA_water_database
base de datos:
> REVOKE ALL ON "NOAA_water_database" FROM "todd">
REVOKE
WRITE
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 tieneWRITE
privilegios revocados, se quedan conREAD
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.
Tienes la opción de añadir valor a nuestro contenido informacional aportando tu experiencia en los informes.