权限分立
瀚高数据库支持”三权分立”的安全机制。数据库系统通过”三权分立”机制划分为三个相互独立且相互制约的管理员角色,分别是数据库管理员角色(sysdba_role)、数据库安全员角色(syssso_role)和数据库审计员角色(syssao_role)。对数据库系统权限实施分离,使系统中不存在超级用户和权限过高的角色/用户。用户权限按需分配,遵循最小化原则,从而降低安全隐患和风险。数据库管理员主要负责数据库系统的管理与维护;数据库安全员主要负责安全策略配置管理;数据库审计员的主要职责包括设置数据库用户操作行为的审计策略,以及对审计记录进行查询和分析。
数据库初始化完成后,系统会自动创建数据库管理员(默认为初始化时所使用的用户),自动创建数据库安全员(syssso)和数据库审计员(syssao)。另外,瀚高数据库允许有多个管理员账户同时存在,即允许某管理员用户将某管理员角色授予普通用户。安全用户的初始化属性如下:
| 用户名称 | 初始化属性 | 管理员角色 |
|---|---|---|
| highgo(实例级)(假设使用highgo进行初始化或license中指定初始化用户为highgo) | SUPERUSER CREATEROEL CREATEDB REPLICATION BYPASSRLS。 | 使用通用排序规则。sysdba_role(实例级) |
| syssso(实例级) | syssso_role(实例级) | |
| syssao(实例级) | syssao_role(实例级) |
注意
瀚高数据库管理系统V9.0.5之前的版本,本模块涉及的函数放在了public模式下;从瀚高数据库管理系统V9.0.5版本开始,将本模块涉及的函数均迁移到hg_security模式下。如果您在public模式下查询不到相关对象,请您指定hg_security模式再做查询。
权限分立开关
三权分立模块的开关se_feature.mode说明参见下表:
| 参数名称 | 参数类型 | 参数说明 | 修改 |
|---|---|---|---|
| se_feature.mode | bool | 三权分立功能的开关。默认为off | 未开启三权分立时,仅限超级用户修改;开启三权分立后仅限syssso_role成员用户修改 |
| se_feature.restricted_dba | bool | 受限DBA开关,默认为off,开启后表示对数据库管理员实施更严格的权限管控,详见2.4章节。 | 未开启三权分立时,仅限超级用户修改;开启三权分立后仅限syssso_role成员用户修改。仅在se_feature.mode开启时可修改。 |
上述2个参数可由安全管理员在不同层级(如实例级、库级和会话级)进行调整。具体而言,实例级的修改通过
ALTER SYSTEM SET xxx命令实现,而库级的修改则通过 ALTER DATABASE dbname
SET
xxx命令完成。需要注意的是,实例级的修改需要重启或重载数据库才能生效,而库级的修改则要求重新创建连接后才生效。对于会话级的修改,安全管理员可以通过执行函数set_backend_se_param(oid,
text, boolean) 为指定用户的OID修改其后台连接参数,并通过被修改连接调用
check_se_param_change() 函数接收更改结果,此过程无需断开连接。
会话级安全参数修改示例:
会话级修改三权开关的方式:
给当前登录用户为user1的会话开启三权开关:
查询当前user1用户的oid
highgo=> select current_user::regrole::oid; |
重新创建会话登录到syssso用户下修改三权开关:
highgo=>select |
再切换到user1用户登录的会话,接收参数修改:
highgo=>select hg_security.check_se_param_change();
权限分立功能关闭的情况下,数据库级修改安全参数示例:
库级修改三权开关的方式:
highgo(数据库初始化时的用户)用户登录:
[highgo@node1 bin]$ ./psql highgo highgo -p 5866 |
使用alter database命令修改安全参数:
highgo=# alter database highgo set se_feature.mode=on; |
重新创建会话连接生效。
权限分立功能关闭的情况下,实例级修改安全参数示例:
实例级修改三权开关的方式:
highgo(数据库初始化时的用户)用户登录:
[highgo@node1 bin]$ ./psql highgo highgo -p 5866 |
使用alter system命令修改安全参数:
highgo=# alter system set se_feature.mode=on; |
重启数据库参数生效。
三权分立功能开启后,所有安全角色由该角色的管理员admin,通过grant/revoke进行成员管理。同一用户无法拥有两种或以上的安全角色;管理员用户之间无法通过SET
ROLE、SET SESSION AUTHORIZATION的方式切换。
三权分立功能开启后,普通用户由拥有createrole属性的用户创建,
普通用户无法拥有superuser,createrole和createdb属性。superuser,createrole和createdb属性仅可在授权sysdba_role成员时自动添加到新成员用户中。
三权分立功能开启后,只有属于sysdba_role角色的成员用户的superuser
属性可以生效,即sysdba_role成员内的超级用户,三权分立功能开启以后,和系统管理员权限一致;sysdba_role成员外的超级用户,三权开启以后,作为普通用户处理;sysdba_role成员用户,自动赋予超级用户属性;移除时,自动移除超级用户属性。
管理员角色介绍
瀚高数据库新增了三个管理员角色,分别为数据库管理员角色(sysdba_role)、数据库安全员角色(syssso_role)和数据库审计员角色(syssao_role)。以下是各角色的职责与功能概述:
数据库管理员角色
每个数据库至少需要一位数据库管理员(DBA)来负责管理,该角色可以是一个人或一个团队。不同数据库系统的数据库管理员职责可能有所不同,但总体任务包括以下内容:
评估软硬件环境:确定数据库服务器所需的运行环境。
安装与升级服务:负责数据库服务的安装和版本升级。
数据库结构设计:规划数据库的整体架构。
性能监控与优化:实时监控数据库性能并进行优化。
备份与恢复计划:制定并实施数据备份及故障恢复策略。
数据库安全员角色
从数据安全的角度来看,大型数据库系统需要将权限分配给不同的角色,以实现职责分离,从而相互制约和监督,确保系统的整体安全性。数据库安全员的主要职责如下:
制定安全策略:通过配置安全策略,确认请求访问的用户或设备是否具有合法身份。通过验证用户提供的凭据(如用户名、密码、证书等),确保只有授权用户才能访问受保护的资源。
权限限制:安全管理员无法创建角色/用户,无CREATE DATABASE、CREATE
ROLE权限,他们的主要职责是设计和维护安全机制;
特殊权限:在某些特定模式下,安全管理员可能具备查看部分审计日志的权限,具体细节请参见”安全审计”章节。
数据库审计员角色
假设某小型在线支付平台的一名员工滥用数据库访问权限,私自查询并出售客户个人信息(如姓名、联系方式和银行卡信息)。由于缺乏安全审计机制,这种行为在初期未被发现,直到客户投诉资金异常流动后才引起注意。为避免类似问题的发生,可以通过以下方式加强安全管理:制定安全策略:由数据库安全员制定安全策略,限制DBA或其他用户的访问权限;设置审计策略:在系统建设初期,由安全审计员(syssao
或其创建的其他审计员)设置审计策略;分析审计记录:在需要时,安全审计员可以查看审计记录,及时发现并追踪非法操作。
结合案例可以看出,数据库审计员的主要职责包括:创建和管理审计员账户、配置审计策略,查看和分析审计记录,确保系统操作的合规性和透明性。
通过明确分工和职责分离,这三个角色共同保障了数据库的安全性、稳定性和可追溯性。
开启三权分立用户权限划分
| 对象名称 | 操作类型 | 系统管理员 | 安全管理员 | 审计管理员 | 普通用户 |
|---|---|---|---|---|---|
| 用户/角色 | create role/user | 1)可以创建用户/角色;2)创建用户/角色的属性无法包含superuser、createdb 、createrole等属性。特别说明:在三权开关关闭时授权出去的用户属性,三权开启后应按照安全角色的划分来判断是否生效3)in role/group子句以及role、admin、user子句后不能包含sysdba_role、syssso_role、syssao_role等安全角色或属于以上安全角色的成员。 | 无法执行 | 无法执行 | 无法执行 |
| alter role/user | 1)可修改自身密码。2)无法修改属于sysdba_role、syssso_role、syssao_role等安全角色的成员的属性。3)修改普通用户时无法设置superuser、createdb 、createrole等属性。 | 1)可修改自身密码,以及有效期限。2)可修改普通用户密码、可修改所有用户的有效期 | 1)可修改自身密码。 | 1)可修改自身密码。 | |
| drop role/user | 1)无法删除属于安全角色的成员。但是可以在撤销安全角色后删除2)可以删除普通用户/角色。 | 无法删除用户/角色。 | 无法删除用户/角色。 | 无法删除用户/角色。 | |
| grant/revoke role … to/from grantee | 1)当role为普通用户/角色,grantee为普通用户/角色时可执行授权/撤销。2)role 为syssso_role或 syssao_role成员时,无法执行,授权/撤销。3)当role 为 sysdba_role成员时有该角色admin属性的用户,可将 sysdba_role角色授权/撤销 给普通用户,但操作中不能包含admin option子句防止级联授权。4)授权sysdba_role角色时若grantee包含syssso_role或syssao_role的成员,则无法授权。 | 1)无法授权/撤销普通用户/角色。2)有admin属性的syssso_role成员,可将 syssso_role角色授权给普通用户。授权时无法授予admin option防止级联授权。3)有admin属性的syssso_role成员,可将 syssso_role角色从现有成员中撤销。4)授权syssso_role角色时若接受对象拥有其他成员,则无法授权。防止级联授权。 | 1)无法授权/撤销普通用户/角色。2)有admin属性的syssao_role成员,可将 syssao_role角色授权给普通用户。授权时无法授予admin option防止级联授权。3)有admin属性的syssao_role成员,可将 syssao_role角色从现有成员中撤销。4)授权sysao_role角色时若接受对象拥有其他成员,则无法授权。防止级联授权。 | 1)无法授权/撤销普通用户/角色。 | |
| 表空间 | create tablesapce … | 可以执行,但是带owner 子句owner 只能指定sysdba_role的成员,否则创建失败。 | 无法执行 | 无法执行 | 无法执行 |
| alter tablespace | 可以执行,但是指定owner 子句时若对象为sysdba_role成员外的用户;其余与原生PG一致。 | 无法执行 | 无法执行 | 无法执行 | |
| grant/revoke …on tablespace to/from grantee… | 当grantee 包含syssso_role或syssao_role成员用户时,无法执行赋权/回收;当grantee 只包含sysdba_role的成员或普通用户时可以执行赋权/回收,但是不能将with grant option属性给任何非sysdba_role成员用户 | 无法执行 | 无法执行 | 无法执行 | |
| drop tablespace | 对所有表空间权限有删除权限 | 无法执行 | 无法执行 | 无法执行 | |
| 数据库 | create database | 可创建属主为自己的数据库,带owner 属性创建时仅指定为owner sysdba_role成员。 | 无法执行 | 无法执行 | 无法执行 |
| alter database | 不能修改数据库属主为为sysdba_role成员外的用户。 | 无法执行 | 无法执行 | 无法执行 | |
| grant/revoke …on database to/from grantee… | 赋权/撤销的grantee 包含syssso_role和syssao_role成员时操作权限不能包含create权限;不能将with grant option属性给任何非属性给任何非sysdba_role成员用户;其他与原生PG一致 | 无法执行 | 无法执行 | 无法执行 | |
| drop database | 对所有数据库有删除权限 | 无法执行 | 无法执行 | 无法执行 | |
| 模式 | create schema | 可以创建,但包含authorization子句时只可以指定sysdba_role成员或为普通用户。 | 无权限 | 无权限 | 被赋权数据库权限后只可创建模式。 |
| alter schema | 只可修改属主为sysdba_role成员和普通用户的模式的属性,可以修改owner为sysdba_role成员及普通用户。 | 无权限 | 无权限 | 赋权数据库权限后只可修改属主为自己的模式的属性,不可以将属主修改为管理员用户或其他普通用户,特定普通用户除外。例如:u1组有两个成员u2、u3,则u1不可以将属主为自己的模式属主修改为u2;u2可以将属主为自己的模式属主修改为u1;但u2不可将属主为自己的模式属主修改为u3 | |
| grant/revoke …on schema to/from grantee … | 对于属主为sysdba_role成员的模式,可执行授权/撤销,其赋权/回收,当grantee是普通用户和sysdba_role的成员时不受限制,当grantee为syssso_role和syssao_role时不能包含create权限。对于属于syssso_role和syssao_role成员的模式,无法执行授权/撤销。对于数普通用户的模式,可执行授权/撤销,当grantee是普通用户和sysdba_role的成员时不受限制,当grantee为syssso_role和syssao_role时不能包含create权限。 | 无权限 | 无权限 | 可将属主为自己的模式的权限进行授权/撤销。当grantee是普通用户和sysdba_role的成员时不受限制,当grantee为syssso_role和syssao_role时不能包含create权限。 | |
| 使用模式 | 可使用属主为sysdba_role成员的模式,普通用户的模式被授权过的模式及public模式 | 可使用属主为自己的模式,被授权过的模式及public模式 | 可使用属主为自己的模式,被授权过的模式及public模式 | 可使用属主为自己的模式,被授权过的模式及public模式 | |
| drop schema | 可删除属主sysdba_role成员和普通用户的模式(public模式不可删除) | 无权限 | 无权限 | 只可删除属主为自己的模式,有其他用户创建的对象时可使用级联删除 | |
| 表 | create table | 只可在属主为自己的模式,被授权过的模式,其他sysdba_role成员的模式,普通用户的模式和public模式下创建表。 | 无权限 | 无权限 | 只可在属主为自己的模式、已授权的模式和public模式下创建表 |
| 查询及使用表 | 可查询、使用属主为自己的表,其他sysdba_role成员的表,普通用户的表,已授权的表 | 可查询、使用属主为自己的表,可查询、使用已授权的表 | 可查询、使用属主为自己的表,可查询、使用已授权的表 | 可以查询、使用属主为自己的及已被授权的表 | |
| alter table | 只可修改属主为sysdba_role成员和普通用户的表式的属性,可以将属主修改为sysdba_role成员及普通用户 | 无权限 | 无权限 | 只可修改属主为自己的表的属性,只可修改属主为特定普通用户,例如:u1组有两个成员u2、u3,则u1不可以将属主为自己的表属主修改为u2;u2可以将属主为自己的表属主修改为u1;但u2不可将属主为自己的表属主修改为u3。不可以将属主修改为管理员用户或其他普通用户 | |
| grant/revoke .. | 对属于sysdba_role成员的表可执行赋权/撤销,其赋权/撤销对象只能是sysdba_role成员和普通用户。对于属于syssso_role和syssao_role成员的表,无法执行授权/撤销。对普通用户的表,可执行授权/撤销,对象不能是syssso_role和syssao_role成员。 | 无权限 | 无权限 | 普通用户有权限将属主为自己的表给其他普通用户或sysdba_role成员用户执行授权/撤销。 | |
| drop table | 只可删除属主为sysdba_role成员的表和普通用户的表。 | 无权限 | 无权限 | 只可删除属主为自己的表 | |
| 索引 | create index | 只可在sysdba_role成员和普通用户的表上创建索引 | 无权限 | 无权限 | 只可在属主为自己的表上创建索引 |
| alter index | 只可修改sysdba_role成员和普通用户的索引 | 无权限 | 无权限 | 只可修改自己创建的索引 | |
| drop index | 只可删除sysdba_role成员和普通用户的索引 | 无权限 | 无权限 | 只可删除自己创建的索引 | |
| 视图 | create view | 只可在属主为自己的模式,sysdba_role成员的模式,被授权过的模式,普通用户的模式和public模式下创建视图 | 无权限 | 无权限 | 只可在属主为自己的模式、已授权的模式和public模式下创建视图 |
| alter view | 只可修改属主sysdba_role成员和普通用户的视图的属性,属主可以修改为sysdba_role成员和普通用户,不能修改为syssso_role成员syssao_role成员用户 | 无权限 | 无权限 | 参照表的修改规则 | |
| drop view | 只可删除属主为sysdba_role成员的视图和普通用户的视图。 | 无权限 | 无权限 | 只可删除属主为自己的视图 | |
| 序列 | create sequence | 只可在属主为自己的模式,sysdba_role成员的模式,被授权过的模式,普通用户的模式和public模式下创建序列 | 无权限 | 无权限 | 只可在属主为自己的模式、已授权的模式及public模式下创建序列 |
| alter sequence | 只可修改属主为sysdba_role成员和普通用户的序列的属性。属主可以修改为sysdba_role成员和普通用户,不能修改为syssso_role成员syssao_role成员用户 | 无权限 | 无权限 | 参照表的修改规则 | |
| grant/revoke… on sequence | 对属于sysdba_role成员的序列可执行赋权/撤销,其赋权/撤销对象只能是sysdba_role成员和普通用户。对于属于syssso_role和syssao_role成员的序列,无法执行授权/撤销。对普通用户的序列,可执行授权/撤销,对象不能是syssso_role和syssao_role成员。 | 无权限 | 无权限 | 普通用户有权限将属主为自己的序列对其他普通用户或sysdba_role成员用户执行授权/撤销 | |
| 使用及查询序列 | 可查询、使用属主为自己的序列,其他sysdba_role成员的序列,普通用户的序列,已授权的序列 | 无权限 | 无权限 | 只能使用及查询属主为自己及已授权的序列 | |
| 删除序列 | 只可删除属主为sysdba_role成员的序列和普通用户的序列。 | 无权限 | 无权限 | 只可删除属主为自己的序列 | |
| 函数/存储过程 | create function | 只可在属主为自己的模式,sysdba_role成员的模式,被授权过的模式,普通用户的模式和public模式下创建函数 | 无权限 | 无权限 | 只可在属主为自己的模式、已授权的模式及public模式下创建函数 |
| alter function | 只可修改属主为sysdba_role成员和普通用户的函数的属性,owner to属性只可修改为sysdba_role成员或普通用户 | 无权限 | 无权限 | 参照表的修改规则 | |
| grant/revoke | 对属于sysdba_role成员的函数可执行赋权/撤销,其赋权/撤销对象只能是sysdba_role成员和普通用户。对于属于syssso_role和syssao_role成员的函数,无法执行授权/撤销。对普通用户的函数,可执行授权/撤销,对象不能是syssso_role和syssao_role成员。 | 无权限 | 无权限 | 普通用户有权限将属主为自己的函数对其他普通用户或sysdba_role成员用户执行授权/撤销。 | |
| 调用函数 | 可调用属主为自己的函数,sysdba_role成员模式下的函数,普通用户的默认授权的public模式下的函数、系统模式下的函数,被显示授权的函数 | 只可调用属主为自己的函数和已授权的函数,public下的函数 | 只可调用属主为自己的函数和已授权的函数,public下的函数 | 只可调用属主为自己的函数和已授权的函数,public下的函数 | |
| drop function | 只可删除属主为sysdba_role成员和普通用户的函数 | 无权限 | 无权限 | 只可删除属主为自己的函数 |
开启三权分立和受限DBA用户权限划分
| 对象名称 | 操作类型 | 系统管理员 | 安全管理员 | 审计管理员 | 普通用户 |
|---|---|---|---|---|---|
| 用户/角色 | create role/user | 1)可以创建用户/角色;2)创建用户/角色的属性无法包含superuser、createdb 、createrole等属性。特别说明:在三权开关关闭时授权出去的用户属性,三权开启后应按照安全角色的划分来判断是否生效3)in role/group子句以及role、admin、user子句后不能包含sysdba_role、syssso_role、syssao_role等安全角色或属于以上安全角色的成员。 | 无法执行 | 无法执行 | 无法执行 |
| alter role/user | 1)可修改自身密码。2)无法修改属于sysdba_role、syssso_role、syssao_role等安全角色的成员的属性。3)修改普通用户时无法设置superuser、createdb 、createrole等属性。 | 1)可修改自身密码,以及有效期限。2)可修改普通用户密码、可修改所有用户的有效期 | 1)可修改自身密码。 | 1)可修改自身密码。 | |
| drop role/user | 1)无法删除属于安全角色的成员。但是可以在撤销安全角色后删除2)可以删除普通用户/角色。 | 无法删除用户/角色。 | 无法删除用户/角色。 | 无法删除用户/角色。 | |
| grant/revoke role … to/from grantee | 1)当role为普通用户/角色,grantee为普通用户/角色时可执行授权/撤销。2)role 为syssso_role或 syssao_role成员时,无法执行,授权/撤销。3)当role 为 sysdba_role成员时有该角色admin属性的用户,可将 sysdba_role角色授权/撤销 给普通用户,但操作中不能包含admin option子句防止级联授权。4)授权sysdba_role角色时若grantee包含syssso_role或syssao_role的成员,则无法授权。 | 1)无法授权/撤销普通用户/角色。2)有admin属性的syssso_role成员,可将 syssso_role角色授权给普通用户。授权时无法授予admin option防止级联授权。3)有admin属性的syssso_role成员,可将 syssso_role角色从现有成员中撤销。4)授权syssso_role角色时若接受对象拥有其他成员,则无法授权。防止级联授权。 | 1)无法授权/撤销普通用户/角色。2)有admin属性的syssao_role成员,可将 syssao_role角色授权给普通用户。授权时无法授予admin option防止级联授权。3)有admin属性的syssao_role成员,可将 syssao_role角色从现有成员中撤销。4)授权sysao_role角色时若接受对象拥有其他成员,则无法授权。防止级联授权。 | 1)无法授权/撤销普通用户/角色。 | |
| 表空间 | create tablesapce … | 可以执行,但是带owner 子句owner 只能指定sysdba_role的成员,否则创建失败。 | 无法执行 | 无法执行 | 无法执行 |
| alter tablespace | 可以执行,但是指定owner 子句时若对象为sysdba_role成员外的用户;其余与原生PG一致。 | 无法执行 | 无法执行 | 无法执行 | |
| grant/revoke …on tablespace to/from grantee… | 当grantee包含syssso_role或syssao_role成员用户时,无法执行赋权/回收;当grantee 只包含sysdba_role的成员或普通用户时可以执行赋权/回收,但是不能将with grant option属性给任何非sysdba_role成员用户 | 无法执行 | 无法执行 | 无法执行 | |
| drop tablespace | 对所有表空间权限有删除权限 | 无法执行 | 无法执行 | 无法执行 | |
| 数据库 | create database | 可创建属主为自己的数据库,带owner 属性创建时仅指定为owner sysdba_role成员。 | 无法执行 | 无法执行 | 无法执行 |
| alter database | 不能修改数据库属主为为sysdba_role成员外的用户。 | 无法执行 | 无法执行 | 无法执行 | |
| grant/revoke …on database to/from grantee… | 赋权/撤销的grantee 包含syssso_role和syssao_role成员时操作权限不能包含create权限;不能将with grant option属性给任何非属性给任何非sysdba_role成员用户;其他与原生PG一致 | 无法执行 | 无法执行 | 无法执行 | |
| drop database | 对所有数据库有删除权限 | 无法执行 | 无法执行 | 无法执行 | |
| 模式 | create schema | 可以创建,但包含authorization子句时只可以指定sysdba_role成员或为普通用户。 | 无权限 | 无权限 | 被赋权数据库权限后只可创建模式。 |
| alter schema | 只可修改属主为自己的模式的属性,可以修改owner为sysdba_role成员。 | 无权限 | 无权限 | 赋权数据库权限后只可修改属主为自己的模式的属性,不可以将属主修改为管理员用户或其他普通用户,特定普通用户除外。例如:u1组有两个成员u2、u3,则u1不可以将属主为自己的模式属主修改为u2;u2可以将属主为自己的模式属主修改为u1;但u2不可将属主为自己的模式属主修改为u3 | |
| grant/revoke …on schema to/from grantee … | 对于属主为自己的模式,当grantee为sysdba_role成员时授权/撤销不受任何限制;当grantee为syssso_role或syssao_role成员时不能包含create权限;当grantee为普通用户时,无法执行授权/撤销。对于属主为普通用户的模式,可执行授权/撤销,其赋权/回收grantee只能是普通用户。 | 无权限 | 无权限 | 可将属主为自己的模式的权限进行授权/撤销。当grantee是普通用户和sysdba_role的成员时不受限制,当grantee为syssso_role和syssao_role时不能包含create权限。 | |
| 使用模式 | 可使用属主为自己的模式,被授权过的模式及public模式 | 可使用属主为自己的模式,被授权过的模式及public模式 | 可使用属主为自己的模式,被授权过的模式及public模式 | 可使用属主为自己的模式,被授权过的模式及public模式 | |
| drop schema | 可删除属主为自己的模式(public模式不可删除) | 无权限 | 无权限 | 只可删除属主为自己的模式,有其他用户创建的对象时可使用级联删除 | |
| 表 | create table | 只可在自己拥有的模式,被授权过的模式,public模式下创建表。 | 无权限 | 无权限 | 只可在属主为自己的模式、已授权的模式和public模式下创建表 |
| 查询及使用表 | 可查询、使用属主为自己的表,可查询、使用已授权的表 | 可查询、使用属主为自己的表,可查询、使用已授权的表 | 可查询、使用属主为自己的表,可查询、使用已授权的表 | 可以查询、使用自己创建的及已被授权的表 | |
| alter table | 只可修改自己创建的表的属性,不可将自己的表的属主修改为sysdba_role成员外的其他用户。 | 无权限 | 无权限 | 只可修改自己表的属性,只可修改属主为特定普通用户,例如:u1组有两个成员u2、u3,则u1不可以将属主为自己的表属主修改为u2;u2可以将属主为自己的表属主修改为u1;但u2不可将属主为自己的表属主修改为u3。不可以将属主修改为管理员用户或其他普通用户 | |
| grant/revoke .. | 只能在自己的表上做赋权与回收,自己的表只能赋权给sysdba_role成员 | 无权限 | 无权限 | 普通用户有权限将属主为自己的表给其他普通用户或sysdba_role成员用户执行授权/撤销。 | |
| drop table | 只可删除属主为自己的表。 | 无权限 | 无权限 | 只可删除属主为自己的表 | |
| 索引 | create index | 只可在属主为自己的表上创建索引 | 无权限 | 无权限 | 只可在属主为自己的表上创建索引 |
| alter index | 只可修改自己创建的索引 | 无权限 | 无权限 | 只可修改自己创建的索引 | |
| drop index | 只可删除自己创建的索引 | 无权限 | 无权限 | 只可删除自己创建的索引 | |
| 视图 | create view | 只可在属主为自己的模式,被授权过的模式,和public模式下创建视图 | 无权限 | 无权限 | 只可在属主为自己的模式、已授权的模式和public模式下创建视图 |
| alter view | 只可修改属主为自己的视图的属性,属主只可以修改为sysdba_role成员, | 无权限 | 无权限 | 参照表的修改规则 | |
| drop view | 只可删除属主为自己的视图。 | 无权限 | 无权限 | 只可删除属主为自己的视图 | |
| 序列 | create sequence | 只可在属主为自己的模式,被授权过的模式,和public模式下创建序列 | 无权限 | 无权限 | 只可在属主为自己的模式、已授权的模式及public模式下创建序列 |
| alter sequence | 只可修改属主为自己的序列的属性。属主只可以修改为sysdba_role成员 | 无权限 | 无权限 | 参照表的修改规则 | |
| grant/revoke… on sequence | 只能在属主为自己的的序列上做赋权与回收,自己的序列只能赋权给sysdba_role成员 | 无权限 | 无权限 | 普通用户有权限将属主为自己的序列对其他普通用户或sysdba_role成员用户执行授权/撤销 | |
| 使用及查询序列 | 可查询、使用属主为自己的序列,已授权的序列 | 无权限 | 无权限 | 只能使用及查询属主为自己及已授权的序列 | |
| 删除序列 | 只可删除属主为自己的序列。 | 无权限 | 无权限 | 只可删除属主为自己的序列 | |
| 函数/存储过程 | create function | 只可在属主为自己的模式被授权过的模式和public模式下创建函数 | 无权限 | 无权限 | 只可在属主为自己的模式、已授权的模式及public模式下创建函数 |
| alter function | 只可修改属主为自己的函数的属性,owner to属性只可修改为sysdba_role成员 | 无权限 | 无权限 | 参照表的修改规则 | |
| grant/revoke | 对属于自己的函数可执行赋权/撤销,其赋权/撤销对象只能是sysdba_role成员。对于属于syssso_role、syssao_role、普通用户成员的函数,无法执行授权/撤销。 | 无权限 | 无权限 | 普通用户有权限将属主为自己的函数对其他普通用户或sysdba_role成员用户执行授权/撤销。 | |
| 调用函数 | 可调用属主为自己的函数,默认授权的public模式下的函数、系统模式下的函数,被显示授权的函数 | 只可调用属主为自己的函数和已授权的函数,public下的函数 | 只可调用属主为自己的函数和已授权的函数,public下的函数 | 只可调用属主为自己的函数和已授权的函数,public下的函数 | |
| drop function | 只可删除属主为自己的函数 | 无权限 | 无权限 | 只可删除属主为自己的函数 |