1.概述
KingbaseES 安全版本支持将管理特权三权分立为三个管理员,并在初始化的时候创建数据库管理员、安全管理员和审计管理员。 KingbaseES 中,由于三权分立的约束,数据库管理员,安全管理员,审计管理员各自维护自己权限许可范围内的用户,不同目的的用户应由相应的管理员创建。 通过加载可选的 sso_update_user 插件可以满足某些特殊场景的三权分立需求,对管理员和安全员的权限做出进一步的划分。
2.三权分立特性实际操作
(1)初始化的时候创建数据库管理员、安全管理员和审计管理员。
--默认初始化后
TEST=# select * from sys_user;
(2)数据库管理员创建新用户
TEST=# create user test1 with password '123456';
CREATE ROLE
(3)数据库管理员修改新用户
TEST=# alter user test1 with password '654321';
ALTER ROLE
(4)数据库管理员删除用户
TEST=# drop user test1
DROP ROLE
(5)插件加强支持
- 加载插件 修改 kingbase.conf 文件中 shared_preload_libraries 参数后重启数据库,创建插件并切换用户为安全管理员 sso,打开插件开关。
参数配置 sso_update_user.sso_update_user_enable 默认为关闭状态。
卸载插件 修改 kingbase.conf 文件中 shared_preload_libraries 参数后重启数据库。
- 参数开关开启后限制
1)CREATE ROLE/USER: 系统管理员用户在创建普通用户时不可指定密码等选项。
2)ALTER ROLE/USER: 只有 sso 和普通用户本身可以更改普通用户的密码。
3)ALTER ROLE/USER: 系统管理员只能修改超级用户,或超级用户权限选项。
(6)sso和sao无法使用DDL,即无法创建,删除,修改对象和用户。
3.使用经验及注意事项
- CREATE sao 和 sso 不可以创建用户及普通对象
- ALTER sao 和 sso 不可以修改对象定义
3.DROP sao 和 sso 不可以删除对象
- ALTER USER/ROLE sao 和 sso 只可以修改自己的密码
- GRANT/REVOKE
a. sao 不可以进行授权操作
b. 不可以为 sao 和 sso 授权和撤权
c. 不允许其他用户成为 sao 和 sso 的成员
d. 不允许 sao 和 sso 成为其他用户的成员
- DROP USER/ROLE 依赖于是否有 CREATE ROLE 的权限,并且 sao 和 sso 不可以被删除。
SHOW sao 和 sso 允许使用 SHOW 命令
ALTER SYSTEM SET
a. 系统管理员和普通用户不可以修改审计和安全的参数
b. 审计员只可以修改审计参数
c. 安全员只可以修改安全参数
- SET/RESET sao 和 sso 不允许使用 SET/RESET 命令
4.与竞品差异点
差异点 | Oracle | Kingbase | MySQL |
---|---|---|---|
1 | 用户管理分为sys system(管理员)\scott(普通用户) | 系统管理员(system)\安全管理员(sso)\审计管理员(sao) | 普通用户\超级管理员(root)) |
2 | 管理员负责所有权限,创建普通用户时为其分配权限。 | 三权分立 :系统管理员(system) --主要负责执行数据库日常管理的各种操作和自主存取控制。安全管理员(sso) -- 主要负责强制访问规则的制定和管理,监督审计管理员和普通用户的操作,不能创建和操作普通对象。审计管理员(sao)--主要负责数据库的审计,监督系统管理员和安全管理员的操作,不能创建和操作普通对象。 | 管理员负责所有权限,可以为普通用户分配权限 |
3 | 管理员账户可以处理安全,审计,管理等所有操作。 | 需要切换对应管理员进行不同的管理操作 | 管理员账户可以处理安全,审计,管理等所有操作。 |
5.价值评价
KingbaseES 安全版本支持将管理特权三权分立为三个管理员,并在初始化的时候创建数据库管理员、安全管理 员和审计管理员。
KingbaseES 中,由于三权分立的约束,数据库管理员,安全管理员,审计管理员各自维护自己权限许可范围内的用户,不同目的的用户应由相应的管理员创建,避免了权利过度集中的问题。
三权分立堵住了以前滥用数据库超级用户特权的安全漏洞,进一步提高了数据库的整体安全性。