首页 >数据库 >mysql教程 >Oracle 11g下UTL_TCP包居然用不通了调研

Oracle 11g下UTL_TCP包居然用不通了调研

WBOY
WBOY原创
2016-06-07 17:02:361043浏览

今天切换到Oracle11g下后,接着使用UTL_TCP与服务程序进行数据交互时,居然报出个ACL访问控制的问题,幸亏以前还有过些网络的基础

今天切换到Oracle11g下后,接着使用UTL_TCP与服务程序进行数据交互时,居然报出个ACL访问控制的问题,幸亏以前还有过些网络的基础,还知道ACL是个什么东西,,

而在Oracle11g下为了加强网络访问的安全性,对ACL进行了一个软的实现。下面就如何突破ACL这一层,进行了Oracle有关DBMS_NETWORK_ACL_ADMIN进行调研,下面是一些总结:

--ACL使用调研
关于让DBCoffer有关执行权限参考如下:
--用来获取主机IP或主机名
BEGIN
  DBMS_NETWORK_ACL_ADMIN.create_acl (
    acl          => 'coffer_acl_file.xml', 
    description  => 'A test of the ACL functionality',
    --参数为:一个用户或者是一个角色
    principal    => 'COFFER',
    is_grant     => TRUE, 
    privilege    => 'resolve'
    --start_date   => SYSTIMESTAMP,
    --end_date     => NULL
    );
  COMMIT;
END;
/
--让用户能够访问外网的相关端口与IP
BEGIN
  DBMS_NETWORK_ACL_ADMIN.add_privilege ( 
    acl         => 'coffer_acl_file.xml', 
    --参数为:一个用户或者是一个角色
    principal   => 'COFFER',
    is_grant    => TRUE, 
    privilege   => 'connect'
    --position    => NULL, 
    --start_date  => NULL,
    --end_date    => NULL
    );
  COMMIT;
END;
/
--对这个访问控制列表指定一条规则
BEGIN
  DBMS_NETWORK_ACL_ADMIN.assign_acl (
    acl         => 'coffer_acl_file.xml',
    host        => '*'); 
  COMMIT;
END;
/


--当升级一个DBCoffer用户时需要执行
BEGIN
  DBMS_NETWORK_ACL_ADMIN.add_privilege ( 
    acl         => 'coffer_acl_file.xml', 
    --参数为:一个用户或者是一个角色
    principal   => 'TEST',
    is_grant    => TRUE, 
    privilege   => 'resolve'
    --position    => NULL, 
    --start_date  => NULL,
    --end_date    => NULL
    );
  COMMIT;
END;
/


BEGIN
  DBMS_NETWORK_ACL_ADMIN.add_privilege ( 
    acl         => 'coffer_acl_file.xml', 
    --参数为:一个用户或者是一个角色
    principal   => 'TEST',
    is_grant    => TRUE, 
    privilege   => 'connect'
    --position    => NULL, 
    --start_date  => NULL,
    --end_date    => NULL
    );
  COMMIT;
END;
/


--当撤销一个DBCoffer用户时,需要执行
BEGIN
  DBMS_NETWORK_ACL_ADMIN.delete_privilege ( 
    acl         => 'coffer_acl_file.xml', 
    --参数为:一个用户或者是一个角色
    principal   => 'TEST',
    is_grant    => TRUE, 
    privilege   => 'resolve');
  COMMIT;
END;
/


BEGIN
  DBMS_NETWORK_ACL_ADMIN.delete_privilege ( 
    acl         => 'coffer_acl_file.xml', 
    --参数为:一个用户或者是一个角色
    principal   => 'TEST',
    is_grant    => TRUE, 
    privilege   => 'connect');
  COMMIT;
END;



--删除一个访问控制列表
BEGIN
  DBMS_NETWORK_ACL_ADMIN.drop_acl ( 
    acl         => 'coffer_acl_file.xml');
  COMMIT;
END;
/

linux

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn