管理用户权限
本文介绍如何在 StarRocks 中管理用户、角色和权限。
StarRocks 使用基于角色的访问控制(RBAC)和基于身份的访问控制(IBAC)来管理 StarRocks 集群中的权限,使集群管理员能够轻松地在不同的粒度级别上限制集群内的权限。
在 StarRocks 集群中,可以将权限授予用户或角色。角色是可以根据需要分配给集群中的用户或其他角色的一组权限。用户可以被授予一个或多个角色,这些角色决定了他们对不同对象的权限。
查看权限和角色信息
具有系统定义角色 user_admin 的用户可以查看 StarRocks 集群中的所有用户和角色信息。
查看权限信息
您可以使用 SHOW GRANTS 查看授予用户或角色的权限。
-
查看当前用户的权限。
SHOW GRANTS;注意
任何用户都可以查看自己的权限,而无需任何权限。
-
查看特定用户的权限。
以下示例显示了用户
jack的权限:SHOW GRANTS FOR jack@'172.10.1.10'; -
查看特定角色的权限。
以下示例显示了角色
example_role的权限:SHOW GRANTS FOR ROLE example_role;
查看角色
您可以使用 SHOW ROLES 查看 StarRocks 集群中的所有角色。
SHOW ROLES;
管理角色
具有系统定义角色 user_admin 的用户可以在 StarRocks 中创建、授予、撤销或删除角色。
创建角色
您可以使用 CREATE ROLE 创建角色。默认情况下,用户最多可以拥有 64 个角色。您可以使用 FE 动态参数 privilege_max_total_roles_per_user 调整此设置。角色最多可以有 16 个继承级别。您可以使用 FE 动态参数 privilege_max_role_depth 调整此设置。
以下示例创建了角色 example_role:
CREATE ROLE example_role;
授予角色
您可以使用 GRANT 将角色授予用户或其他角色。
-
将角色授予用户。
以下示例将角色
example_role授予用户jack:GRANT example_role TO USER jack@'172.10.1.10'; -
将角色授予另一个角色。
以下示例将角色
example_role授予角色test_role:GRANT example_role TO ROLE test_role;
更改用户的默认角色
用户的默认角色在连接到 StarRocks 时会自动激活。有关如何在连接后为用户启用所有(默认和授予的)角色的说明,请参见 启用所有角色。
您可以使用 SET DEFAULT ROLE 或 ALTER USER 设置用户的默认角色。
以下两个示例将 jack 的默认角色设置为 db1_admin。请注意,db1_admin 必须已分配给 jack。
-
使用 SET DEFAULT ROLE 设置默认角色:
SET DEFAULT ROLE 'db1_admin' TO jack@'172.10.1.10'; -
使用 ALTER USER 设置默认角色:
ALTER USER jack@'172.10.1.10' DEFAULT ROLE 'db1_admin';
撤销角色
您可以使用 REVOKE 从用户或其他角色撤销角色。
注意
您不能从用户中撤销系统定义的默认角色
PUBLIC。
-
从用户中撤销角色。
以下示例从用户
jack中撤销角色example_role:REVOKE example_role FROM USER jack@'172.10.1.10'; -
从另一个角色中撤销角色。
以下示例从角色
test_role中撤销角色example_role:REVOKE example_role FROM ROLE test_role;
删除角色
您可以使用 DROP ROLE 删除角色。
以下示例删除了角色 example_role:
DROP ROLE example_role;
注意
系统定义的角色不能被删除。
启用所有角色
用户的默认角色是在用户连接到 StarRocks 集群时自动激活的角色。
如果您希望在 StarRocks 用户连接到 StarRocks 集群时启用所有角色(默认和授予的角色),可以执行以下操作。
此操作需要系统权限 OPERATE。
SET GLOBAL activate_all_roles_on_login = TRUE;
您还可以使用 SET ROLE 激活分配给您的角色。例如,用户 jack@'172.10.1.10' 拥有角色 db_admin 和 user_admin,但它们不是用户的默认角色,并且在用户连接到 StarRocks 时不会自动激活。如果 jack@'172.10.1.10' 需要激活 db_admin 和 user_admin,他可以运行 SET ROLE db_admin, user_admin;。请注意,SET ROLE 会覆盖原始角色。如果您想启用所有角色,请运行 SET ROLE ALL。
管理权限
具有系统定义角色 user_admin 的用户可以在 StarRocks 中授予或撤销权限。
授予权限
您可以使用 GRANT 将权限授予用户或角色。
-
将权限授予用户。
以下示例将表
sr_member上的 SELECT 权限授予用户jack,并允许jack将此权限授予其他用户或角色(通过在 SQL 中指定 WITH GRANT OPTION):GRANT SELECT ON TABLE sr_member TO USER jack@'172.10.1.10' WITH GRANT OPTION; -
将权限授予角色。
以下示例将表
sr_member上的 SELECT 权限授予角色example_role:GRANT SELECT ON TABLE sr_member TO ROLE example_role;
撤销权限
您可以使用 REVOKE 从用户或角色中撤销权限。
-
从用户中撤销权限。
以下示例从用户
jack中撤销表sr_member上的 SELECT 权限,并禁止jack将此权限授予其他用户或角色:REVOKE SELECT ON TABLE sr_member FROM USER jack@'172.10.1.10'; -
从角色中撤销权限。
以下示例从角色
example_role中撤销表sr_member上的 SELECT 权限:REVOKE SELECT ON TABLE sr_member FROM ROLE example_role;