创建令牌
使用InfluxDB用户界面(UI)、influx
命令行界面(CLI)或InfluxDB API创建API令牌。
为了遵循安全的API令牌生成和检索的最佳实践,InfluxDB强制对API令牌实施访问限制。
- 令牌对创建令牌的用户可见。
- InfluxDB只允许在创建令牌后立即访问API令牌值。
- 创建后无法更改API令牌的访问(读/写)权限。
- 当创建令牌的用户被删除时,令牌将停止工作。
我们建议以下管理令牌的方法
- 创建一个通用用户以创建和管理写入数据令牌。
- 将令牌存储在安全的密码管理器中以供将来访问。
在InfluxDB UI中创建令牌
要在InfluxDB UI中创建InfluxDB API令牌,导航到API令牌管理页面。在左侧导航菜单中,选择加载数据 > API令牌。
创建全访问令牌
- 从API令牌管理页面,点击位于令牌描述右侧的 生成API令牌按钮。
- 选择全访问API令牌。
创建自定义令牌
- 从API令牌管理页面,点击位于令牌描述右侧的 生成API令牌按钮。
- 选择自定义API令牌。
- 当出现“生成个人API令牌”窗口时,输入描述。如果您不为令牌提供描述,InfluxDB将根据您分配的权限生成描述。例如,如果您为名为“_monitoring”的桶选择“读”,为名为“_tasks”的桶选择“写”,InfluxDB将生成描述“读桶 _monitoring 写桶 _tasks”。
- 选择“读”和“写”列中的复选框以分配令牌的访问权限。您可以启用对所有桶、单个桶、Telegraf配置和其他InfluxDB资源的访问。默认情况下,新令牌没有访问权限。
- 完成时,点击生成。
- 当InfluxDB显示令牌值时,点击复制到剪贴板。这是您从InfluxDB访问和复制令牌值的唯一机会。
- (可选)将API令牌值存储在安全的密码管理器中。
克隆令牌
要创建与现有令牌具有相同授权的令牌,请克隆现有令牌。
- 从API令牌管理页面,找到您要克隆的令牌,并点击位于令牌描述右侧的图标。
- 选择克隆。
- 当InfluxDB UI显示创建的令牌时,点击复制到剪贴板。这是您唯一一次从InfluxDB访问和复制令牌值的机会。
- (可选)将API令牌值存储在安全的密码管理器中。
使用influx CLI创建令牌
使用influx auth create
命令来创建令牌。在命令中包含标志以授予令牌特定权限。查看可用的标志。只有具有write: authorizations
权限的令牌才能创建令牌。
与命令一起提供以下标志
--token
:具有创建新令牌权限的API令牌--org
:组织名称- 权限标志
influx auth create \
--token API_TOKEN \
--org ORG_NAME \
--read-buckets \
--write-buckets \
--read-dbrps \
--write-dbrps
示例
创建全访问令牌
创建一个全权限令牌以授予组织中的所有资源权限。
influx auth create \
--token API_TOKEN \
--org ORG_NAME \
--all-access
创建具有特定权限的令牌
创建具有指定读取权限的令牌
influx auth create \
--token API_TOKEN \
--org ORG_NAME \
--read-bucket BUCKET_ID \
--read-bucket BUCKET_ID \
--read-dashboards \
--read-tasks \
--read-telegrafs \
--read-user
创建一个范围在用户上且具有指定读取和写入权限的令牌
influx auth create \
--token API_TOKEN \
--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创建令牌
使用InfluxDB API的/api/v2/authorizations
端点来创建令牌。
POST https://127.0.0.1:8086/api/v2/authorizations
在请求中包含以下内容
- 头部
- Authorization:
Token API_TOKEN
(具有write: authorizations
权限的API令牌) - Content-type:
application/json
- Authorization:
- 请求正文:具有以下属性的JSON对象
- status:令牌状态(活动或非活动)
- description:令牌描述
- orgID:组织ID
- permissions:具有以下属性的JSON数组中的对象
- action:授权动作(读取或写入)
- resource:具有以下属性的JSON对象
- orgID:组织ID
- type:资源类型
- name:(可选)将权限范围到资源名称
curl --request POST \
https://cloud2.influxdata.com/api/v2/authorizations \
--header "Authorization: Token API_TOKEN" \
--header 'Content-type: application/json' \
--data '{
"status": "active",
"description": "AUTHORIZATION_DESCRIPTION",
"orgID": "ORG_ID",
"permissions": [
{
"action": "read",
"resource": {
"orgID": "ORG_ID",
"type": "authorizations"
}
},
{
"action": "read",
"resource": {
"orgID": "ORG_ID",
"type": "buckets"
}
},
{
"action": "write",
"resource": {
"orgID": "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.
######################################################
function create_token_with_user() {
curl --request POST \
"https://cloud2.influxdata.com/api/v2/users/" \
--header "Authorization: Token API_TOKEN" \
--header 'Content-type: application/json' \
--data "{\"name\": \"$1\"}"
curl --request GET \
"https://cloud2.influxdata.com/api/v2/users?name=$1" \
--header "Authorization: Token API_TOKEN" \
--header 'Content-type: application/json' | \
jq --arg USER $1 '.users[0] // error("User missing")
| {
"orgID": "ORG_ID",
"userID": .id,
"description": $USER,
"permissions": [
{"action": "read", "resource": {"type": "buckets"}}
]
}' | \
curl --request POST \
"https://cloud2.influxdata.com/api/v2/authorizations" \
--header "Authorization: Token API_TOKEN" \
--header 'Content-type: application/json' \
--data @- | \
jq '.token'
}
create_token_with_user 'iot_user_1'
有关更多选项的详细信息,请参阅POST /api/v2/authorizations
文档。
这个页面有帮助吗?
感谢您的反馈!