内置用户管理
GreptimeDB 企业版提供了由 Metasrv 支持的内置用户与权限系统。它支持 基于角色的访问控制 (RBAC) 和细粒度访问控制列表 (ACL),用于保障数据 安全与隔离。
主要特性
- 内置用户管理:用户账号和权限存储在 Metasrv 中,确保整个集群中的 管理保持一致。
- 基于角色的访问控制 (RBAC):为用户分配全局权限,控制
SELECT、INSERT、CREATE TABLE等操作。 - 细粒度 ACL:使用精确匹配或正则表达式控制特定数据库内的表级访问。
- 动态管理:通过 HTTP API 动态管理用户,无需重启服务器。
- 初始账号导入:支持在启动时从密码文件导入初始账号。
配置说明
本节介绍如何启用企业版用户 Provider 并执行基础的用户管理操作。
1. 启用用户 Provider
要使用企业版用户与权限系统,需要在接收客户端请求的组件中启用
greptime_ee_user_provider。在单机模式中,请在 standalone server 上配置;
在集群模式中,请在每个 frontend 节点上配置。
用户 Provider 的取值如下:
greptime_ee_user_provider:<path-to-password-file>
密码文件是可选的,仅用于初始账号导入。若要在不导入用户的情况下启用
Provider,请使用 greptime_ee_user_provider:。配置解析器要求保留末尾的
冒号 :。
Standalone 命令行:
./greptime standalone start \
--user-provider=greptime_ee_user_provider:/path/to/passwords.txt
Standalone 配置文件:
user_provider = "greptime_ee_user_provider:/path/to/passwords.txt"
./greptime standalone start \
-c /path/to/standalone.toml
Frontend 命令行:
./greptime frontend start \
--metasrv-addrs=127.0.0.1:3002 \
--user-provider=greptime_ee_user_provider:/path/to/passwords.txt
Frontend 配置文件:
user_provider = "greptime_ee_user_provider:/path/to/passwords.txt"
[meta_client]
metasrv_addrs = ["127.0.0.1:3002"]
然后使用配置文件启动 frontend:
./greptime frontend start \
-c /path/to/frontend.toml
2. 初始账号导入(可选)
密码文件使用以下格式:
<username>[:<role>]=<password>
可用角色:
admin:拥有完整权限,包括用户管理权限。readonly(或ro):只读访问权限 (SqlSelect)。writeonly(或wo):只写访问权限,例如SqlInsert、TableCreate。readwrite(或rw):同时拥有读写访问权限(默认)。
passwords.txt 示例:
# username[:role]=password
superuser:admin=strong_password
alice:ro=alice_pwd
bob:rw=bob_pwd
默认情况下,导入的用户会获得 public 数据库的完整访问权限
(AclType::All)。
导入的账号只会创建一次。如果后续启动时发现某个导入用户已经存在,则会跳过 该用户。之后你可以通过 UI 修改这些导入的用户。