跳到主要内容
版本:2.4.x

权限管理

本章节介绍 CnosDB 中设置和管理身份认证授权。

提示

若 CnosDB 在公开访问的端点上运行,强烈建议启用认证,否则数据将对任何未经身份验证的用户公开。

CnosDB 中有初始的租户(cnosdb)和用户(root),如果需要开启身份认证,需要打开配置:

修改配置文件中的 auth_enabled=true ,并启动实例。

此时,通过cnosdb-cli --user root --password登录并输入默认密码。root用户的默认密码是'root',可以通过meta的配置文件修改。 在开启认证的情况下,must_change_password为true的用户需要修改密码才能正常进行其他操作,root默认为true,其他用户默认为false。

为用户 root 设置新密码。

ALTER USER root SET PASSWORD='CnosDB#!';

修改 must_change_password=true,要求下次登录时必须修改密码才能正常进行其他操作。

ALTER USER user1 SET must_change_password=true;

admin 权限在 CnosDB 中分为两种:初始 admin 权限,被授予的 admin 权限。

  • 拥有 admin 权限的用户可以将 admin 权限授予其他用户。
  • 系统表 cluster_schema.users 中 is_admin=true,表示拥有 admin 权限。
  • 系统表 cluster_schema.users 中的 user_options 的 granted_admin=true,表示被授予的 admin 权限
  • 拥有 admin 权限的人可以回收其他人被赋予的 admin 权限
  • 初始的 admin 权限不支持被回收(即 root 用户拥有的 admin 权限)

为用户 dev 授予 admin 权限。

alter user dev set granted_admin = true;

撤销 dev 的 admin权限。

alter user dev set granted_admin = false;

赋予用户一个角色

为角色添加权限请参考 GRANT

ALTER TENANT cnosdb ADD USER user_a AS rrr;

此时用户 user_a 就被赋予了租户 cnsodbrrr 角色。

移除用户身上的角色

ALTER TENANT cnosdb REMOVE USER user_a;

此时用户 user_a 就失去了租户 cnosdb 下角色 rrr,将不再能访问租户中的任何信息。

租户是 CnosDB 中共享相同数据库实例的独立组织或个体,每个租户拥有自己的数据和资源,与其他租户之间相互隔离。

用户是可以连接到数据库的账户,每个用户具有特定的权限,这些权限来源于租户下的角色。同一个账户可以在不同的组织下担任不同的职务,这映射的即是 CnosDB 中 租户,角色,和用户之间的关系。

角色是一组命名的权限集合,可以分配给用户。通过使用角色,可以方便地为用户分配预定义的权限。角色可以简化权限管理。

关于权限的更多操作,请参考 数据控制语言