(轉)Oracle11g下UTL_TCP包居然用不通了調研

(轉載地址:http://blog.csdn.net/liaojiabo/article/details/6627065

 

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章