許可權<九>

來源:互聯網
上載者:User

標籤:io   使用   資料   問題   sp   on   c   ad   ef   

? 介紹

角色就是相關許可權的命令集合,使用角色的主要目的就是為了簡化許可權的管理,假定有使用者 a,b,c 為了讓他們都擁有許可權

1. 串連資料庫

2. 在 scott.emp 表上 select,insert,update。

如果採用直接授權操作,則需要進行 12 次授權。

因為要進行 12 次授權操作,所以比較麻煩喔!怎麼辦?

如果我們採用角色就可以簡化:

首先將 creat session,select on scott.emp,insert on scott.emp, update on scott.emp 授予角色,然後將該角色授

予 a,b,c 使用者,這樣就可以三次授權搞定。

角色分為預定義和自訂角色兩類:

? 預定義角色

預定義角色是指 oracle 所提供的角色,每種角色都用於執行一些特定的管理工作,下面我們介紹常用的預定義角色 connect,

resource,dba

1.connect 角色

connect 角色具有一般應用開發人員需要的大部分許可權,當建立了一個使用者後,多數情況下,只要給使用者授予 connect 和 resource

角色就夠了,那麼 connect 角色具有哪些系統許可權呢?

alter session

create cluster

create   database link

create session

create table

create view

create sequence

2.resource 角色

resource 角色具有應用開發人員所需要的其它許可權,比如建立預存程序,觸發器等。這裡需要注意的是 resource 角色隱含

了 unlimited tablespace 系統許可權。

resource 角色包含以下系統許可權:

create cluster

create indextype

create table

create sequence

create type

create procedure

create trigger

3.dba 角色 

Oracle  筆記

35

dba 角色具有所有的系統許可權,及 with admin option 選項,預設的 dba 使用者為 sys 和 system,它們可以將任何系統許可權授予

其他使用者。但是要注意的是 dba 角色不具備 sysdba 和 sysoper 的特權(啟動和關閉資料庫)。

? 自訂角色

顧名思義就是自己定義的角色,根據自己的需要來定義。一般是 dba 來建立,如果用別的使用者來建立,則需要具有 create role

的系統許可權。在建立角色時可以指定驗證方式(不驗證,資料庫驗證等)。

1.建立角色(不驗證)

如果角色是公用的角色,可以採用不驗證的方式建立角色。

create role 角色名稱 not identified;

2.建立角色(資料庫驗證)

採用這樣的方式時,角色名稱、口令存放在資料庫中。當啟用該角色時,必須提供口令。在建立這種角色時,需要為其提供口

令。

create role 角色名稱 identified by 密碼;

角色授權

當建立角色時,角色沒有任何許可權,為了使得角色完成特定任務,必須為其授予相應的系統許可權和對象許可權。

1.給角色授權

給角色授予許可權和給使用者授權沒有太多區別,但是要注意,系統許可權的 unlimited tablespace 和對象許可權的 with grant

option 選項是不能授予角色的。

SQL> conn system/manager;

SQL> grant create session to 角色名稱 with admin option

SQL> conn scott/[email protected];

SQL> grant select on scott.emp to 角色名稱;

SQL> grant insert, update, delete on scott.emp to 角色名稱;

通過上面的步驟,就給角色授權了。

2.分配角色給某個使用者

一般分配角色是由 dba 來完成的,如果要以其它使用者身份分配角色,則要求使用者必須具有 grant any role 的系統許可權。

SQL> conn system/manager;

SQL> grant 角色名稱 to blake with admin option;

因為我給了 with admin option 選項,所以,blake 可以把 system 分配給它的角色指派給別的使用者。

? 刪除角色

使用 drop role,一般是 dba 來執行,如果其它使用者則要求該使用者具有 drop any role 系統許可權。

SQL> conn system/manager;

SQL> drop role 角色名稱;

問題:如果角色被刪除,那麼被授予角色的使用者是否還具有之前角色裡的許可權?

答案:不具有了

? 顯示角色資訊

1.顯示所有角色

SQL> select * from dba_roles;

2.顯示角色具有的系統許可權

SQL> select privilege, admin_option from role_sys_privs where role=‘角色名稱‘;

3.顯示角色具有的對象許可權

通過查詢資料字典視圖 dba_tab_privs 可以查看角色具有的對象許可權或是列的許可權。

4.顯示使用者具有的角色,及預設角色

當以使用者的身份串連到資料庫時,oracle 會自動的啟用預設的角色,通過查詢資料字典視圖 dba_role_privs 可以顯示某個

使用者具有的所有角色及當前預設的角色 

SQL> select granted_role, default_role from dba_role_privs where grantee = ‘使用者名稱’;

? 精細存取控制

精細存取控制是指使用者可以使用函數,策略實現更加細微的安全存取控制。如果使用精細存取控制,則當在用戶端發出 sql

語句(select,insert,update,delete)時,oracle 會自動在 sql 語句後追加謂詞(where 子句),並執行新的 sql 語句,

通過這樣的控制,可以使得不同的資料庫使用者在訪問相同表時,返回不同的資料資訊,如:

使用者 scott       blake         jones

策略     emp_access

資料庫表 emp

如所示,通過策略 emp_access,使用者 scott,black,jones 在執行相同的 sql 語句時,可以返回不同的結果。例如:當執行 select ename from emp; 時,根據實際情況可以返回不同的結果。

許可權<九>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.