Documentation

对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_USERNAMEINFLUX_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实现。

  1. 在您的InfluxDB Enterprise配置文件中添加一个共享秘密

    InfluxDB Enterprise 使用共享密钥来编码 JWT 签名。 默认情况下, shared-secret 设置为空字符串,在这种情况下不进行 JWT 身份验证。

    在你的 InfluxDB 配置文件 中添加一个自定义共享密钥。
    密钥字符串越长,安全性越高:

    [http]
    shared-secret = "my super secret pass phrase"
    

    或者,为了避免在您的 InfluxDB 配置文件中将秘密短语以明文形式保存,可以使用 INFLUXDB_HTTP_SHARED_SECRET 环境变量设置该值。

  2. 生成您的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>

  3. 在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)中,取消注释并编辑usernamepassword设置。

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

# ...

[[outputs.influxdb]]
  # ...
  username = "example-username" # Provide your username
  password = "example-password" # Provide your password

# ...

重启 Telegraf,你就准备好了!



Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: