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

在开始展开ACL之前,首先明确一些概念。 ACL这个概念不是Oracle首先提出来的,在很多地方的权限管理都用到了ACL,甚至在操作系统上也使用了ACL。一般,我们在做权限管理时,牵扯到一个问题,就是谁要在什么对象上作什么?这个正是对应了我们ACL中的概念。Principal will have what privileges on what object.谁就是principal, 什么对象就是我们的object, 做什么就是我们的privilege。那么如果有了这种细粒度的权限控制,我们就可以定义我们哪些用户拥有哪个远程主机的什么权限了。有了这个概念我们就可以看看如何使用ACL了。我们主要使用的是DBMS_NETWORK_ACL_ADMIN这个自带的包来完成。

  首先我们需要先去创建一个ACL。

BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl => 'test.xml',
description => 'Just a test for ACL',
principal => 'COOLMA',
is_grant => true,
privilege => 'connect'); END;
/

我们已经创建好了一个ACL,并且加入了connect的权限,并把它赋予给了coolma用户。然后继续下面的步骤,

BEGIN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl => 'test.xml',
principal => 'COOLMA',
is_grant => true,
privilege => 'resolve'); END;
/

以上是给我们现有的ACL中加入了resolve的权限给COOLMA用户。

BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl => 'test.xml',
host => 'www.baidu.com');
END;
/

然后我们把主机www.baidu.com赋予给我们的ACL。

现在我们的用户COOLMA就可以connect, 和resolve我们的主机www.baidu.com。你可以通过dba_network_acls数据字典来看。

COLUMN host FORMAT A30
COLUMN acl FORMAT A30
SET LINESIZE 2000
select * from dba_network_acls;
HOST LOWER_PORT UPPER_PORT ACL ACLID
------------------------------ ---------- ---------- ------------------------------ --------------------------------
www.baidu.com /sys/acls/test.xml FE6427F3AEE81311E0436D01A8C07A8B

如果我们想再加一个用户怎么办,和加入coolma的方法一样。

我们上述相关的ACL只对于UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP, and UTL_INADDR, the DBMS_LDAP 这些程序包以及HttpUriType类型相关。希望本文能够帮助到你。

-EOF

Oracle ACL (Access Control List)详解的更多相关文章

  1. Oracle ACL(Access Control List)

    在oralce 11g中假如你想获取server的ip或者hostname,执行如下语句 SELECT utl_inaddr.get_host_address FROM dual;  //获取IP S ...

  2. oracle中的dual表详解

    oracle中的dual表详解 1.DUAL表的用途 Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中 --查看当前连接用户 SQL> s ...

  3. oracle数据库exp/imp命令详解

    转自http://wenku.baidu.com/link?url=uD_egkkh7JtUYJaRV8YM6K8CLBT6gPJS4UlSy5WKhz46D9bnychTPdgJGd7y6UxYtB ...

  4. oracle正则表达式regexp_like的用法详解

    oracle正则表达式regexp_like的用法详解 /*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与IN ...

  5. windows访问控制列表 --ACL(Access Control List)

    1.定义 ACL是一个windows中的表示用户(组)权限的列表. Access Control List(ACL) Access Control Entry(ACE) ... 2.分类 ACL分为两 ...

  6. Oracle中的substr()函数 详解及应用

    注:本文来源于<Oracle中的substr()函数 详解及应用> 1)substr函数格式   (俗称:字符截取函数) 格式1: substr(string string, int a, ...

  7. ACL(Access Control List)

    一.ACL的简介 ACL(Access Control List 访问控制列表)是路由器和交换机接口的指令列表,用来控制端口进出的数据包.ACL的定义也是基于每一种被动路由协议的,且适用于所有的被动路 ...

  8. Oracle 查询优化的基本准则详解

      注:报文来源:想跌破记忆寻找你 < Oracle 查询优化的基本准则详解 > Oracle 查询优化的基本准则详解 1:在进行多表关联时,多用 Where 语句把单个表的结果集最小化, ...

  9. 【转载】MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解

    [原文链接]:MyBatis JdbcType 与Oracle.MySql数据类型对应关系详解 1. Mybatis JdbcType与Oracle.MySql数据类型对应列表 2. Mybatis ...

随机推荐

  1. [HDU1017]Exact cover[DLX][Dancing Links详解][注释例程学习法]

    Dancing Links解决Exact Cover问题. 用到了循环双向十字链表. dfs. 论文一知半解地看了一遍,搜出一篇AC的源码,用注释的方法帮助理解. HIT ACM 感谢源码po主.链接 ...

  2. C#冒泡排序--详解

    思路:以数组int[]a={55,42,15,3,66,52};为例. 每一轮排序都把最大的数放在最后 所以, 对应循环语句思路 这样就很清晰了. 代码如下: , , , , , , , }; ; i ...

  3. 让你分分钟学会 JS 闭包

    闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述 ...

  4. PHPCMS v9 在windows2008系统 IIS7 下设置伪静态的方法

    安装环境:windows2008+IIS7.0+PHP5+MYSQL5 一.安装phpcms v9程序,设置伪静态.如图: 二.安装IIS7官方Url重写模块 1.先到IIS官方下载模块 下载地址:h ...

  5. 1109HTML学习

    <div><!--face里面用逗号隔开表示 字体优先选择.size是字体1到7 --><font color="red" face="微软 ...

  6. php javascript

    php100:103:Jquery javascript javascript:网页用来改进设计.验证表单.检测浏览器.创建cookies. Javascript(简称JS) 和 HTML 标签一样都 ...

  7. vim编辑器中撤销和恢复操作

    在VIM编辑器下切换至命令行模式: 撤销: u 恢复: ctrl + r

  8. Python 改变当前工作目录

    在shell里编辑: import os os.getcwd()   #取得当前工作目录 os.chdir(r'目标目录')   # os.chdir(r'd:\learnpy')

  9. 有了screen,妈妈再也不用担心我的学习啦

    创建一个srceen screen -S test1 从screen离开 crtl+a d (左手按住crtl和a 然后右手按d) 查看当前有多少screen screen -ls 回到screen ...

  10. 修改 VSS 默认登录用户名三种方法

    修改 VSS 默认登录用户名三种方法标签: VSS VSS2005c#2014-11-27 10:27 1561人阅读 评论(0) 收藏 举报 分类: VSS软件开发总会有 BUG 和更新的需求,之前 ...