Oracle ACL (Access Control List)詳解


在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM