Oracle 11g ACL訪問控制(11g的新玩意)


寫了一個存儲過程用於自動發郵件,運行時報:ORA-24247 網絡訪問被訪問控制列表 (ACL) 拒絕 

上網收集了一些資料,原來是Oracle 11g加入了一個訪問控制列表(ACL)用來控制網絡訪問,在訪問外部網絡地址前需要進行配置。

弄了個腳本添加了一個訪問郵箱服務器的權限

set linesize 8000
set serveroutput on
set sqlblanklines on

exec  DBMS_NETWORK_ACL_ADMIN.create_acl (
    acl => 'acl_e900_email_server.xml',
    description => 'User JDE send Email by 11.0.0.1', 
    principal => 'HAHAHA', 
    is_grant => TRUE, 
    privilege => 'connect', 
    start_date => SYSTIMESTAMP , 
    end_date => NULL); 
COMMIT;

exec  DBMS_NETWORK_ACL_ADMIN.assign_acl ( 
    acl => 'acl_e900_email_server.xml', 
    host => '11.0.0.1', 
    lower_port => 25, 
    upper_port => NULL);
COMMIT;

 

以下是一份完整比較詳盡的配置腳本:

------------------------------------
-- 創建ACL:
------------------------------------

BEGIN
  DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
	ACL  		=> '/sys/acls/BRDG_BMS_TO_OA.xml',  --命名
    DESCRIPTION	=> 'ACL list',   --描述
    PRINCIPAL   => 'CHD_ACT_FOR_BUG_PROJ',   --要賦權限的用戶
    IS_GRANT    => TRUE,   --true表示賦權,false表示取消賦權
    PRIVILEGE   => 'connect'
  );
  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
	ACL       => '/sys/acls/BRDG_BMS_TO_OA.xml',
    PRINCIPAL => 'CHD_ACT_FOR_BUG_PROJ',
    IS_GRANT  => TRUE,
    PRIVILEGE => 'resolve'
  );
  DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
	ACL  		=> '/sys/acls/BRDG_BMS_TO_OA.xml',
    HOST 		=>'*',   --主機名,可以指定主機名,也可以使用*做為通配
    lower_port=> 1,    --端口配置視情況而定,若需要精確控制可限定主機端口范圍
    upper_port=> 9999
  );
  commit;
END;

------------------------------------
-- 刪除ACL:(與assign相對應)
------------------------------------
-- 刪除acl這個列表文件,使用它的用戶也就取消了對應的權限
begin
  dbms_network_acl_admin.drop_acl(
    '/sys/acls/BRDG_BMS_TO_OA.xml'
  );
  commit;
end;

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM