Oracle ACL(Access Control List)ITeye - 牛牛娱乐

Oracle ACL(Access Control List)ITeye

2019-01-10 18:49:36 | 作者: 瀚彭 | 标签: 权限,赋予,拜访 | 浏览: 730

在oralce 11g中假设你想获取server的ip或许hostname,履行如下句子

SELECT utl_inaddr.get_host_address FROM dual;  //获取IP

SELECT  utl_inaddr.get_host_name FROM dual; //获取host 姓名

假如在oracle 9i中能够正常履行,但在11g中你或许会得到一个不可思议的过错提示:

ORA-24247: network access denied by access control list(ACL)

 

你或许立刻想到是需求啥额定的权限,而咱们平常赋予权限一般是grant XXX to user_name;但你找不到有啥跟ACL对应的权限.

实际上这儿的确需求额定权限,但赋予权限的方法适当反常,跟grant的方法太不相同了.

  细粒度拜访网络服务

为了更详尽的操控网络权限,Oracle 11g中针对这么几个PL/SQL API(UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR)的拜访设置了独自的权限拜访操控方法.

其间UTL_SMTP,UTL_MAIL是跟邮件相关的,比方你能够在触发器中设定当在某些表中做刺进删去操作时就发个邮件常识某个负责人.

 

赋予权限

假设要给用户赋予拜访上面说到的那些函数咋整呢? 要经过如下的一段pl/sql句子

BEGIN

DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl =  abc.xml, --这个xml文件姓名随意取的,但不同呈现同名的状况

description =  ACL list,

principal =  ARWEN, --表明赋予权限给哪个用户

is_grant =  true, --为true表明赋予权限,假如是false适当撤销权限

privilege =  connect);

 

 

DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl =  abc.xml,

principal =  ARWEN,

is_grant =  true,

privilege =  resolve);

 

 

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl =  abc.xml,

host =  Oracle_Host_name); --由于那些网络操作的权限是针对某一个server的,所以这儿是指定一台机器的姓名

 

END;

 

 

假如要删去上面的操控列表

BEGIN

DBMS_NETWORK_ACL_ADMIN.drop_acl ( acl = abc.xml);

END;

删去这个列表,那用些列表赋予权限的那些用户天然也被撤销相应的权限了.

 

关于DBMS_NETWORK_ACL_ADMIN的具体介绍参看Oracle 官方文档:

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章