创建一个令牌
通过 InfluxDB 用户界面 (UI)、influx 命令行界面 (CLI) 或 InfluxDB API 创建 API 令牌。
为了遵循安全API令牌生成和检索的最佳实践,InfluxDB对API令牌实施访问限制。
- 令牌对创建令牌的用户是可见的。
- InfluxDB 仅在创建令牌后立即允许访问 API 令牌值。
- 创建后,您无法更改API令牌的访问(读/写)权限。
- 当创建令牌的用户被删除时,令牌将停止工作。
我们推荐以下方式来管理您的令牌:
- 创建一个通用用户以创建和管理用于写入数据的令牌。
- 将您的令牌存储在安全的密码保管库中,以便将来访问。
在InfluxDB用户界面中管理令牌
要在InfluxDB UI中管理InfluxDB API令牌,请导航到API Tokens管理页面。
在左侧导航菜单中,选择 加载数据 > API 令牌。
在InfluxDB UI中创建一个令牌
创建一个全访问令牌
- 从API Tokens管理页面,点击 生成API令牌按钮。
- 选择 所有访问API令牌。
创建自定义令牌
- 从 API Tokens management page,点击 生成 API 令牌 按钮。
- 选择 自定义 API 令牌。
- 当出现生成个人 API 令牌窗口时,输入描述。如果您没有为令牌提供描述,InfluxDB 将根据您分配的权限生成一个描述。比如,如果您选择为名为“_monitoring”的存储桶赋予读取权限,且为名为“_tasks”的存储桶赋予写入权限,InfluxDB 将生成描述“读取存储桶 _monitoring 写入存储桶 _tasks”。
- 在读取和写入列中选择复选框,以分配令牌的访问权限。您可以启用对所有存储桶、单个存储桶、Telegraf 配置和其他 InfluxDB 资源的访问。默认情况下,新令牌没有访问权限。
- 完成后,点击 生成。
- 当InfluxDB显示令牌值时,点击 复制到剪贴板。这是您唯一的机会从InfluxDB访问并复制令牌值。
- (可选)将API令牌值存储在安全的密码保管库中。
克隆一个令牌
要创建一个具有与现有令牌相同授权的令牌,请克隆现有令牌。
- 在API令牌管理页面,找到您想要克隆的令牌,然后点击位于令牌描述最右侧的图标。
- 选择 Clone.
- 当 InfluxDB 用户界面显示创建的令牌时,点击 复制到剪贴板。这是您唯一可以访问和复制 InfluxDB 令牌值的机会。
- (可选)将API令牌值存储在安全的密码保管库中。
使用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 \
--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头和Token方案。 |
| 组织 | 在请求体中作为 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 文档
以获取有关选项的更多信息。