Home  >  Article  >  Database  >  Oracle 11g下UTL_TCP包居然用不通了调研

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

WBOY
WBOYOriginal
2016-06-07 17:02:36991browse

今天切换到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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn