问题描述:
应用使用utlhttp访问网元的web服务查询信息报错如下:

查看报错原因:
ORA-24247, 24247, 00000, “network access denied by access control list (ACL)”
Cause:
No access control list (ACL) has been assigned to the target host or the privilege necessary to access the target host has not been granted to the user in the access control list.
Action:
Ensure that an access control list (ACL) has been assigned to the target host and the privilege necessary to access the target host has been granted to the user.
解决方案:
应用使用UTL_TCP、UTL_HTTP和UTL_SMTP程序包,支持数据库领域外的服务器之间的通信。然而,这些工具带来了巨大的安全风险。为了消除这一风险,很多专家建议撤消“从公网执行”这些程序包的权限。
Oracle数据库11g有一个新的解决方案:您可以将执行权限程序包授予任何人,但要控制他们可以调用的资源。例如,UTL_TCP可限制为仅调用几个IP地址,这种机制称为访问控制列表(ACL)。如果主机在ACL中,用户可以在UTL_TCP中使用;但是仅仅拥有对UTL_TCP的执行权限是不够的。因此,恶意进程不可能取代UTL_TCP程序包和建立非法连接。
处理步骤:
- 确认应用使用的数据库账号,需要访问的Web地址和端口
- 创建ACL
- 赋权resolve
- 关联host和端口
- 检查设置
- 添加其他的Web地址
- 应用测试
联系应用人员检查测试,多个地址访问正常,解决问题。
程序包简介:
Oracle的UTL_TCP、UTL_HTTP和UTL_SMTP程序包,支持数据库领域外的服务器之间的通信。类似地,UTL_HTTP用于从Web服务器发出HTTP请求,UTL_SMTP用于在主机间进行SMTP邮件呼叫。
开发人员偶尔会使用这些强大的工具—例如,使用UTL_SMTP从数据库内发送邮件,使用UTL_HTTP提取可在PL/SQL程序内处理的Web页面等等。
然而,这些工具带来了巨大的安全风险。使用UTL_TCP,数据库用户可以到达该主机可到达的任何其他计算机,甚至不会遇到系统提示。这曾是Voyager蠕虫的惯用伎俩,该病毒一年前刚骚扰过Oracle用户社区。
更多精彩干货分享欢迎关注IT那活儿。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6063.html
