codecamp

OceanBase 安全管理

安全管理对数据库至关重要,OceanBase 有专门的安全管理策略用来保证数据库数据安全和资源安全。OceanBase 数据库的安全管理策略主要包括资源隔离和权限控制:通过资源隔离限制可以访问到的数据,隔离保证资源安全;对于共享数据,通过权限设置访问权限,从而保证数据安全。

账户权限管理

您可在 RAM 访问控制中,设置用户权限。

  1. 登录 RAM 访问控制台后,单击左侧导航栏的 权限策略管理,单击 创建权限策略OceanBase创建权限策略

  2. 在 新建自定义权限策略 页面,填写 策略名称,选择 脚本配置,为子账号创建权限策略。 OceanBase新建自定义权限设置

  3. 创建完成后,单击左侧导航栏 用户,搜索需要增加权限的用户名称。

  4. 进入用户详情页面后,单击 权限管理

  5. 在 个人权限 页签下,单击 添加权限。

  6. 在右侧弹出框中,单击 自定义策略,选择刚刚创建的权限策略,单击 确定

租户权限管理

  • 系统租户和普通租户

    OceanBase 支持多租户架构,租户是数据库对象管理和资源管理的基础,即租户即是各类数据库对象的容器,又是资源(CPU、Memory、IO 等)的容器。

    OceanBase新建自定义权限设置

    多租户架构优势如下:

    • 在数据安全方面,不允许跨租户的数据访问,确保用户的数据资产没有泄露的风险。

    • 在资源使用方面,租户独占其资源配额。通过多租户架构,将数据和资源分离,这样就保证了数据资源在不同租户之间的安全性。

    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 的安全。


OceanBase 解决预检查问题
OceanBase 查询历史事件
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }