对InfluxDB Enterprise进行请求认证
要要求有效的凭据以进行集群访问,请参见 “启用身份验证”。
验证请求
使用InfluxDB API进行身份验证
使用以下选项之一通过 InfluxDB API 进行身份验证:
如果您同时使用基本身份验证 和 URL 查询参数进行身份验证,则查询参数中指定的用户凭据优先。以下示例演示具有 admin user 权限的查询。要了解不同用户类型、权限以及如何管理用户,请参见 authorization。
启用身份验证时,InfluxDB Enterprise 会在日志输出中屏蔽密码。
使用基本身份验证进行认证
curl -G http://localhost:8086/query \
-u todd:password4todd \
--data-urlencode "q=SHOW DATABASES"
使用URL或请求体中的查询参数进行身份验证
将 u 设置为用户名,将 p 设置为密码。
凭据作为查询参数
curl -G "http://localhost:8086/query?u=todd&p=password4todd" \
--data-urlencode "q=SHOW DATABASES"
请求体中的凭据
curl -G http://localhost:8086/query \
--data-urlencode "u=todd" \
--data-urlencode "p=password4todd" \
--data-urlencode "q=SHOW DATABASES"
通过CLI进行身份验证
有三种选项用于与CLI进行身份验证:
使用环境变量进行身份验证
使用 INFLUX_USERNAME 和 INFLUX_PASSWORD 环境变量提供
身份验证凭据给 influx CLI。
export INFLUX_USERNAME=todd
export INFLUX_PASSWORD=password4todd
echo $INFLUX_USERNAME $INFLUX_PASSWORD
todd password4todd
influx
Connected to http://localhost:8086 version 1.11.8
InfluxDB shell 1.11.8
使用CLI标志进行身份验证
使用 -username 和 -password 标志提供身份验证凭据给 influx CLI。
influx -username todd -password password4todd
Connected to http://localhost:8086 version 1.11.8
InfluxDB shell 1.11.8
在 influx shell 中使用凭据进行身份验证
启动 influx Shell并运行 auth 命令。
当提示时输入您的用户名和密码。
$ influx
Connected to http://localhost:8086 version 1.11.8
InfluxDB shell 1.11.8
> auth
username: todd
password:
>
使用JWT令牌进行身份验证
为了更安全地替代使用密码,在请求InfluxDB API时,请包含JWT令牌。 这目前只能通过InfluxDB HTTP API实现。
在您的InfluxDB Enterprise配置文件中添加一个共享秘密。
InfluxDB Enterprise 使用共享密钥来编码 JWT 签名。 默认情况下,
shared-secret设置为空字符串,在这种情况下不进行 JWT 身份验证。在你的 InfluxDB 配置文件 中添加一个自定义共享密钥。
密钥字符串越长,安全性越高:[http] shared-secret = "my super secret pass phrase"或者,为了避免在您的 InfluxDB 配置文件中将秘密短语以明文形式保存,可以使用
INFLUXDB_HTTP_SHARED_SECRET环境变量设置该值。生成您的JWT令牌。
使用身份验证服务生成安全令牌,使用您的 InfluxDB 用户名、过期时间和共享秘密。 有一些在线工具,例如 https://jwt.io/,可以为您完成这项工作。
令牌的有效载荷(或声明)必须呈现以下格式:
{ "username": "myUserName", "exp": 1516239022 }- username - 您的 InfluxDB 用户名。
- exp - 令牌的过期时间,单位为UNIX时间纪元。 为了增加安全性,保持令牌过期时间较短。 在测试中,可以使用 https://www.unixtimestamp.com/index.php 手动生成UNIX时间戳。
使用您的共享密钥对有效负载进行编码。 您可以在自己的身份验证服务器中使用 JWT 库或手动在 https://jwt.io/ 上完成此操作。
生成的令牌遵循以下格式:
<header>.<payload>.<signature>在HTTP请求中包含令牌。
在HTTP请求中将生成的令牌包含为
Authorization头的一部分:Authorization: Bearer <myToken>只有未过期的令牌才能成功认证。确保您的令牌尚未过期。
使用JWT认证的示例查询请求
curl -G "http://localhost:8086/query?db=demodb" \
--data-urlencode "q=SHOW DATABASES" \
--header "Authorization: Bearer <header>.<payload>.<signature>"
认证Telegraf请求到InfluxDB
对启用了身份验证的InfluxDB实例进行Telegraf请求的身份验证需要一些额外的步骤。在Telegraf配置文件(/etc/telegraf/telegraf.conf)中,取消注释并编辑username和password设置。
###############################################################################
# OUTPUT PLUGINS #
###############################################################################
# ...
[[outputs.influxdb]]
# ...
username = "example-username" # Provide your username
password = "example-password" # Provide your password
# ...
重启 Telegraf,你就准备好了!