本文档介绍如何在InfluxDB中设置和管理身份验证和授权。
验证: | 授权: |
设置身份验证 | 用户类型和权限 |
验证请求 | 用户管理命令 |
HTTP错误 | HTTP错误 |
注意:不应依赖身份验证和授权来阻止访问并保护数据免受恶意攻击者的攻击。如果需要其他安全性或合规性功能,InfluxDB应该在第三方服务后面运行。
认证
InfluxDB的HTTP API和命令行界面(CLI)使用API连接到数据库,包括基于用户凭据的简单内置身份验证。启用身份验证时,InfluxDB仅执行使用有效凭据发送的HTTP请求。
注意:身份验证仅发生在HTTP请求范围内。插件当前无法对请求进行身份验证,并且服务端点(例如,Graphite,collectd等)未经过身份验证。
设置身份验证
1.创建至少一个管理员用户。
有关如何创建管理员用户的信息,请参阅授权部分。
注意:如果启用身份验证且没有用户,InfluxDB将不会强制执行身份验证,并且只接受创建新管理员用户的查询。
一旦有管理员用户,InfluxDB将强制执行身份验证。
2.默认情况下,配置文件中禁用身份验证。
通过在配置文件的部分中设置auth-enabled
选项来启用身份验证:true
[http]
[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.重新启动该过程。
现在InfluxDB将检查每个请求的用户凭据,并且只处理具有现有用户的有效凭据的请求。
验证请求
使用HTTP API进行身份验证
使用HTTP API进行身份验证有两种选择。
如果使用基本身份验证和 URL查询参数进行身份验证,则查询参数中指定的用户凭据优先。以下示例中的查询假定用户是管理员用户。请参阅有关不同用户类型的授权,其权限以及有关用户管理的更多信息部分。
注意:在启用身份验证时,InfluxDB会编辑密码。
使用RFC 2617第2节中描述的基本身份验证进行身份验证
这是提供用户凭据的首选方法。
例:
curl -G http://localhost:8086/query -u todd:influxdb4ever --data-urlencode "q=SHOW DATABASES"
通过在URL或请求正文中提供查询参数进行身份验证
设置u
为用户名和p
密码。
使用查询参数的示例:
curl -G "http://localhost:8086/query?u=todd&p=influxdb4ever" --data-urlencode "q=SHOW DATABASES"
使用请求正文的示例:
curl -G http://localhost:8086/query --data-urlencode "u=todd" --data-urlencode "p=influxdb4ever" --data-urlencode "q=SHOW DATABASES"
使用CLI进行身份验证
使用CLI进行身份验证有三种选择。
使用INFLUX_USERNAME
和INFLUX_PASSWORD
环境变量进行身份验证
例:
export INFLUX_USERNAME todd
export INFLUX_PASSWORD influxdb4ever
echo $INFLUX_USERNAME $INFLUX_PASSWORD
todd influxdb4ever
influx
Connected to http://localhost:8086 version 1.4.x
InfluxDB shell 1.4.x
通过在启动CLI时设置username
和password
标志进行身份验证
例:
influx -username todd -password influxdb4ever
Connected to http://localhost:8086 version 1.4.x
InfluxDB shell 1.4.x
auth
启动CLI后进行身份验证
例:
influx
Connected to http://localhost:8086 version 1.4.x
InfluxDB shell 1.4.x
> auth
username: todd
password:
>
验证对InfluxDB的Telegraf请求
在启用身份验证的情况下向InfluxDB实例验证Telegraf请求需要一些额外的步骤。在Telegraf的配置文件(
/etc/telegraf/telegraf.conf
)中,取消注释并编辑username
和password
设置:############################################################################### # 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" #