文档文档

设置 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 https://127.0.0.1:9092/kapacitor/v1/tasks \
  -u "<username>:<password>" 

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

此页对您有帮助吗?

感谢您的反馈!


Flux 的未来

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

阅读更多

InfluxDB 3 开源现已公开发布 Alpha 版本

InfluxDB 3 开源现在可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版本的一部分。

InfluxDB 3 Core 是我们的新开源产品。它是用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何入门的更多信息,请查看