oracle顯式授權和隱式授權

leonarding發表於2012-02-10

oracle 物件的授權
Oracle
授權

一、授權語法
GRANT 語法:

1.顯式授權(直接將物件授權給使用者)
 GRANT privilege [, ...] ON object [, ...]  TO  { Public| Group | Username|role} [WITH GRANT OPTION ] 
 
例子
grant  read,write on directory dir_home to public
2.
隱式授權(透過將角色授權給使用者
)
 GRANT role TO  { Public| Group | Username|role}

  例子 grant connect,resource to oltp_user

語法說明:

privilege (許可權)
  
可能的許可權有:

     SELECT--
訪問宣告的表/檢視的所有列/欄位.

     INSERT—
對宣告的表插入所有列/欄位.
     UPDATE—
對宣告的表更新所有列/欄位.
     DELETE--
對宣告的表刪除所有列/欄位.
     RULE --
/檢視上定義規則 (參見 CREATE RULE 語句).
     ALL   --
賦予所有許可權.

object 賦予許可權的物件名.
   
可能的物件是: 
     table
(表)

     view
(檢視)

     sequence
(序列)

     index
(索引)

directory (目錄)
Public 
代表是所有使用者的簡寫.
Group  
將要賦予許可權的組GROUP .目前的版本中,組必須是用下面方法顯式建立的.

Username
將要賦予許可權的使用者名稱.PUBLIC 是代表所有使用者的簡寫.

role  
某個角色,(DBA  connect  resource)
WITH GRANT OPTION
允許向別人賦予同樣許可權,被授權的使用者可以繼續授權
.
描述

 
物件建立後,除了建立者外,除非建立者賦予(GRANT)許可權,其他人沒有訪問物件的許可權。
GRANT
允許物件的建立者給某使用者或某組或所有使用者(PUBLIC)某些特定的許可權。不需要給建立者賦予(GRANT)物件的許可權,建立者預設擁有物件的所有許可權,包括刪除它的許可權。

說明

Oracle不允許在儲存過程中使用未經顯式授權的物件. 要使用另一使用者的物件,必須透過另一使用者給自己顯示授權。

因為Oracle在編譯儲存過程時並不檢查定義者擁有的角色,只是檢查其被顯式授予的許可權,DBA也是一種角色,所以即使是DBA,也需要顯式授權

二、授權方式 (顯式和隱式)

物件授權有兩種模式,顯式和隱式
顯示授權和隱式授權的區別是:顯式授權是直接把物件授權給使用者,隱式授權是給使用者授予角色的方式來實現授權。

1. 顯式授權是直接用GRANT語句進行授權。
 
語法:GRANT 某種許可權 TO 使用者
:
  CONN  USER1/Password
  GRANT SELECT  ON TABLE1 TO USER2; 
user1的表TABLE1select 許可權顯示授權給user2
  GRANT UPDATE  ON TABLE1 TO USER2;  user1的表TABLE1update許可權顯示授權給user2


 
注:用system/manager登入是沒法授權的,要使USER2使用者能在儲存過程裡面訪問USER1使用者的表,必須以USER1使用者(該使用者有dba許可權)登入,然後授權就可以了。
  SQL>grant select on USER1.MA_USERINFO to USER2

2.隱式授權則是透過ROLE來授權。
 
語法:GRANT 某個角色 TO 使用者

  CONN  USER1 
  GRANT SELECT ON TABLE1 TO ROLE1;  
USER1的表TABLE1select許可權顯示授權給Role1
  CONN  SYSTEM                      切換成管理員授予角色
  GRANT ROLE1 TO USER2;    
          USER2授與Role1的許可權。


三、收回許可權
   語法:
    
顯式收權:   revoke 許可權 from 使用者;    從使用者中收回許可權

隱式收權:     Revoke角色  from 使用者;  從使用者中收回角色

   例子:

revoke  privilege1 from USER2;       從使用者中收回許可權

revoke select on table1 from User1;  收回查詢select表的許可權
  revoke all on table1 from User1;     從使用者user1中收回表table1的所有許可權

revoke  ROLE1    from USER2;    從使用者中收回角色
    grant  connect to xujin;        
對使用者xujin授予connect角色
  revoke connect  from xujin      從使用者xujin收回connect角色

End

 

 

 Leonarding 

 2012.2.9

 天津

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26686207/viewspace-715992/,如需轉載,請註明出處,否則將追究法律責任。

相關文章