Skip to content

InfluxDB 用户管理

用户创建与配置

创建本地用户

使用 influx CLI 创建本地用户:

bash
# 创建具有所有权限的管理员用户
influx user create -n admin -p password123 -o myorg -r all

# 创建普通用户
influx user create -n user1 -p password123 -o myorg

配置文件中的用户设置

influxdb.conf 中配置用户认证相关参数:

txt
[http]
  # 启用认证
  auth-enabled = true
  # 启用 TLS
  https-enabled = true
  https-certificate = "/etc/influxdb/ssl/influxdb.crt"
  https-private-key = "/etc/influxdb/ssl/influxdb.key"

查看用户列表

bash
influx user list -o myorg

用户权限管理

权限类型

InfluxDB 支持以下权限类型:

  • read:只读权限
  • write:写入权限
  • all:读写权限
  • admin:管理员权限

授予权限

bash
# 授予用户对特定桶的读权限
influx auth create -u user1 -o myorg -r read -b mybucket

# 授予用户对特定桶的写权限
influx auth create -u user1 -o myorg -r write -b mybucket

# 授予用户对特定桶的读写权限
influx auth create -u user1 -o myorg -r all -b mybucket

查看用户权限

bash
# 查看用户的所有权限
influx auth list -u user1 -o myorg

# 查看特定权限详情
influx auth get --id <auth-id>

撤销权限

bash
# 撤销特定权限
influx auth delete --id <auth-id>

角色管理

创建角色

bash
# 创建角色
influx role create -n read-only -o myorg

# 创建管理员角色
influx role create -n admin-role -o myorg

为角色分配权限

bash
# 为角色分配对特定桶的读权限
influx auth create -r read -b mybucket -o myorg --role read-only

# 为角色分配对特定桶的读写权限
influx auth create -r all -b mybucket -o myorg --role admin-role

将角色分配给用户

bash
# 将角色分配给用户
influx user add --id <user-id> --role <role-id> -o myorg

# 查看用户的角色
influx user get --id <user-id> -o myorg

移除用户角色

bash
# 移除用户角色
influx user remove --id <user-id> --role <role-id> -o myorg

外部认证集成

LDAP 认证配置

influxdb.conf 中配置 LDAP 认证:

txt
[auth]
  type = ldap
  ldap-enabled = true
  ldap-url = "ldap://ldap.example.com:389"
  ldap-bind-dn = "cn=admin,dc=example,dc=com"
  ldap-bind-password = "adminpassword"
  ldap-user-search-base-dn = "ou=users,dc=example,dc=com"
  ldap-user-search-filter = "(uid=%s)"
  ldap-group-search-base-dn = "ou=groups,dc=example,dc=com"
  ldap-group-search-filter = "(memberUid=%s)"
  ldap-group-mapping = "cn=influx-admins,ou=groups,dc=example,dc=com=admin"

OAUTH 2.0 认证

InfluxDB 企业版支持 OAUTH 2.0 认证,配置示例:

txt
[http]
  auth-type = oauth2
  oauth2-enabled = true
  oauth2-client-id = "client-id"
  oauth2-client-secret = "client-secret"
  oauth2-redirect-uri = "https://influxdb.example.com/oauth2/callback"
  oauth2-scopes = "openid profile email"
  oauth2-auth-url = "https://auth.example.com/authorize"
  oauth2-token-url = "https://auth.example.com/token"
  oauth2-user-info-url = "https://auth.example.com/userinfo"

用户密码管理

修改用户密码

bash
# 修改用户密码
influx user password -n user1 -p newpassword123 -o myorg

密码策略配置

influxdb.conf 中配置密码策略:

txt
[auth]
  # 密码最小长度
  password-min-length = 8
  # 密码必须包含数字
  password-require-digit = true
  # 密码必须包含字母
  password-require-letter = true
  # 密码必须包含特殊字符
  password-require-special = true
  # 密码必须包含大写字母
  password-require-upper = true
  # 密码必须包含小写字母
  password-require-lower = true
  # 密码过期时间(天)
  password-expiry = 90
  # 密码历史记录长度
  password-history = 5

用户活动监控

查看用户活动日志

InfluxDB 日志中记录了用户活动,可通过以下方式查看:

bash
# 查看 InfluxDB 日志
tail -f /var/log/influxdb/influxd.log | grep -i user

审计日志配置

启用审计日志记录用户操作:

txt
[audit]
  enabled = true
  log-path = "/var/log/influxdb/audit.log"
  rotation-interval = "24h"
  rotation-count = 7

用户管理最佳实践

  1. 遵循最小权限原则:只授予用户完成工作所需的最小权限
  2. 定期审计用户权限:每季度审查一次用户权限,移除不再需要的权限
  3. 使用角色管理:通过角色统一管理权限,简化权限分配和回收
  4. 启用强密码策略:配置复杂密码要求,定期更换密码
  5. 启用审计日志:记录所有用户操作,便于安全审计和故障排查
  6. 使用外部认证:对于企业环境,建议集成 LDAP 或 OAUTH 2.0
  7. 定期清理 inactive 用户:移除长期不活跃的用户账号
  8. 启用 TLS 加密:确保用户认证信息在传输过程中加密

常见问题(FAQ)

Q1: 如何重置管理员密码?

A1: 如果忘记了管理员密码,可以通过以下步骤重置:

  1. 停止 InfluxDB 服务
  2. 编辑 influxdb.conf,将 auth-enabled 设置为 false
  3. 启动 InfluxDB 服务
  4. 使用 influx user password 命令重置密码
  5. 停止 InfluxDB 服务,恢复 auth-enabledtrue
  6. 重新启动 InfluxDB 服务

Q2: 如何创建只读用户?

A2: 使用以下命令创建只读用户:

bash
# 创建用户
influx user create -n readonly -p password123 -o myorg
# 授予只读权限
influx auth create -u readonly -o myorg -r read -b mybucket

Q3: 如何查看所有用户?

A3: 使用 influx user list 命令查看所有用户:

bash
influx user list -o myorg

Q4: 如何删除用户?

A4: 使用 influx user delete 命令删除用户:

bash
influx user delete -n user1 -o myorg

Q5: LDAP 认证失败如何排查?

A5: 排查步骤:

  1. 检查 LDAP 服务器是否可达
  2. 验证 LDAP bind DN 和密码是否正确
  3. 检查用户搜索过滤器是否正确
  4. 查看 InfluxDB 日志中的错误信息
  5. 使用 ldapsearch 命令测试 LDAP 连接

Q6: 如何配置基于角色的访问控制?

A6: 配置步骤:

  1. 创建角色
  2. 为角色分配权限
  3. 将角色分配给用户
  4. 定期审查角色权限

Q7: 如何限制用户只能访问特定时间段的数据?

A7: InfluxDB 支持基于时间的权限控制,可以通过以下方式实现:

  1. 使用连续查询(CQ)将数据归档到不同的桶
  2. 为用户分配对特定桶的访问权限
  3. 使用保留策略(RP)管理数据生命周期

Q8: 如何监控用户查询活动?

A8: 可以通过以下方式监控用户查询活动:

  1. 启用慢查询日志
  2. 配置审计日志
  3. 使用 InfluxDB 内置监控指标
  4. 集成外部监控工具如 Grafana

Q9: 如何实现用户会话管理?

A9: InfluxDB 支持会话管理,可通过以下配置调整:

txt
[http]
  auth-session-expiry = "24h"
  auth-session-renewal = "12h"

Q10: 如何迁移用户数据到新的 InfluxDB 实例?

A10: 迁移步骤:

  1. 使用 influx export 命令导出用户数据
  2. 在新实例上使用 influx import 命令导入用户数据
  3. 验证用户权限和角色是否正确
  4. 更新客户端连接配置