存储空间和权限管理 存储空间和权限有关系吗
何是表空间
Tablespace,即表空间,用于将逻辑空间映射到物理存储空间。它 一个目录,里面存储的是它所包含的数据库的各种物理文件。 每个表空间可以对应多个Database。
Database,即数据库,用于管理各类数据对象,各数据库间相互隔离。数据库管理的对象可分布在多个Tablespace 上。
与其它数据库不同,vastbase表空间是基于文件 体系的,实际上就是文件 体系的目录。一个表空间可以存储多个数据库的对象; 一个数据库的对象也可以存储于多个表空间。 数据库与表空间是多对多的关系。
通过使用表空间,数据库管理员可以控制数据库存储空间布局,这样做主要有两个方面的好处: 空间管理 性能提升
初始化完成后,默认会创建两个表空间:
表空间pg_default是用来存储 体系目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。 表空间pg_global用来存放 体系字典表
创建表空间 CREATE TABLESPACE tablespace_name [OWINER user_name ] RELATIVE LOCATION directory [ MAXSIZE space_size ][with_option_clause];
参数说明: tablespace_name表空间名。不能和其它表空间重名,普通表空间不能以pg为开头。
OWNER,只有 体系管理员可以创建表空间,可以通过OWNER子句把表空间所有权限赋予其他非管理员用户。
LOCATION,指定表空间路径, 体系管理员需有读写权限,且目录为空。
RELATIVE,使用相对路径
MAXSIZE,指定表空间最大值,支持的单位: K/M/G/T/P
工具oid2name
oid2name 一个协助 体系管理员检查被Vastbase使用的文件结构的工具程序,oid2name连接到一个目标数据库 并且抽取OID、文件结点或者表名信息。
User:用户,是独立于数据库的。当超级用户登录—个数据库创建用户时,会在该数据库下创建一个同名sche 。 Role 与其他数据库不同,Vastbase的role就是没有登录权限的user。命令create user实际上就是create role的同义词。
sche ,又叫namespace,是数据库对象的 ,每个数据库对象都属于—个sche 。 sche 默认会在当前数据库中随着用户的创建而被同步创建。
用户权限介绍
数据库对象创建后,进行对象创建的用户就是该对象的所有者。 为使其他用户能够使用对象,必须向用户或包含该用户的角色授予必要的权限。
Vastbase支持 下面内容的权限: SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES.CREATE、CONNECT、EXECUTE和USAGE。 不同的权限与不同的对象类型关联。
撤消已经授予的权限:REVOKE命令。 对象所有者的权限(例如ALTER、DROP、GRANT和REVOKE)是隐式的,无法授予或撤消。即只要拥有对象就可以执行对象所有者的这些隐式权限。
体系表和 体系视图要么只对 体系管理员可见,要么对所有用户可见。标识了需要 体系管理员权限的 体系表和视图只有 体系管理员可以查询。
数据库提供对象隔离的特性,对象隔离特性开启时,用户只能查看有权限访问的对象(表、视图、字段函数), 体系管理员不受影响。
REVOKE用于撤销一个或多个角色的权限。
非对象所有者尝试在对象上REVOKE权限,命令按照 下面内容 制度执行: 如果授权用户没有该对象上的权限,则命令立即失败。 如果授权用户有部分权限,则只撤销那些有授权选项的权限。 如果授权用户没有授权选项,REVOKE ALL PRIVILEGES形式将发出一个错误信息,而对于其他形式的命令而言,如果是命令中指定名称的权限没有相应的授权选项,该命令将发出一个警告。 不允许对表分区进布REVOKE操作,对分区表进行REVOKE操作会引起告警。
行级访问控制
行级访问控制特性 将数据库访问控制准确到数据表行级别,使数据库达到行级访问控制的能力.不同用户执行一样的sql查询操作,读取到的 结局是不同的
用户可以在数据表创建行访问控制(行级安全)策略,该策略是指针对特定数据库用户、特定sql操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Level Security策略,在查询优化阶段将满足条件的表达式,按照属性(许可性的、限制的)、类型,通过和或或方式拼接,应用到执行 规划上。
行级访问控制的目的是控制表中行级数据可见性,通过在数据表上预定义过滤器,在查询优化阶段将满足条件的表达式应用到执行 规划上,影响最终的执行 结局.当前受影响的sql语句包括选择、更新、删除。
三权分立
Vastbase安装后的默认情况下,未开启三权分立,数据库 体系管理员具有与对象所有者一样的权限。也就是说对象创建后,默认只有对象所有者或者 体系管理员可以查询、修改和销毁对象,以及通过GRANT命令将对象的权限授予其他用户。 在实际业务管理中,为了避免 体系管理员拥有过度聚焦的权利带来高风险,可以设置三权分立。将 体系管理员的部分权限分立给安全管理员和审计管理员,形成 体系管理员、安全管理员和审计管理员三权分立。 三权分立后, 体系管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力。即不再拥有创建角色和用户的权限,并不再拥有查看和维护数据库审计日志的权限。 三权分立后, 体系管理员只会对自己作为所有者的对象有权限。 初始用户的权限不受三权分立设置影响。因此提议仅将此初始用户作为DBA管理用途,而非业务应用。