oracle的acl有哪些权限,Oracle 11g ACL访问控制(11g的新玩意)

  • Post author:
  • Post category:其他


写了一个存储过程用于自动发邮件,运行时报: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;