OceanBase 安全管理
安全管理对数据库至关重要,OceanBase 有专门的安全管理策略用来保证数据库数据安全和资源安全。OceanBase 数据库的安全管理策略主要包括资源隔离和权限控制:通过资源隔离限制可以访问到的数据,隔离保证资源安全;对于共享数据,通过权限设置访问权限,从而保证数据安全。
账户权限管理
您可在 RAM 访问控制中,设置用户权限。
-
登录 RAM 访问控制台后,单击左侧导航栏的 权限策略管理,单击 创建权限策略。
-
在 新建自定义权限策略 页面,填写 策略名称,选择 脚本配置,为子账号创建权限策略。
-
创建完成后,单击左侧导航栏 用户,搜索需要增加权限的用户名称。
-
进入用户详情页面后,单击 权限管理。
-
在 个人权限 页签下,单击 添加权限。
-
在右侧弹出框中,单击 自定义策略,选择刚刚创建的权限策略,单击 确定。
租户权限管理
-
系统租户和普通租户
OceanBase 支持多租户架构,租户是数据库对象管理和资源管理的基础,即租户即是各类数据库对象的容器,又是资源(CPU、Memory、IO 等)的容器。
多租户架构优势如下:
-
在数据安全方面,不允许跨租户的数据访问,确保用户的数据资产没有泄露的风险。
-
在资源使用方面,租户独占其资源配额。通过多租户架构,将数据和资源分离,这样就保证了数据资源在不同租户之间的安全性。
OceanBase 系统中包含两大类租户:系统租户和普通租户。系统租户是系统内置的,用于保存 OceanBase 正常运行的一些资源,进行集群管理操作和存储系统表。只有系统租户下的 root 用户能够增加和删除普通租户,修改系统配置项和进行每日合并等一些重要功能操作。
-
-
租户管理
在 OceanBase 中,不同租户之间的数据对象是完全隔离的,对象名字空间的最顶层就是租户。OceanBase 的租户权限管理有如下特点:
-
任何租户(不论是系统租户还是普通租户)下的用户不能跨租户访问其他普通租户下的用户数据。
-
不支持跨租户对用户进行授权。例如:A 租户下的管理员用户 u1,不能将 A 租户下的表 t1 的读写权限授予 B 租户下的任何用户。
-
只有系统租户下的管理员用户才有集群管理权限,执行系统管理操作,如创建/删除普通租户、设置系统配置参数、开启每日合并操作。
-
普通租户下的用户及权限和 MySQL 实例类似,既有具备租户内管理员权限的特权用户,也有普通用户。权限的授予及回收也和单个 MySQL 实例相同。
-
在跨租户数据访问方面有一个小小的例外,那就是普通租户下的用户,如果他具备访问系统视图的权限,实际上他是可以访问到系统租户下的系统表数据的,因为所有元信息都存放在系统租户下的系统表里。
-
用户权限管理
数据库用户权限管理包括新建用户、删除用户、修改密码、修改用户名、锁定用户、用户授权和撤销授权等。OceanBase 中用户分为两类:系统租户下的用户,一般租户下的用户。创建用户时,如果 Session 当前租户为系统租户,则新建的用户为系统租户用户;反之为一般租户下的用户。
用户名称在租户内是唯一的,不同租户下的用户可以同名。用户名@租户名
在系统全局唯一。为区别系统租户和一般租户下的用户,建议对系统租户下的用户名称使用特定前缀。系统租户和普通租户都有一个内置用户 root,系统租户的 root 为系统管理员,普通租户的 root 为租户管理员。
一般租户下的用户只能拥有该租户下对象的访问权限,权限设计和 MySQL 兼容;系统租户下的用户可以被授予跨租户的对象访问权限。当前系统租户下的用户不允许访问一般租户下的用户表数据。
用户在登录 OceanBase 系统时需指定唯一的租户名。对于系统租户下的用户,在登录后,可以切换当前访问的租户;对于一般租户下的用户,不能切换到其他租户。 对于权限,可以分成以下几个层级:
-
全局层级:适用于所有的数据库。使用 GRANT ALL ON *.* 授予全局权限。
-
数据库层级:适用于一个给定数据库中的所有目标。使用 GRANT ALL ON db_name.* 授予数据库权限。
-
表层级:表权限适用于一个给定表中的所有列。使用 GRANT ALL ON db_name.tbl_name 授予表权限。
权限信息如下:
权限 |
说明 |
---|---|
ALL PRIVILEGES |
除 GRANT OPTION 以外所有权限 |
ALTER |
ALTER TABLE 的权限 |
CREATE |
CREATE TABLE 的权限 |
CREATE USER |
CREATE USER,DROP USER,RENAME USER 和 REVOKE ALL PRIVILEGES 的权限 |
CREATE TABLEGROUP |
全局 CREATE TABLEGROUP 的权限 |
DELETE |
DELETE 的权限 |
DROP |
DROP 的权限 |
GRANT OPTION |
GRANT OPTION 的权限 |
INSERT |
INSERT 的权限 |
SELECT |
SELECT 的权限 |
UPDATE |
UPDATE 的权限 |
SUPER |
SET GLOBAL 修改全局系统参数的权限 |
SHOW DATABASES |
全局 SHOW DATABASES 的权限 |
INDEX |
CREATE INDEX, DROP INDEX 的权限 |
CREATE VIEW |
创建、删除视图的权限 |
SHOW VIEW |
SHOW CREATE VIEW 权限 |
总结
OceanBase 中,每个租户对应一个 MySQL 实例,OceanBase 的用户权限管理做到了和 MySQL 的兼容,操作和 MySQL 都是一样的。在用户的基础上,OceanBase 增加了多租户机制,因此也引入了租户权限管理,规定了不同租户之间数据和资源的使用权限。通过租户权限管理和用户权限管理保证了 OceanBase 的安全。