权限管理 #
集群生态工具的权限 #
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 管理用户。
注意事项
拥有超级管理员或系统管理员权限。
操作步骤
- 登录 SphereEx-Console。
- 点击 首页右上角头像->用户管理 进入用户列表。
- 点击右上角 添加用户,进入添加用户页面。
- 填写信息,具体参数见下表。
字段 | 数据来源 | 选填/必填 | 数据存储 | 长度限制 | 说明 |
---|---|---|---|---|---|
用户 | 用户输入 | 必填 | console mysql存储 | 32 | 用户列表校验唯一性 |
密码 | 用户输入 | 必填 | console mysql存储 | 6-16位 | 数字 字母 下划线, |
确认密码 | 用户输入 | 必填 | console mysql存储 | ||
角色 | 下拉选择 | 必填 | console mysql存储 | 系统管理员 | |
集群权限 | 下拉选择 | 选填 | console mysql存储 | 【角色】为【普通管理员】时出现 | |
可选集群 | 无权限的集群列表 | 选填 | console mysql存储 | ||
已选集群 | 已有权限的集群列表 | 选填 | console mysql存储 |
- 点击 确定,完成用户添加。
- 修改密码
适用场景
修改 SphereEx-Console 的用户密码。
注意事项
如下为不同角色的用户可修改密码的范围。
角色 | 可修改的范围 |
---|---|
超级管理员 | 自身、系统管理员、普通管理员 |
系统管理员 | 自身、普通管理员 |
普通管理员 | 自身 |
操作步骤
- 登录 SphereEx-Console。
- 点击首页右上角头像->用户管理 进入用户列表。
- 点击操作列 修改密码 按钮,进入修改密码页面。
- 填写信息,具体参数见下表。
字段 | 数据来源 | 选填/必填 | 数据存储 | 长度限制 | 元件 | 说明 |
---|---|---|---|---|---|---|
用户 | 自动填充 | 必填 | console mysql存储 | 32 | 文本框 | 不可编辑 |
新密码 | 用户输入 | 必填 | console mysql存储 | 6-16位 | 文本框 | 数字 字母 下划线, |
确认密码 | 用户输入 | 必填 | console mysql存储 | 文本框 | 与新密码一致 |
- 点击 确定,完成用户添加。
- 权限管理
适用场景
修改 SphereEx-Console 的用户密码
注意事项
管理普通用户的集群权限,角色不能修改,用户权限被修改后,需要重新登录才能刷新权限。
操作步骤
- 登录 SphereEx-Console。
- 点击 首页右上角头像->用户管理 进入用户列表。
- 点击操作列 权限管理 按钮,进入权限管理页面。
- 填写信息,具体参数见下表。
字段 | 数据来源 | 选填/必填 | 长度限制 | 说明 |
---|---|---|---|---|
用户 | 用户输入 | 必填 | 32 | 用户列表校验唯一性 |
集群权限 | 下拉选择 | 选填 | 【角色】为【普通管理员】时出现 | |
可选集群 | 无权限的集群列表 | 选填 | ||
已选集群 | 已有权限的集群列表 | 选填 |
- 点击 确定,完成权限调整。
- 删除
适用场景
删除系统管理员或普通管理员。
注意事项
删除用户,如下为不同角色的用户可删除用户的范围:
角色 | 可删除的用户范围 |
---|---|
超级管理员 | 系统管理员、普通管理员 |
系统管理员 | 普通管理员 |
操作步骤
- 登录 SphereEx-Console。
- 点击 首页右上角头像->用户管理 进入用户列表。
- 点击操作列 删除 按钮。
- 提示框中点击 确定,完成用户的删除。
集群组件的权限 #
访问组件的权限:
组件名称 | 组件本身的权限 | 集群访问使用组件的权限 | 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 权限授权项由 操作 + 操作对象 组成,其组合方式如下。
授权项 | SELECT | INSERT | UPDATE | DELETE | CREATE | DROP | ALTER | INDEX | CREATE_USER | SUPER |
---|---|---|---|---|---|---|---|---|---|---|
全局权限 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
对象权限/库 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | / | / |
对象权限/表 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | / | / |
对象权限/列 | ✔️ | ✔️ | ✔️ | / | / | / | / | / | / | / |
授权项 | CREATE | ALTER | DROP | SHOW |
---|---|---|---|---|
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'@'%';