Logo
权限管理

权限管理 #

集群生态工具的权限 #

SphereEx-Boot 的权限 #

SphereEx-Boot 无权限控制。

SphereEx-Console 的权限 #

角色权限说明

角色权限作用域操作说明
超级管理员全部权限系统管理员、用户、集群Console 用户管理用户名称:admin,console内置,登录后可修改密码
系统管理员全部权限用户、集群Console 用户管理由超级管理员创建
普通用户指定集群的权限集群Console 用户管理由超级管理员或系统管理员创建

SphereEx-Console 访问组件的权限

组件/资源说明
主机ssh登录权限,安装目录有
数据库在 SphereEx-Console 中使用监控中心监控 db 需要在 db 所在的主机安装监控插件,监控插件访问数据库需要额外分配用户。创建用户参考:create user ‘[mysql_monitor_user_name]'@'[监控插件部署的IP]’ identified by ‘[password]’ [with max_user_connections N];grant process,replication client,select on . to ‘[mysql_monitor_user_name]'@'[监控插件部署的IP]';flush privileges;
治理中心
监控中心
日志中心

功能列表

功能说明
新建用户在 SphereEx-Console 平台中添加用户
修改密码修改集群信息
权限管理管理集群参数
删除删除 SphereEx-Console 平台中的用户
  • 新建用户

适用场景

创建 SphereEx-Console 管理用户。

注意事项

拥有超级管理员或系统管理员权限。

操作步骤

  1. 登录 SphereEx-Console。
  2. 点击 首页右上角头像->用户管理 进入用户列表。
  3. 点击右上角 添加用户,进入添加用户页面。
  4. 填写信息,具体参数见下表。
字段数据来源选填/必填数据存储长度限制说明
用户用户输入必填console mysql存储32用户列表校验唯一性
密码用户输入必填console mysql存储6-16位数字 字母 下划线,
确认密码用户输入必填console mysql存储
角色下拉选择必填console mysql存储系统管理员
集群权限下拉选择选填console mysql存储【角色】为【普通管理员】时出现
可选集群无权限的集群列表选填console mysql存储
已选集群已有权限的集群列表选填console mysql存储
  1. 点击 确定,完成用户添加。
  • 修改密码

适用场景

修改 SphereEx-Console 的用户密码。

注意事项

如下为不同角色的用户可修改密码的范围。

角色可修改的范围
超级管理员自身、系统管理员、普通管理员
系统管理员自身、普通管理员
普通管理员自身

操作步骤

  1. 登录 SphereEx-Console。
  2. 点击首页右上角头像->用户管理 进入用户列表。
  3. 点击操作列 修改密码 按钮,进入修改密码页面。
  4. 填写信息,具体参数见下表。
字段数据来源选填/必填数据存储长度限制元件说明
用户自动填充必填console mysql存储32文本框不可编辑
新密码用户输入必填console mysql存储6-16位文本框数字 字母 下划线,
确认密码用户输入必填console mysql存储文本框与新密码一致
  1. 点击 确定,完成用户添加。
  • 权限管理

适用场景

修改 SphereEx-Console 的用户密码

注意事项

管理普通用户的集群权限,角色不能修改,用户权限被修改后,需要重新登录才能刷新权限。

操作步骤

  1. 登录 SphereEx-Console。
  2. 点击 首页右上角头像->用户管理 进入用户列表。
  3. 点击操作列 权限管理 按钮,进入权限管理页面。
  4. 填写信息,具体参数见下表。
字段数据来源选填/必填长度限制说明
用户用户输入必填32用户列表校验唯一性
集群权限下拉选择选填【角色】为【普通管理员】时出现
可选集群无权限的集群列表选填
已选集群已有权限的集群列表选填
  1. 点击 确定,完成权限调整。
  • 删除

适用场景

删除系统管理员或普通管理员。

注意事项

删除用户,如下为不同角色的用户可删除用户的范围:

角色可删除的用户范围
超级管理员系统管理员、普通管理员
系统管理员普通管理员

操作步骤

  1. 登录 SphereEx-Console。
  2. 点击 首页右上角头像->用户管理 进入用户列表。
  3. 点击操作列 删除 按钮。
  4. 提示框中点击 确定,完成用户的删除。

集群组件的权限 #

访问组件的权限:

组件名称组件本身的权限集群访问使用组件的权限SphereEx-Console访问组件的权限监控插件访问组件
主机ssh登录权限,安装目有读写权限ssh登录权限,安装目有读写权限
数据库依据用户使用底层db的权限依据用户使用底层db的权限创建用户参考: create user ‘[mysql_monitor_user_name]'@'[监控插件部署的IP]’ identified by ‘[password]’ [with max_user_connections N];
治理中心
监控中心
日志中心

集群权限 #

集群权限管理,即计算节点的权限管理。

角色职能作用域操作说明
超级用户 (root)内置用户,最高权限集群DistSQL- 内置用户,不可删除,可修改口令。修改后写入ZK,不回写本地文件(优先ZK)
- 第一次使用本地文件启动,明文有风险
普通用户/角色对象级权限逻辑库DistSQL在逻辑库中限制对象的增伤改查权限

权限分级 #

DistSQL 权限的分级与标准数据库权限类似,同样拥有全局权限、库级对象权限、表级对象权限。目前 DistSQL 不存在列级操作,因此权限分级中也没有列级权限。

DistSQL 权限的授权项相较于标准的数据库权限种类更多。DistSQL 权限授权项由 操作 + 操作对象 组成,其组合方式如下。

授权项SELECTINSERTUPDATEDELETECREATEDROPALTERINDEXCREATE_USERSUPER
全局权限✔️✔️✔️✔️✔️✔️✔️✔️✔️✔️
对象权限/库✔️✔️✔️✔️✔️✔️✔️✔️//
对象权限/表✔️✔️✔️✔️✔️✔️✔️✔️//
对象权限/列✔️✔️✔️///////
授权项CREATEALTERDROPSHOW
RESOURCE✔️✔️✔️✔️
SHARDING✔️✔️✔️✔️
READWRITE_SPLITTING✔️✔️✔️✔️
ENCRYPT✔️✔️✔️✔️
DB_DISCOVERY✔️✔️✔️✔️
SHADOW✔️✔️✔️✔️
SINGLE_TABLE✔️✔️✔️✔️
  • 全局权限

全局权限,是指用户获得的授权不区分目标对象,用户可对任意的逻辑库、逻辑表执行对应操作。

例如,以下指令将全局的 INSERT、SELECT、UPDATE 和 DELETE 权限赋予用户 ‘sharding’@'%',则该用户能够对任何逻辑库中的表执行 DML 操作。

-- 以下两个语句等效
GRANT DIST INSERT,SELECT,UPDATE,DELETE TO 'sharding'@'%';
GRANT DIST INSERT,SELECT,UPDATE,DELETE TO sharding;

例如,以下指令将全局的 SHOW SHARDING 权限赋予用户 ‘sharding’@'%',则该用户能够对任何逻辑库中的分片规则执行 SHOW 操作。

GRANT DIST SHOW SHARDING TO 'sharding'@'%';

另外,因为 DistSQL 授权项较多,对于一次授予多个授权项时,可以使用语法类型作为授权项。例如,以下指令将所有操作对象全局的 SHOW 权限赋予用户 ‘sharding’@'%',则该用户能够对任何逻辑库中的任何操作对象执行 SHOW 操作。

GRANT DIST RQL SHARDING TO 'sharding'@'%';

需要注意的是,全局权限包含两项特殊权限:CREATE_USER 和 SUPER。

其中,获得 CREATE_USER 授权的用户,可执行以下操作:

操作说明
CREATE USER创建用户
ALTER USER修改用户
DROP USER删除用户
CREATE ROLE创建角色
DROP ROLE删除角色
REVOKE ALL PRIVILEGES撤销用户或角色的全部授权

SUPER 代表的是数据库系统的最高权限,默认情况下,ShardingSphere 启动前配置的初始用户拥有 SUPER 授权。

  • 对象权限

对象权限,指授予的权限受作用范围限制,用户不可在授权范围之外执行相应操作。

对象权限的作用范围可以是所有逻辑库,也可以指定单个或多个逻辑库及库中的表和列。

例如,以下指令将逻辑库 sharding_db 中 t_order 表的所有权限授予用户 ‘sharding’@'%',此后该用户可以对 sharding_db.t_order 表执行操作。但若无额外授权,该用户不能操作 sharding_db 中的其它表。

GRANT DIST ALL ON sharding_db.t_order TO sharding;

例如,以下指令将逻辑库 sharding_db 中分片规则 t_order 的创建和修改权限授予用户 ‘sharding’@'%',此后该用户可以对 sharding_db.t_order 规则执行创建和修改操作。但若无额外授权,该用户不能操作 sharding_db 中的其它规则。

GRANT DIST CREATE SHARDING, ALTER SHARDING ON sharding_db.t_order TO 'sharding'@'%';

DistSQL 清单 #

描述语法示例
创建用户CREATE DIST USER ‘user’@‘host’ IDENTIFIED BY ‘password’;CREATE DIST USER ‘sharding’@'%’ IDENTIFIED BY ‘123456’;
修改用户密码ALTER DIST USER ‘user’@‘host’ IDENTIFIED BY ‘password’;ALTER DIST USER ‘sharding’@'%’ IDENTIFIED BY ‘sharding’;
删除用户DROP DIST USER ‘user’@‘host’;DROP DIST USER ‘sharding’@'%';
创建角色CREATE DIST ROLE role;CREATE DIST ROLE admin;
删除角色DROP DIST ROLE role;DROP DIST ROLE admin;
赋予用户角色GRANT DIST role TO ‘user’@‘host’;GRANT DIST admin TO ‘sharding’@'%';
取消用户角色REVOKE DIST role FROM ‘user’@‘host’;REVOKE DIST admin FROM ‘sharding’@'%';
赋予全局权限GRANT DIST SELECT TP ‘user’@‘host’;
赋予权限(库级)GRANT DIST privileges ON schema.* to ‘user’@‘host’;GRANT DIST CREATE SHARDING, SHOW SHARDING ON sharding_db.* TO ‘sharding’@'%';
赋予权限(所有对象)GRANT DIST privileges ON . to ‘user’@‘host’;GRANT DIST SELECT, INSERT ON . TO ‘sharding’@'%';
赋予权限(库级)GRANT DIST privileges ON schema.* to ‘user’@‘host’;GRANT DIST SELECT, INSERT ON sharding_db.* TO ‘sharding’@'%';
赋予权限(表级)GRANT DIST privileges ON schema.table to ‘user’@‘host’;GRANT DIST SELECT, INSERT ON sharding_db.t_order TO ‘sharding’@'%';
赋予权限(列级)GRANT DIST privileges ON schema.table to ‘user’@‘host’;GRANT DIST SELECT (order_id), SELECT (user_id, status) ON sharding_db. t_order TO ‘sharding’@'%';
撤销所有权限REVOKE DIST ALL FROM ‘user’@‘host’;REVOKE DIST ALL FROM ‘sharding’@'%';
撤销全局权限REVOKE DIST privileges FROM ‘user’@‘host’;REVOKE DIST SELECT FROM ‘sharding’@'%';
撤销权限(所有对象)REVOKE DIST privileges ON . FROM ‘user’@‘host’;REVOKE DIST SELECT ON . FROM ‘sharding’@'%';
撤销权限(库级)REVOKE DIST privileges ON schema.* FROM ‘user’@‘host’;REVOKE DIST INSERT ON sharding_db.* FROM ‘sharding’@'%';
撤销权限(表级)REVOKE DIST privileges ON schema.table FROM ‘user’@‘host’;REVOKE DIST INSERT ON sharding_db.t_order FROM ‘sharding’@'%';
撤销权限(列级)REVOKE DIST privileges ON schema.table FROM ‘user’@‘host’;REVOKE DIST SELECT (order_id), SELECT (user_id, status) ON sharding_db.t_order FROM ‘sharding’@'%';
查看用户权限SHOW DIST GRANTS FOR ‘user’@‘host’;SHOW DIST GRANTS FOR ‘sharding’@'%';
刷新授权FLUSH DIST PRIVILEGES;FLUSH DIST PRIVILEGES;

说明:

  • 为用户和角色「授权/撤销授权」的语法一致,将 ‘user’@‘host’ 替换为 role 即可;
  • REVOKE DIST ALL 会同时撤销赋予给用户的所有角色。

权限控制的配置 #

用于配置登录计算节点的初始用户,和存储节点数据授权。

  • 配置示例
rules:
  - !AUTHORITY
    users:
      - user: root@%
        password: root
    privilege:
      type: SphereEx:PERMITTED

用户管理 #

  • 初始用户管理

初始用户由管理员在 DBPlusEngine 启动前指定。

  • 普通用户管理

创建用户

CREATE DIST USER 语句用于创建带有指定密码的新用户。

在 DBPlusEngine 中,用户是由用户名和用户名所连接主机的组合。

示例:

  • 创建一个名为 ‘sharding’ 的用户,密码为 ‘123456’,'%’ 表示不限制登录主机。
CREATE DIST USER 'sharding'@'%' IDENTIFIED BY '123456';
  • 创建一个只能在 127.0.0.1 登录的用户。
CREATE DIST USER 'sharding'@'127.0.0.1' IDENTIFIED BY '123456';

修改用户

ALTER DIST USER 语句用于修改已有用户,目前只支持修改密码。

示例:

  • 将 ‘sharding’@'%’ 的用户的密码改为 ‘sharding’。
ALTER DIST USER 'sharding'@'%' IDENTIFIED BY 'sharding';

删除用户

DROP DIST USER 语句用于删除用户。

示例:

  • 将 ‘sharding’@'%’ 的用户从系统中移除。
DROP DIST USER 'sharding'@'%'

查看用户列表

SHOW DIST USERS 语句用于查看用户列表。

示例:

  • 查看全部用户,仅查询授权主机和用户名,不展示用户密码。
SHOW DIST USERS;

角色管理 #

  • 创建角色

CREATE DIST ROLE 语句用于创建角色。

示例:

创建一个名为 ‘dml_only’ 的角色。

CREATE DIST ROLE dml_only;
  • 删除角色

DROP DIST ROLE 语句用于删除角色。

示例:

将 ‘dml_only’ 的用户从系统中移除。

DROP DIST ROLE dml_only
  • 查看角色列表

SHOW DIST ROLES 语句用于查看角色列表。

示例:

查看已创建的全部角色名称。

SHOW DIST ROLES;

权限管理 #

  • 授权 GRANT DIST privileges 语句用于向用户或角色授权。 示例:
    • 将全局 SELECT 权限授予用户 ‘sharding’@'%'。
GRANT DIST SELECT TO 'sharding'@'%';
  • 将逻辑库 sharding_db 的 SELECT 和 INSERT 权限授予用户 ‘sharding’@'%'。
GRANT DIST SELECT, INSERT ON sharding_db.* TO 'sharding'@'%';
  • 将逻辑表 sharding_db.t_order 的 SELECT 和 INSERT 权限授予用户 ‘sharding’@'%'。
  GRANT DIST SELECT, INSERT ON sharding_db.t_order TO 'sharding'@'%';
  • 将逻辑表 sharding_db.t_order 中指定列的 SELECT 权限授予用户 ‘sharding’@'%'。
GRANT DIST SELECT (order_id), SELECT (user_id, status) ON sharding_db.t_order TO 'sharding'@'%';
  • 将全局 SELECT、INSERT、UPDATE 和 DELETE 权限赋予给角色 dml_only。
GRANT DIST INSERT,SELECT,UPDATE,DELETE TO dml_only;
  • 将角色 dml_only 赋予给用户 ‘sharding’@'%'。
GRANT DIST dml_only TO 'sharding'@'%';
  • 撤销授权

REVOKE DIST privileges 语句用于撤销对用户或角色的授权。

示例:

  • 撤销用户 ‘sharding’@'%’ 的全局 SELECT 授权。
REVOKE DIST SELECT FROM 'sharding'@'%';
  • 撤销用户 ‘sharding’@'%’ 在逻辑库 sharding_db 的 SELECT 和 INSERT 授权。
REVOKE DIST SELECT, INSERT ON sharding_db.* FROM 'sharding'@'%';
  • 撤销用户 ‘sharding’@'%’ 在逻辑辑表 sharding_db.t_order 的 SELECT 和 INSERT 授权。
REVOKE DIST SELECT, INSERT ON sharding_db.t_order FROM 'sharding'@'%';
  • 撤销用户 ‘sharding’@'%’ 在逻辑表 sharding_db.t_order 中指定列的 SELECT 授权。
REVOKE DIST SELECT (order_id), SELECT (user_id, status) ON sharding_db.t_order FROM 'sharding'@'%';
  • 撤销角色 dml_only 的全局 SELECT、INSERT、UPDATE 和 DELETE 授权。
REVOKE DIST INSERT,SELECT,UPDATE,DELETE FROM dml_only;
  • 撤销赋予用户 ‘sharding’@'%’ 的 dml_only 角色。
REVOKE DIST dml_only FROM 'sharding'@'%';