文档文档

设置 InfluxDB Enterprise 授权

使用存储和管理在 InfluxDB Enterprise 中的基于用户的授权来验证对 Kapacitor HTTP API 的请求。

身份验证的工作原理

使用 InfluxDB Enterprise 授权对 Kapacitor 进行身份验证的过程涉及企业 TICK stack 的三个组件

  1. Kapacitor 解析 API 请求中提供的用户凭据。

  2. Kapacitor 检查用户名和密码当前是否与本地 Kapacitor 缓存中存储的任何用户详细信息匹配。

  3. 如果用户详细信息在缓存中,请跳至步骤 7。
    如果用户详细信息不在缓存中,Kapacitor 将凭据发送到 InfluxDB Enterprise meta API 端点。

  4. InfluxDB Enterprise 元服务器检查凭据是否有效,如果有效,则将用户详细信息 JSON 文档返回给 Kapacitor。

  5. Kapacitor 检查用户详细信息文档以获取正确的权限。

  6. Kapacitor 缓存用户详细信息。

  7. 如果用户具有正确的权限,Kapacitor 完成请求。
    如果用户没有正确的权限,Kapacitor 中止事务并返回带有响应正文的 403 错误

    {"error":"user <USER> does not have \"read\" privilege for API endpoint \"/kapacitor/v1/tasks\""}
    

创建具有 Kapacitor 权限的 InfluxDB Enterprise 用户或角色

使用 InfluxDB Enterprise meta API 创建具有 Kapacitor 权限的用户,或创建具有 Kapacitor 权限的角色并将用户分配给该角色。

以下示例使用 InfluxDB Enterprise meta API 来管理用户和角色,但您也可以使用 Chronograf 来管理用户和角色

要与 Kapacitor 交互,用户或角色必须具有以下一个或两个权限

  • KapacitorAPI:授予通过 Kapacitor API 执行 CRUD 操作的权限。
  • KapacitorConfigAPI:授予通过 API 配置 Kapacitor 的权限。
  1. 创建新的 InfluxDB Enterprise 用户
  2. 向新用户授予 Kapacitor 权限

创建新的 InfluxDB Enterprise 用户

使用以下 InfluxDB Enterprise meta API 的请求方法和端点来创建新的 InfluxDB Enterprise 用户

POST /user

提供以下内容

  • InfluxDB Enterprise meta 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 meta API 的请求方法和端点来向新用户授予与 Kapacitor 相关的权限

POST /user

提供以下内容

  • InfluxDB Enterprise meta 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"
        ]
      }
    }
  }'
  1. 创建新的 InfluxDB Enterprise 角色
  2. 向新角色授予 Kapacitor 权限
  3. 创建新的 InfluxDB Enterprise 用户
  4. 将用户分配给新角色

创建新的 InfluxDB Enterprise 角色

使用以下 InfluxDB Enterprise meta API 的请求方法和端点来创建新的 InfluxDB Enterprise 角色

POST /role

提供以下内容

  • InfluxDB Enterprise meta 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 meta API 的请求方法和端点来向新角色授予与 Kapacitor 相关的权限

POST /role

提供以下内容

  • InfluxDB Enterprise meta 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 meta API 的请求方法和端点来创建新的 InfluxDB Enterprise 用户

POST /user

提供以下内容

  • InfluxDB Enterprise meta 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 meta 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 http://localhost:9092/kapacitor/v1/tasks \
  -u "<username>:<password>" 

# Example
curl --request GET http://localhost:9092/kapacitor/v1/tasks \
  -u "johndoe:Pa5sw0Rd" 

此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、最近数据引擎,可实时收集和处理数据,并将其持久保存到本地磁盘或对象存储。InfluxDB 3 Enterprise 以 Core 的基础为构建,增加了高可用性、读取副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看