十四, 角色
oracle 角色
介紹
角色就是相關權限的命令集合,使用角色的主要目的就是為了簡化權限的管理。
角色分為預定義和自定義角色兩類
二、3種標準角色
CONNECT Role(連接角色)
擁有CONNECT role的用戶還能夠創建表、視圖、序列(sequence)、簇(cluster)、同義詞(synonym )、會話(session)和與其他數據庫的鏈(link)。
RESOURCE Role(資源角色)
提供給用戶另外的權限以創建他們自己的表、序列、過程(procedure)、觸發器(trigger)、索引(index)和簇(cluster),resource角色隱含unlimited tablespace系統權限。
3、dba角色
dba角色具有所有的系統權限,及with admin option選項,默認的dba用戶為sys和system他們可以將任何系統權限授予其他用戶。
但是要注意的是dba角色不具備sysdba和sysoper的特權(啟動和關閉數據庫)。
一個具有DBA角色的用戶可以撤消任何別的用戶甚至別的DBA的CONNECT、RESOURCE 和DBA的其他權限。當然,這樣是很危險的,因此,除非真正需要,DBA權限不應隨便授予那些不是很重要的一般用戶。
撤消一個用戶的所有權限,并不意味著從Oracle中刪除了這個用戶,也不會破壞用戶創建的任何表;只是簡單禁止其對這些表的訪問。其他要訪問這些表的用戶可以象以前那樣地訪問這些表。
connect角色
connect角色具有一般應用開發人員需要的大部分權限,當建立了一個用戶后,多數情況下,只要給用戶授予connect和resource角色就夠了
Connect角色包含以下系統權限
create cluster
create database link
create session
alter session
create table
create view
create sequence
resource角色
resource角色具有應用開發人員所需要的其它權限,比如建立存儲過程,觸發器等。這里需要注意的是resource角色隱含unlimited tablespace系統權限。
resource角色包含以下系統權限:
create cluster
create indextype
create table
create sequence
create type
create procedure
create trigger
自定義角色
建立角色(不驗證)
如果角色是公用的角色,可以采用不驗證的方式建立角色。
建立角色(數據庫驗證)
采用這樣的方式時,角色名、口令存放在數據庫中。當激活該角色時,必須提供口令。在建立這種角色時,需要為其提供口令。
給角色授權
給角色授予權限和給用戶授權沒有太多區別,但是要注意,系統權限的unlimited tablespace和對象權限的with grant option選項是不能授予角色的。
分配角色給某個用戶
一般分配角色是由dba來完成的,如果要以其它用戶身份分配角色,則要求用戶必須具有grant any role的系統權限。
因為給了with admin option選項,所以,blake可以把system分配給它的角色分配給別的用戶。
刪除角色
使用drop role,一般是dba來執行,如果其它用戶則要求該用戶具有drop any role系統權限。
顯示角色信息
1)、顯示所有角色
2)、顯示角色具有的系統權限
SQL> select privilege, admin_option from role_sys_privs where role='角色名';3)、顯示角色具有的對象權限
通過查詢數據字典視圖dba_tab_privs可以查看角色具有的對象權限或是列的權限。
4)、顯示用戶具有的角色,及默認角色
當以用戶的身份連接到數據庫時,oracle 會自動的激活默認的角色,通過查詢數據字典視圖dba_role_privs 可以顯示某個用戶具有的所有角色及當前默認的角色。
精細訪問控制
精細訪問控制是指用戶可以使用函數,策略實現更加細微的安全訪問控制。如果使用精細訪問控制,則當在客戶端發出sql語句(select,insert,update,delete)時,oracle會自動在sql語句后追加謂詞(where子句),并執行新的sql語句,通過這樣的控制,可以使得不同的數據庫用戶在訪問相同表時,返回不同的數據信息,
總結
- 上一篇: 自学c程序设计之路,谭浩强第五版,(一)
- 下一篇: MCR和MRC汇编指令