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

來源:互聯網
上載者:User

今天切換到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;
/

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.