您当前的位置: 首页 > 数据库教程 > Oracle教程 > oracle11g之ACL拙见

oracle11g之ACL拙见

作者:不详 来源:网络 发布时间: 2014-08-25 22:42 点击:
错误样例(使用UTL_HTTP发送http请求时,报出如下错误): 原因: 1、Oracle允许使用几个PL/SQL API(UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR)访问外部网络服务,这些API都使用TCP协议。 2、在Oracle 10g是通过一个基于用户是否被授予执行某个包的许可的

oracle11g之ACL拙见

  错误样例(使用UTL_HTTP发送http请求时,报出如下错误):

  原因:

  1、Oracle允许使用几个PL/SQL API(UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR)访问外部网络服务,这些API都使用TCP协议。

  2、在Oracle 10g是通过一个基于用户是否被授予执行某个包的许可的 on/off开关来实现的,Oracle 11g引入了细粒度访问网络服务.

  3、通过在XML DB 数据库中使用访问控制列表(ACL)来实现,允许控制哪个用户能够访问哪个网络资源,而不关心包的授权。

  解决办法:

  -- 查询网络访问控制列表 acl

  ?

  

  

  

  

  

  

  

  


  1

  


  Select * From dba_network_acls

  


  -- 查询访问控制权限列表

  ?

  

  

  

  

  

  

  

  


  1

  


  Select * From dba_network_acl_privileges

  


  -- 查询数据库中的用户,用户名大小写敏感

  ?

  

  

  

  

  

  

  

  


  1

  


  Select username From dba_users Where username Like '%ITS%'

  


  分配acl权限,执行如下sql语句:

  ?

  

  

  

  

  

  

  

  


  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33

  34

  35

  36

  37

  38

  39

  40

  41

  


  begin

    dbms_network_acl_admin.create_acl (      -- 创建访问控制文件(ACL)

      acl        => 'utl_http.xml',         -- 文件名称

      description => 'HTTP Access',          -- 描述

      principal  => 'ITS',                  -- 授权或者取消授权账号,大小写敏感

      is_grant   => TRUE,                   -- 授权还是取消授权

      privilege  => 'connect',              -- 授权或者取消授权的权限列表

      start_date => null,                   -- 起始日期

      end_date   => null                    -- 结束日期

    );

    dbms_network_acl_admin.add_privilege (   -- 添加访问权限列表项

      acl       => 'utl_http.xml',          -- 刚才创建的acl名称

      principal => 'ITS',                   -- 授权或取消授权用户

      is_grant  => TRUE,                    -- 与上同

      privilege => 'resolve',               -- 权限列表

      start_date => null,                   

      end_date  => null

    );

    dbms_network_acl_admin.assign_acl (      -- 该段命令意思是允许访问acl名为utl_http.xml下授权的用户,使用oracle网络访问包,所允许访问的目的主机,及其端口范围。

      acl       => 'utl_http.xml',

      host      => '100.1.2.1',             -- ip地址或者域名,填写http://localhost:9000/hello与http://localhost:9000/是会报host无效的

                                              -- 且建议使用ip地址或者使用域名,若用localhost,当oracle不是安装在本机上的情况下,会出现问题

      lower_port => 9000,                    -- 允许访问的起始端口号

      upper_port => Null                     -- 允许访问的截止端口号

    );

    commit;

  end;

  begin

    dbms_network_acl_admin.assign_acl (      -- 可以授权多个主机,或者多个主机的多个端口

      acl       => 'utl_http.xml',

      host      => '10.100.49.138',

      lower_port => 80,

      upper_port => NUll

    );

    commit;

  end;

  请求测试:

  


  ?

  

  

  

  

  

  

  

  


  1

  


  select utl_http.request('http://localhost:9000/hello?wsdl') From dual;

  


  若出现no listener,是因为授权主机时不能写localhost,应该写ip地址或者域名,如下图:

  移除acl和权限控制

  撤销分配acl到hostacl -- 与assign对应

  ?

  

  

  

  

  

  

  

  


  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  


  begin

    dbms_network_acl_admin.unassign_acl(

      acl       => 'utl_http.xml',

      host      => '100.1.2.1',            

                                              

      lower_port => 9000,                   

      upper_port => Null  

    );

  end;

  删除用户的权限

  


  ?

  

  

  

  

  

  

  

  


  1

  2

  3

  4

  5

  6

  7

  


  begin

    dbms_network_acl_admin.delete_privilege(

      'utl_http.xml', 'ITS', NULL, 'resolve'

    );

  end;

  -- 删除acl配置文件

  


  ?

  

  

  

  

  

  

  

  


  1

  2

  3

  4

  5

  


  begin

    dbms_network_acl_admin.drop_acl(

      'utl_http.xml'

    );

  end;

  
分享到:
本文"oracle11g之ACL拙见"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4