权限管理
本章节介绍 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
就被赋予了租户 cnsodb
的 rrr
角色。
移除用户身上的角色
ALTER TENANT cnosdb REMOVE USER user_a;
此时用户 user_a
就失去了租户 cnosdb
下角色 rrr
,将不再能访问租户中的任何信息。
租户是 CnosDB 中共享相同数据库实例的独立组织或个体,每个租户拥有自己的数据和资源,与其他租户之间相互隔离。
用户是可以连接到数据库的账户,每个用户具有特定的权限,这些权限来源于租户下的角色。同一个账户可以在不同的组织下担任不同的职务,这映射的即是 CnosDB 中 租户,角色,和用户之间的关系。
角色是一组命名的权限集合,可以分配给用户。通过使用角色,可以方便地为用户分配预定义的权限。角色可以简化权限管理。
关于权限的更多操作,请参考 数据控制语言