设置 InfluxDB Enterprise 授权
使用存储在 InfluxDB Enterprise 中并由其管理的基于用户的授权来验证对 Kapacitor HTTP API 的请求。
身份验证的工作原理
使用 InfluxDB Enterprise 授权与 Kapacitor 进行身份验证的过程涉及企业 TICK stack 的三个组件
- InfluxDB Enterprise 元节点
- Kapacitor
- Chronograf (用于辅助创建用户和角色)
Kapacitor 解析 API 请求中提供的用户凭据。
Kapacitor 检查用户名和密码是否与本地 Kapacitor 缓存中存储的任何用户详细信息匹配。
如果用户详细信息在缓存中,则跳至步骤 7。
如果用户详细信息不在缓存中,Kapacitor 会将凭据发送到 InfluxDB Enterprise 元 API 端点。InfluxDB Enterprise 元服务器检查凭据是否有效,如果有效,则将用户详细信息 JSON 文档返回给 Kapacitor。
Kapacitor 检查用户详细信息文档以获取正确的权限。
Kapacitor 缓存用户详细信息。
如果用户具有正确的权限,Kapacitor 将完成请求。
如果用户没有正确的权限,Kapacitor 将中止事务并返回 403 错误以及响应正文{"error":"user <USER> does not have \"read\" privilege for API endpoint \"/kapacitor/v1/tasks\""}
创建具有 Kapacitor 权限的 InfluxDB Enterprise 用户或角色
使用 InfluxDB Enterprise 元 API 创建具有 Kapacitor 权限的用户,或创建具有 Kapacitor 权限的角色并为该角色分配用户。
以下示例使用 InfluxDB Enterprise 元 API 来管理用户和角色,但您也可以 使用 Chronograf 来管理用户和角色。
要与 Kapacitor 交互,用户或角色必须具有以下一项或两项权限
- KapacitorAPI:授予通过 Kapacitor API 执行 CRUD 操作的权限。
- KapacitorConfigAPI:授予通过 API 配置 Kapacitor 的权限。
创建新的 InfluxDB Enterprise 用户
使用以下 InfluxDB Enterprise 元 API 的请求方法和端点创建新的 InfluxDB Enterprise 用户
POST /user提供以下内容
- InfluxDB Enterprise 元 URL:主 InfluxDB Enterprise 元节点的 URL
- 基本身份验证:InfluxDB Enterprise 用户名和密码
- 请求正文:具有以下字段的 JSON 对象
- action:create
- user:具有以下字段的 JSON 对象
- name:用户名
- password:密码
curl --request POST https://172.17.0.2:8091/user \
--user "admin:changeit" \
--data '{
"action":"create",
"user": {
"name":"johndoe",
"password":"pa5sw0Rd"
}
}' 授予新用户 Kapacitor 权限
使用以下 InfluxDB Enterprise 元 API 的请求方法和端点向新用户授予与 Kapacitor 相关的权限
POST /user提供以下内容
- InfluxDB Enterprise 元 URL:主 InfluxDB Enterprise 元节点的 URL
- 基本身份验证:InfluxDB Enterprise 用户名和密码
- 请求正文:具有以下字段的 JSON 对象
- action:add-permissions
- user:具有以下字段的 JSON 对象
- name:用户名
- permissions:具有以下字段的 JSON 对象: -"":要添加的权限列表
$ curl --request POST https://172.17.0.2:8091/user \
--user "username:password" \
--data '{
"action": "add-permissions",
"user":{
"name": "johndoe",
"permissions": {
"":[
"KapacitorAPI",
"KapacitorConfigAPI"
]
}
}
}'创建新的 InfluxDB Enterprise 角色
使用以下 InfluxDB Enterprise 元 API 的请求方法和端点创建新的 InfluxDB Enterprise 角色
POST /role提供以下内容
- InfluxDB Enterprise 元 URL:主 InfluxDB Enterprise 元节点的 URL
- 基本身份验证:InfluxDB Enterprise 用户名和密码
- 请求正文:具有以下字段的 JSON 对象
- action:create
- role:具有以下字段的 JSON 对象
- name:角色名称
curl --request POST https://172.17.0.2:8091/role \
--user "admin:changeit" \
--data '{
"action":"create",
"user": {
"name":"kapacitor",
}
}' 授予新角色 Kapacitor 权限
使用以下 InfluxDB Enterprise 元 API 的请求方法和端点向新角色授予与 Kapacitor 相关的权限
POST /role提供以下内容
- InfluxDB Enterprise 元 URL:主 InfluxDB Enterprise 元节点的 URL
- 基本身份验证:InfluxDB Enterprise 用户名和密码
- 请求正文:具有以下字段的 JSON 对象
- action:add-permissions
- role:具有以下字段的 JSON 对象
- name:角色名称
- permissions:具有以下字段的 JSON 对象: -"":要添加的权限列表
$ curl --request POST https://172.17.0.2:8091/user \
--user "username:password" \
--data '{
"action": "add-permissions",
"role":{
"name": "kapacitor",
"permissions": {
"":[
"KapacitorAPI",
"KapacitorConfigAPI"
]
}
}
}'创建新的 InfluxDB Enterprise 用户
使用以下 InfluxDB Enterprise 元 API 的请求方法和端点创建新的 InfluxDB Enterprise 用户
POST /user提供以下内容
- InfluxDB Enterprise 元 URL:主 InfluxDB Enterprise 元节点的 URL
- 基本身份验证:InfluxDB Enterprise 用户名和密码
- 请求正文:具有以下字段的 JSON 对象
- action:create
- user:具有以下字段的 JSON 对象
- name:用户名
- password:密码
curl --request POST https://172.17.0.2:8091/user \
--user "admin:changeit" \
--data '{
"action":"create",
"user": {
"name":"johndoe",
"password":"pa5sw0Rd"
}
}' 将用户分配给新角色
使用以下 InfluxDB Enterprise 元 API 的请求方法和端点将 InfluxDB Enterprise 用户分配给新角色
POST /role提供以下内容
- 基本身份验证:InfluxDB Enterprise 用户名和密码
- 请求正文:具有以下字段的 JSON 对象
- action:add-users
- role:具有以下字段的 JSON 对象
- name:角色名称
- users:要添加的用户列表
curl --request POST https://172.17.0.2:8091/role \
--user "username:password" \
--data '{
"action": "add-users",
"role": {
"name": "example-role",
"users": [
"johndoe"
]
}
}'启用和配置 Kapacitor 身份验证
在您的 kapacitor.conf 中或通过环境变量启用和配置与身份验证相关的 Kapacitor 配置选项
[http]
# ...
auth-enabled = true
[auth]
enabled = true
cache-expiration = "1h"
bcrypt-cost = 4
meta-addr = " 172.17.0.2:8091"
meta-username = "example-influxdb-username"
meta-password = "example-influxdb-password"
meta-use-tls = true
meta-ca = "/path/to/cert.ca"
meta-cert = "/path/to/cert.cert"
meta-key = "/path/to/cert.key"
meta-insecure-skip-verify = false
# ...export KAPACITOR_HTTP_AUTH_ENABLED=true
export KAPACITOR_AUTH_ENABLED=true
export KAPACITOR_AUTH_CACHE_EXPIRATION=1h
export KAPACITOR_AUTH_BCRYPT_COST=4
export KAPACITOR_AUTH_META_ADDR=172.17.0.2:8091
export KAPACITOR_AUTH_META_USERNAME=example-username
export KAPACITOR_AUTH_META_PASSWORD=example-password
export KAPACITOR_AUTH_META_USE-tls=true
export KAPACITOR_AUTH_META_CA=/path/to/cert.ca
export KAPACITOR_AUTH_META_CERT=/path/to/cert.cert
export KAPACITOR_AUTH_META_KEY=/path/to/cert.key
export KAPACITOR_AUTH_META_INSECURE_SKIP_VERIFY=false使用 Kapacitor 进行身份验证
启用身份验证后,Kapacitor 要求所有 API 请求都提供有效的用户凭据。
使用 Kapacitor CLI 进行身份验证
要在使用 kapacitor CLI 时使用 Kapacitor 进行身份验证,请在 Kapacitor -url 中提供您的用户名和密码
# Syntax
kapacitor -url http://<username>:<password>@localhost:9092
# Example
kapacitor -url http://admin:Pa5sw0Rd@localhost:9092使用 Kapacitor API 进行身份验证
要直接使用 Kapacitor API 进行身份验证,请使用基本身份验证来提供您的用户名和密码。
# Syntax
curl --request GET https://:9092/kapacitor/v1/tasks \
-u "<username>:<password>"
# Example
curl --request GET https://:9092/kapacitor/v1/tasks \
-u "johndoe:Pa5sw0Rd" 此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 Kapacitor 和本文档提供反馈和错误报告。要获取支持,请使用以下资源: