ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 利用过程验证角色

利用过程验证角色

原创 Linux操作系统 作者:yangtingkun 时间:2010-10-15 23:49:25 0 删除 编辑

角色可以直接授权,可以建立密码验证角色,也可以通过过程来验证角色。

 

 

这里给出一个最简单的通过过程来验证角色的例子:

SQL> CREATE ROLE R_PROCEDURE IDENTIFIED USING P_AUDIT_ROLE;

角色已创建。

SQL> CREATE OR REPLACE PROCEDURE P_AUDIT_ROLE
  2  AUTHID CURRENT_USER AS
  3  BEGIN
  4  IF SYS_CONTEXT('userenv', 'ip_address') = '172.25.198.230' THEN
  5  EXECUTE IMMEDIATE 'SET ROLE R_PROCEDURE';
  6  END IF;
  7  END;
  8  /

过程已创建。

SQL> GRANT SELECT ANY TABLE TO R_PROCEDURE;

授权成功。

SQL> GRANT EXECUTE ON P_AUDIT_ROLE TO TEST;

授权成功。

SQL> CONN TEST/TEST
已连接。
SQL> SELECT * FROM SESSION_ROLES;

ROLE
------------------------------
R_TEST
PLUSTRACE

SQL> EXEC YANGTK.P_AUDIT_ROLE

PL/SQL 过程已成功完成。

SQL> SELECT * FROM SESSION_ROLES;

ROLE
------------------------------
R_TEST
PLUSTRACE

SQL> CONN TEST/TEST@172.25.198.230/TEST112
已连接。
SQL> SELECT * FROM SESSION_ROLES;

ROLE
------------------------------
R_TEST
PLUSTRACE

SQL> EXEC YANGTK.P_AUDIT_ROLE

PL/SQL 过程已成功完成。

SQL> SELECT * FROM SESSION_ROLES;

ROLE
------------------------------
R_PROCEDURE

本机不带服务名登陆,不走TCP/IP协议,因此无法获取到IP地址,而通过服务名登陆数据库后,可以通过过程的验证,因此ROLE被启用。

验证角色的过程可以是单独的过程,也可以是包中的过程。不过这种角色不能直接被授权,只能通过调用过程还完成角色的启用。

SQL> GRANT R_PROCEDURE TO TEST;

授权成功。

SQL> CONN TEST/TEST
已连接。
SQL> SELECT * FROM SESSION_ROLES;

ROLE
------------------------------
R_TEST
PLUSTRACE

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-676052/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: ROLE启用个数限制
请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1964
  • 访问量
    11076943