Oracle数据库安全管理(5)

在Oracle数据库中,用户可以直接访问同名Schema下的数据库对象,如果需要访问其它Schema下的数据库对象,就需要具有相应的对象权限。对象权限授予的SQL语法为:

GRANT object_privilege_list | ALL [PRIVILEGES] [ (column,...) ] ON [schema.]object TO user_name_list | role_list | PUBLIC [WITH GRANT OPTION];

其中:

-object_privilege_list:对象权限列表,以逗号分隔;

-ALL PRIVILEGES:全部权限;

-[schema.]object:待授权的对象;

-user_name_list:用户列表,以逗号分隔;

-role_list:角色列表,以逗号分隔;

-PUBLIC:所有用户

(2)对象权限的回收

回收对象权限的SQL语法为:

REVOKE object_privilege_list | ALL [PRIVILEGES] ON [schema.]object FROM user_name_list | role_list | PUBLIC [CASCADE CONSTRAINTS] | [FORCE];

其中:

-CASCADE CONSTRAINTS:当回收REFERENCE对象权限或回收ALL PRIVILEGES,删除利用REFERENCES对象权限创建的外键约束;

-FORCE:当回收在表中被使用的用户自定义对象类型的EXECUTE权限时,必须指定FORCE关键字。

回收对象权限需要注意以下3点:

多个管理员授予同一个用户相同的对象权限,一个管理员将该对象权限回收后,该用户不再具有该对象权限;

为了回收用户对象权限的传递性,须先回收该对象权限,再重新赋予给用户该对象权限;

如果一个用户的对象权限具有传递性,并且已经给其它用户授权,那么该用户的对象权限被回收后,其它用户的对象权限也将被收回。(值得注意的是,这一条与系统权限传递性的回收不相同)。

4.3 查询权限信息

视图名称   说明  
DBA_SYS_PRIVS   包含所有用户角色获得的系统权限信息  
ALL_SYS_PRIVS   包含当前用户可见的全部用户角色获得的系统权限信息  
USER_SYS_PRIVS   当前用户获得的系统权限信息  
DBA_TAB_PRIVS   包含所有用户角色获得的对象权限信息  
ALL_TAB_PRIVS   包含当前用户可见的全部用户角色获得的对象权限信息  
USER_TAB_PRIVS   当前用户获得的对象权限信息  
DBA_COL_PRIVS   包含数据库中所有列对象的权限信息  
ALL_COL_PRIVS   包含当前用户可见的所有列对象的权限信息  
USER_COL_PRIVS   当前用户拥有的或授予其它用户的所有列对象的权限信息  
SESSION_PRIVS   当前会话可以使用的所有权限信息  

5.角色管理

假如我们直接给每一个用户赋予权限,这将是一个巨大又麻烦的工作,同时也不方便DBA进行管理。通过采用角色,使得:

权限管理更方便。将角色赋予多个用户,实现不同用户相同的授权。如果要修改这些用户的权限,只需修改角色即可;

角色的权限可以激活和关闭。使得DBA可以方便的选择是否赋予用户某个角色;

提高性能,使用角色减少了数据字典中授权记录的数量,通过关闭角色使得在语句执行过程中减少了权限的确认。

image

图. 用户、角色、权限关系图

由于个人接触的数据库用户较少,没有单独创建角色,故角色的创建、修改、删除、激活、禁用、授予、回收不再一一讲述,只要知道如何查询角色信息即可。

在Oracle中,包含角色的数据字典如下:

视图名称   说明  
DBA_ROLE_PRIVS   包含数据库中所有用户拥有的角色信息  
USER_ROLE_PRIVS   包含当前用户拥有的角色信息  
ROLE_ROLE_PRIVS   角色拥有的角色信息  
ROLE_SYS_PRIVS   角色拥有的系统权限信息  
ROLE_TAB_PRIVS   角色拥有的对象权限信息  
DBA_ROLES   当前数据库中所有角色及其描述信息  
SESSION_ROLES   当前会话所具有的角色信息  

6.审计

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0b1515979e1515db50acfb8dc817b71f.html