第五步:给角色授权
创建角色后,可对此角色授权,如执行某一程序包的执行权限,某些管理权限等。这些权限只能在角色启用时才能利用。
SQL> conn hr/hr
已连接。
SQL> select *from dept;
DEPTNO NAME
---------- --------------------------------
1000 总经理
1001 市场部
1002 财务部
1003 人力资源部
SQL> grant select on dept to dept_mgmt;
授权成功。
SQL>
在程序中执行如下语句启用Vault保护的安全应用程序角色:
execute DVSYS.DBMS_MACSEC_ROLES.SET_ROLE('DEPT_MGMT');
第六步:测试
在上面的规则里面,我们定义了test_a、test_b可以从192.168.100.1使用角色DEPT_MGMT.那么我先看看从本地(127.0.0.1)上行不?
SQL> conn test_a/test_a@ora10g
已连接。
SQL> select DVF.F$CLIENT_IP,USER from dual;
F$CLIENT_IP USER
-------------- ------
127.0.0.1 TEST_A
SQL> select * from hr.dept;
select * from hr.dept
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> EXEC DVSYS.DBMS_MACSEC_ROLES.SET_ROLE('DEPT_MGMT')
BEGIN DVSYS.DBMS_MACSEC_ROLES.SET_ROLE('DEPT_MGMT'); END;
*
第 1 行出现错误:
ORA-47306: -20001: Restricted Command
ORA-06512: 在 "DVSYS.DBMS_MACUTL", line 38
ORA-06512: 在 "DVSYS.DBMS_MACUTL", line 389
ORA-06512: 在 "DVSYS.DBMS_MACSEC", line 232
ORA-06512: 在 "DVSYS.ROLE_IS_ENABLED", line 4
ORA-06512: 在 "DVSYS.DBMS_MACSEC_ROLES", line 24
ORA-06512: 在 line 1
SQL>
再到192.168.100.10这个server上看看:
[oracle@rac01] /oracle> sqlplus /nolog
SQL> conn test_a/test_a@ora10g
Connected.
SQL> EXEC DVSYS.DBMS_MACSEC_ROLES.SET_ROLE('DEPT_MGMT');
PL/SQL procedure successfully completed.
SQL> select * from hr.dept;
DEPTNO NAME
---------- -----------------
1000 总经理
1001 市场部
1002 财务部
1003 人力资源部
SQL>
SQL> conn test_b/test_b@ora10g
Connected.
SQL> select * from hr.dept;
select * from hr.dept
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> EXEC DVSYS.DBMS_MACSEC_ROLES.SET_ROLE('DEPT_MGMT');
PL/SQL procedure successfully completed.
SQL> select * from hr.dept;
DEPTNO NAME
---------- -------------------
1000 总经理
1001 市场部
1002 财务部
1003 人力资源部
SQL>
SQL> conn test_c/test_c@ora10g
Connected.
SQL> select * from hr.dept;
select * from hr.dept
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> EXEC DVSYS.DBMS_MACSEC_ROLES.SET_ROLE('DEPT_MGMT');
BEGIN DVSYS.DBMS_MACSEC_ROLES.SET_ROLE('DEPT_MGMT'); END;
*
ERROR at line 1:
ORA-47306: -20001: Restricted Command
ORA-06512: at "DVSYS.DBMS_MACUTL", line 38
ORA-06512: at "DVSYS.DBMS_MACUTL", line 389
ORA-06512: at "DVSYS.DBMS_MACSEC", line 232
ORA-06512: at "DVSYS.ROLE_IS_ENABLED", line 4
ORA-06512: at "DVSYS.DBMS_MACSEC_ROLES", line 24
ORA-06512: at line 1
SQL>
OK,预期的效果达到了。