Documentation

创建一个令牌

通过 InfluxDB 用户界面 (UI)、influx 命令行界面 (CLI) 或 InfluxDB API 创建 API 令牌。

为了遵循安全API令牌生成和检索的最佳实践,InfluxDB对API令牌实施访问限制。

  • 令牌对创建令牌的用户是可见的。
  • InfluxDB 仅在创建令牌后立即允许访问 API 令牌值。
  • 创建后,您无法更改API令牌的访问(读/写)权限。
  • 当创建令牌的用户被删除时,令牌将停止工作。

我们推荐以下方式来管理您的令牌:

  • 创建一个通用用户以创建和管理用于写入数据的令牌。
  • 将您的令牌存储在安全的密码保管库中,以便将来访问。

在InfluxDB用户界面中管理令牌

要在InfluxDB UI中管理InfluxDB API令牌,请导航到API Tokens管理页面。

在左侧的导航菜单中,选择 数据(加载数据) > API 令牌

在InfluxDB UI中创建一个令牌

  1. API Tokens管理页面,点击生成并选择一个令牌类型 (读取/写入令牌所有访问API令牌)。
  2. 在出现的窗口中,在Description字段中输入您的令牌的描述。
  3. 如果生成读/写令牌
    • 读取面板中搜索并选择要读取的桶。
    • 写入面板中搜索并选择要写入的桶。
  4. 点击 保存

使用influx CLI 创建一个令牌

使用influx auth create 命令来创建一个令牌。 在命令中包含标志以授予令牌特定的权限。 请参见可用标志。 只有具有write: authorizations 权限的令牌才能创建令牌。

# Syntax
influx auth create -o <org-name> [permission-flags]

示例

创建一个全访问令牌

创建一个全访问令牌,以授予对组织中所有资源的权限。

influx auth create \
  --org my-org \
  --all-access

创建一个操作符令牌

创建一个操作符令牌,以授予对所有组织中所有资源的权限。

influx auth create \
  --org my-org \
  --operator

要通过 InfluxDB UI、api/v2 API 或 influx CLI 查看或创建操作员令牌,在设置流程完成后,您必须使用现有的操作员令牌。

要创建一个新的操作符令牌而不使用现有的令牌,请查看如何使用influxd recovery auth CLI。

创建具有指定权限的令牌

创建具有指定读取权限的令牌
influx auth create \
  --org my-org \
  --read-bucket 03a2bbf46309a000 \
  --read-bucket 3a87c03ace269000 \
  --read-dashboards \
  --read-tasks \
  --read-telegrafs \
  --read-user
创建一个针对用户的令牌,并具备指定的读取和写入权限
influx auth create       \
  --org ORG_NAME         \
  --user USERNAME        \
  --read-authorizations  \
  --write-authorizations \
  --read-buckets         \
  --write-buckets        \
  --read-dashboards      \
  --write-dashboards     \
  --read-tasks           \
  --write-tasks          \
  --read-telegrafs       \
  --write-telegrafs      \
  --read-users           \
  --write-users

请查看influx auth create 文档以获取有关其他可用标志的信息。

使用InfluxDB API创建令牌

使用 /api/v2/authorizations InfluxDB API 端点来创建一个令牌。

POST http://localhost:8086/api/v2/authorizations

在您的请求中包含以下内容:

需求包含到
具有 write: authorizations 权限的 API 令牌使用 Authorization 头和 BearerToken 方案。
组织在请求体中作为 orgID 传递。
权限列表作为permissions数组传递在请求正文中。
INFLUX_ORG_ID=YOUR_ORG_ID
INFLUX_TOKEN=YOUR_API_TOKEN

curl -v --request POST \
  http://localhost:8086/api/v2/authorizations \
  --header "Authorization: Token ${INFLUX_TOKEN}" \
  --header 'Content-type: application/json' \
  --data '{
  "status": "active",
  "description": "iot-center-device",
  "orgID": "'"${INFLUX_ORG_ID}"'",
  "permissions": [
    {
      "action": "read",
      "resource": {
        "orgID": "'"${INFLUX_ORG_ID}"'",
        "type": "authorizations"
      }
    },
    {
      "action": "read",
      "resource": {
        "orgID": "'"${INFLUX_ORG_ID}"'",
        "type": "buckets"
      }
    },
    {
      "action": "write",
      "resource": {
        "orgID": "'"${INFLUX_ORG_ID}"'",
        "type": "buckets",
        "name": "iot-center" 
      }
    }
  ]
}'

为用户创建一个令牌

要将令牌的作用域设置为令牌创建者以外的用户,请在请求正文中传递 userID 属性。

######################################################
# The example below uses common command-line tools 
# `curl`, `jq` with the InfluxDB API to do the following:
# 1. Create a user.
# 2. Find the new or existing user by name.
# 3. If the user exists:
#   a. Build an authorization object with the user ID.
#   b. Create the new authorization.
#   c. Return the new token.
######################################################

INFLUX_ORG_ID=YOUR_ORG_ID
INFLUX_TOKEN=YOUR_API_TOKEN

function create_token_with_user() {
  curl --request POST \
    "http://localhost:8086/api/v2/users/" \
    --header "Authorization: Token ${INFLUX_TOKEN}" \
    --header 'Content-type: application/json' \
    --data "{\"name\": \"$1\"}"
  
  curl --request GET \
    "http://localhost:8086/api/v2/users?name=$1" \
    --header "Authorization: Token ${INFLUX_TOKEN}" \
    --header 'Content-type: application/json' | \
  
  jq --arg USER $1 '.users[0] // error("User missing")
    | {
        "orgID": "'"${INFLUX_ORG_ID}"'",
        "userID": .id,
        "description": $USER,
        "permissions": [
           {"action": "read", "resource": {"type": "buckets"}}
         ]
      }' | \
  
  curl --request POST \
    "http://localhost:8086/api/v2/authorizations" \
    --header "Authorization: Token ${INFLUX_TOKEN}" \
    --header 'Content-type: application/json' \
    --data @- | \
  
  jq '.token'
}

create_token_with_user 'iot_user_1'

请查看 POST /api/v2/authorizations 文档 以获取有关选项的更多信息。



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 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

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