Oracle数据库角色安全作用

来源:互联网 发布:ping软件下载 编辑:程序博客网 时间:2024/06/05 07:19

工作中建立系统环境往往需要进行数据库的创建和设置,其中发现Oracle数据库中创建角色时,对于角的色密码影响和作用一直没有理解,所以停下来稍作学习。

 

1、ROLE作用

数据库可以通过直接授权进行安全管理,但同时带来工作量大和权限无法控制两个问题。ROLE可以被看成有名称的一组权限。它可以用来角解决这些问题,通过作为一个单元的授予或撤销,会话中的临时激活或禁用进行控制和管理。

 

2、ROLE的DEFAULT ROLE解释

数据库用户创建和更改时,可以通过default role子句为该用户设置默认角色列表。用户登录登录连接会话时,将激活授予此用户的所有权限和角色。若设置为非默认激活,用户登录连接会话后,非激活的角色不会对用户有效。需要激活时,使用set role命令进行激活,角色在当前会话中即可启用。

效果示例:

启用默认SCOTT用户

创建HR用户

CREATE USER hr IDENTIFIED BY hr PROFILE DEFAULT;  GRANT "CONNECT" TO hr;  GRANT "RESOURCE" TO hr;  ALTER USER hr DEFAULT ROLE "CONNECT","RESOURCE";

创建角色HR_ROLE

CREATE ROLE hr_role NOT IDENTIFIED;

创建公共同义词 Table emp

CREATE OR REPLACE PUBLIC SYNONYM employee FOR scott.emp;

TABLE操作权限授权给角色hr_role

GRANT SELECT,INSERT,DELETE,UPDATE ON scott.emp TO hr_role;

用户HR授予角色hr_role,非默认

GRANT hr_role TO hr;

连接HR用户,执行SELECT命令

SELECT emp.* FROM EMPLOYEE emp;

会调试异常信息:ORA-00942:表或视图不存在。 然后执行启用角色命令

SET ROLE hr_role;

执行之后,再执行上述的SELECT命令则会查询出数据结果。
 

3、ROLE IDENTIFIED 的安全作用

密码的设置可以控制角色的是否激活,这在一些安全控制严格的应用场景中得意体现。

效果示例:

结合上述示例,进行部分调整

角色hr_role创建密码

ALTER ROLE HR_ROLE IDENTIFIED BY 123;

更改HR用户默认角色

ALTER USER HR DEFAULT ROLE CONNECT, RESOURCE;

连接HR用户,执行SELECT命令

SELECT emp.* FROM EMPLOYEE emp;

会调试异常信息:ORA-00942:表或视图不存在。 然后执行启用角色命令

SET ROLE hr_role IDENTIFIED BY 123;

执行之后,再执行上述的SELECT命令则会查询出数据结果。

 

角色应用识别密码功能可以用在高安全控制的应用场景,可以使用下面的语法创建角色:

CREATE ROLE rolename IDENTIFIED USING procedure_name;

这只能运行procedure_name命名的PL/SQL过程来启动角色。过程中可以执行任意多次的检查,例如。用户正在特定TGP/IP子网、正在运行特定用户进程(可能不是SQL*Plus)、运行时间处在特定范围内等。在应用程序的适当位置嵌入对启用过程的调用可以根据需要切换角色的启用和关闭。

 

看到这里,高手们可能对ROLE的安全作用有了大致了解。角色,它不仅仅只是权限集的作用。