ORA-24247:网络访问被访问控制列表(ACL)拒绝

今天将一个发送数据库监控邮件的procedure 从10g 迁移到11g,不工作了。处理记录如下:

在Oracle11g中,Oracle在安全方面有了很多的改进,而在网络权限控制方面,也有一个新的概念提出来,叫做ACL(Access Control List), 这是一种细粒度的权限控制。在ACL之前,我们对于有一些程序包,例如UTL_MAIL, UTL_SMTP等这些包,你可以利用这些包连接到外部的主机,而默认情况下,这些包都是都是赋予了public角色,所以可能会导致利用这些PL/SQL程序包的恶意工具,所以Oracle提出了一个新的概念来解决这个问题,那就是ACL。

简单的说oracle对网络的访问需要授权。

具体的操作使用sys  as  sysdba  进行操作

1. 创建ACL控制XML

BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl => 'email_server_permissions.xml',
description => 'Enables network permissions for the e-mail server',
principal => 'CENTER_ADMIN',   --需要访问oracle 的用户
is_grant => TRUE,
privilege => 'connect');
commit;
END;

2.使用 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL 将此 ACL 与邮件服务器相关联, 即需要访问的网络

BEGIN
DBMS_NETWORK_ACL_ADMIN.assign_acl (
acl => 'email_server_permissions.xml',
host => 'smtp.163.com', ---SMTP服务器地址
lower_port => 25,
upper_port => NULL);
COMMIT;
END;

3. 增加 host 权限

BEGIN

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl => 'email_server_permissions.xml', host => 'www.baidu.com');

END;

4.UNASSIGN_ACL存储过程允许你手动删除访问控制列表,它使用的参数与ASSIGN_ACL存储过程相同,使用NULL参数作为通配符。
DBMS_NETWORK_ACL_ADMIN.UNASSIGN_ACL(host => 'www.baidu.com');
5.删除上面的控制列表
DBMS_NETWORK_ACL_ADMIN.drop_acl ( acl => 'email_server_permissions.xml');
6. 查询创建的ACL信息
SELECT host, lower_port, upper_port, acl,
     DECODE(
         DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, 'HR', 'connect'),
            1, 'GRANTED', 0, 'DENIED', NULL) privilege
     FROM dba_network_acls

转载于:https://www.cnblogs.com/ianxu/p/10417833.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值