1. 程式人生 > >oracle管理許可權和角色

oracle管理許可權和角色

介紹

這一部分主要看看oracle中如何管理許可權和角色,許可權和角色的區別在哪裡。

當剛剛建立使用者時,使用者沒有任何許可權,也不能執行任何操作。如果要執行某種特定的資料庫操作,則必需為其授予系統的許可權;如果使用者要訪問其它方案的物件,則必需為其授予物件的許可權,為了簡化許可權的管理,可以使用角色。

許可權:

許可權是指執行特定型別sql命令或是訪問其它方案物件的權利,包括系統許可權和對角許可權兩種。

系統許可權介紹

系統許可權是指執行特定型別sql命令的權利,它用於控制使用者可以執行的一個或是一組資料庫操作。比如當用戶具有create table許可權時,可以在其方案中建表,當用戶具有create any table許可權時,可以在任何方案中建表。oracle提供了160多中系統許可權。常用的有:

create session 連線資料庫;

create view 建檢視;

create procedure 建過程、函式、包;

create cluster 建簇;

create table 建表;

create public synonym 建同義詞;

create trigger 建觸發器;

顯示系統許可權

oracle提供了166系統許可權,而且oracle的版本越高,提供的系統許可權就越多,我們可以查詢資料字典檢視system_privilege_map,可以顯示所有系統許可權

基本語法:

select * from system_privilege_map order by name;

oracle11GR2中提供了208個系統許可權。

授予系統許可權

一般情況,授予系統許可權是有dba完成的,如果用其它使用者來授予系統許可權,則要求使用者必需具有grant any privilege的系統許可權在授予系統許可權時,可以帶有with admin option選項,這樣,被授予許可權的使用者或是角色還可以將該系統許可權授予其它的使用者或是角色。為了讓大家快速入門,我們舉例說明:

1、建立兩個使用者ken,tom初始階段他們沒有任何許可權,如果登陸就會出錯誤的資訊。

1.1、建立兩個使用者,並指定密碼。

SQL>create user ken identified by ken;

SQL>create user tom identified by tom;

2、給使用者ken授權

2.1、授予create session和create table許可權時帶with admin option

授權基本語法:

grant 許可權名稱 to 使用者名稱;

SQL>grant create session to ken with admin option;

SQL>grant create table to ken with admin option;

2.2、授予create view時不帶with admin option

SQL>grant create view to ken;

3、給使用者tom授權

我們可以通過ken給tom授權,因為with admin option是加上的。當然也可以通過dba給tom授權,我們就用ken給tom授權:

SQL>grant create session to tom with admin option;

SQL>grant create table to tom with admin option;

SQL>grant create view to tom;//報錯,由於ken被dba授權時沒有帶with admin option引數,所以ken沒有許可權對tom進行create view的授權。

回收系統許可權

一般情況下,回收系統許可權是dba來完成的,如果其它的使用者來回收系統許可權,要求該使用者必需具有相應系統許可權及轉授系統許可權的選項(with admin option)。回收系統許可權使用revoke來完成,當回收了系統許可權後,使用者就不能執行相應的操作了,但是請注意,系統許可權級聯收回問題?(不會級聯回收許可權)

system==>>ken==>>tom

(create session)(create session)(create session)

用system執行如下操作:

revoke create session from ken;請思考tom還能登入嗎?可以登入。

回收系統許可權基本語法:

revoke 系統許可權名 from 使用者名稱;

特別說明:系統許可權的回收不是級聯回收。

物件許可權介紹

訪問其它方案物件的權利,使用者可以直接訪問自己方案的物件,但是如果要訪問別的方案的物件,則必需具有物件的許可權,比如smith使用者要訪問scott.emp表(scott:方案,emp:表)

則必需在scott.emp表上具有物件的許可權。常用的許可權有:

alter 修改、delete 刪除、select 查詢、insert 新增、update 修改、index 索引、references 引用、execute執行。

檢視oracle提供的所有的物件許可權(僅dba使用者可以檢視)

select distinct privilege from dba_tab_privs;

重要查詢文件

檢視當前使用者的表(自己的表)

select table_name from user_tables;

查詢oracle中所有的系統許可權,一般是dba

select * from system_privilege_map order by name;

查詢oracle中所有的角色,一般是dba

select * from dba_roles;

查詢oracle中所有物件許可權,一般是dba

select distinct privilege from dba_tab_privs;

查詢資料庫的表空間

select tablespace_name from dba_tablespaces;

查詢當前使用者具有什麼樣的系統許可權

select * from user_sys_privs;

查詢當前使用者在別人的表上,具有什麼樣的物件許可權

select * from user_tab_privs; (檢視對錶的許可權)

select * from user_col_privs; (檢視對錶的列的許可權)

查詢某個使用者具有怎樣的角色

select * from dba_role_privs where grantee='使用者名稱';

檢視某個角色包括哪些系統許可權。

select * from dba_sys_privs where grantee='DBA';

或者是:

select * from role_sys_privs where role='DBA';

檢視某個角色包括的物件許可權

select * from dba_tab_privs where grantee='角色名';

當某個角色具有什麼樣的系統許可權或物件許可權,也可通過pl/sql developer工具直接檢視即可。

顯示執行的錯誤資訊

在執行完語句後,就執行下面的語句

show error;

顯示oracle某個操作用時

set timing on;

授權物件許可權

在oracle9i前,授予物件許可權是由物件的所有者來完成的,如果用其它的使用者來操作,則需要使用者具有相應的(with grant option)許可權,從oracle9i開始,sys,system可以將任何物件上的物件許可權授予其它使用者,授予物件許可權是用grant命令來完成的。

授權基本語法:

grant 物件許可權 on 資料庫物件 to 使用者名稱 [with grant option] [,角色名]

特別說明:可以把許可權直接賦給使用者或角色。[with grant option]選項只能授予使用者,不能授予角色。

我們看幾個案例:

1、monkey使用者要操作scott.emp表,則必需授予相應的物件許可權。

(1)、希望monkey可以查詢scott.emp的表資料,怎樣操作?

SQL>grant select on scott.emp to monkey;

(2)、希望monkey可以修改scott.emp的表資料,怎樣操作?

SQL>grant update on scott.emp to monkey;

(3)、希望monkey可以刪除scott.emp的表資料,怎樣操作?

SQL>grant delete on scott.emp to monkey;

(4)、有沒有更加簡單的方法,一次把所有許可權賦給monkey?

SQL>grant all on scott.emp to monkey;

2、授權alter許可權

如果black使用者修改scott.emp表的結構,則必需授予alter物件許可權

SQL>grant alter on scott.emp to black;

3、授予execute許可權

如果使用者想要執行其它方案的包/過程/函式,則需有execute許可權。比如為了讓ken可以執行包dbms_transaction,可以授予execute許可權。

SQL>grant execute on dbms_transaction to ken;

4、授予index許可權

如果想在別的方案的表上建立索引,則必需具有index物件許可權,如為了讓black可以在scott.emp上建立索引,就給其index的物件許可權

SQL>grant index on scott.emp to blake;

5、使用with grant option選項

該選項用於轉授物件許可權,但是該選項只能被授予使用者,而不能授予角色。

例:由blake給jones授予select許可權

先由dba給blake授予select許可權

SQL>conn system/orcl;

SQL>grant select on scott.emp to blake with grant option;

SQL>conn blake/orcl;

SQL>grant select on scott.emp to jones;

回收物件許可權

在oracle9i中,收回物件的許可權可以由物件的所有者來完成,也可以用dba使用者(sys,system)來完成。

這裡要說明的是:收回物件許可權後,使用者就不能執行相應的sql命令,但是要注意的是物件的許可權是否會被級聯收回?(級聯回收)

請看案例:

scott========>>blake========>>jones

select on emp  select on emp  select on emp

物件許可權回收基本語法:

revoke 物件許可權 on 資料庫物件 from 使用者名稱[,角色名];

特別說明:物件的許可權回收是級聯回收。

1、切換system使用者

SQL>conn system/orcl;

2、建立blake和jones使用者

SQL>create user blake identified by blake;

SQL>create user jones identified by jones;

3、給blake和jones使用者賦系統許可權(登入許可權)

SQL>grant create session to blake with admin option;

SQL>grant create session to jones;

4、切換scott使用者給blake賦物件許可權(檢視許可權)

SQL>conn scott/tiger;

SQL>grant select on emp to blake with grant option;

5、切換blake使用者給jones賦物件許可權(檢視許可權)

SQL>conn blake/blake;

SQL>grant select on scott.emp to jones;

6、切換scott使用者回收blake物件許可權

SQL>conn scott/tiger;

SQL>revoke select on emp from blake;

7、切換blake使用者測試檢視物件許可權是否還能用。

SQL>conn blake/blake;

SQL>select * from scott.emp;//報錯,blake無查詢許可權。

8、切換jones使用者測試檢視物件許可權是否還能用。

SQL>conn jones/jones;

SQL>select * from scott.emp;//報錯,jones無查詢許可權。

管理許可權和角色--角色

介紹

角色就是相關許可權的命令集合,使用角色的主要目的就是為了簡化許可權的管理。

請看一個問題:假定有使用者1,2,3為了讓他們都擁有許可權。

1、連線資料庫

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

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

角色分為預定義角色和自定義角色。

預定義角色

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

特別說明:角色可以包含系統許可權,也可以包含物件許可權。

要檢視角色有怎樣的許可權可以通過下列語句檢視:

select * from dba_sys_privs where grantee='DBA';

注意:查詢時角色的名稱要大寫(DBA、CONNECT、RESOURCE),小寫無法查詢

使用system登入可以查詢所有預定義角色:

select * from dba_roles;

如何知道某個使用者具有什麼樣的角色:

select * from dba_role_privs where grantee='使用者名稱';

通過角色給使用者賦許可權基本語法:

grant 角色名[,角色名2,...] to 使用者名稱;

1、connect角色

connect角色具有一般應用開發人員需要的大部分許可權,只要給使用者授予connect和resource角色就夠了,connect角色具有哪些系統許可權呢?

connect角色具有:

create session 建立連線許可權

2、resource角色

resource角色具有應用開發人員所需要的其它許可權,比如建立儲存過程、觸發器等。這裡需要注意的是resource角色隱含了unlimited tablespace系統許可權。

resource角色具有:

create trigger  建立觸發器

create sequence 建立序列

create type     建立型別許可權

create procedure建立過程

create cluster  建立叢集

create operator 建立運營商

create indextype建立索引型別

create table    建立表

3、dba角色

dba角色具有所有的系統許可權,及with admin option選項,預設的dba使用者為sys和system他們可以將任何系統許可權授予其它使用者,但是要注意的是dba角色不具備sysdba和sysoper的特權(啟動和關閉資料庫)

案例:

建立一個使用者,然後賦給connect角色和resource角色

SQL>create user tempuser identified by tempuser;

SQL>grant connect,resource to tempuser;

建立一個使用者jack並將其設為具有dba角色的使用者

SQL>create user jack identified by jack;

SQL>grant dba to jack;

自定義角色

顧名思義就是自己定義的角色,根據自己的需要來定義,一般是dba來建立,如果使用別的使用者來建立,則需要具有create role的系統許可權。在建立角色時可以指定驗證方式(不驗證,資料庫驗證等)

1、建立角色(不驗證)

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

建立角色不驗證基本語法:

create role 角色名 not identified;

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

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

建立角色需資料庫驗證基本語法:

create role 角色名 identified by 口令;

角色授權

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

(一)給角色授權

給角色授予許可權和給使用者授權沒有太多區別,但是要注意系統許可權的unlimited tablespace和物件許可權的with grant option選項是不能授予角色的

給角色授權基本語法:

grant 物件許可權 on 資料庫物件 to 自定義角色名;

案例:

完成將create session,select on scott.emp,insert on scott.emp,update on scott.emp授予角色,然後將該角色授予a,b,c使用者。

1、使用system使用者建立自定義角色

SQL>conn system/orcl;

SQL>create role crud_scott not identified;

2、給自定義角色crud_scott授權

SQL>grant create session to crud_scott;

SQL>grant select on scott.emp to crud_scott;

SQL>grant insert on scott.emp to crud_scott;

SQL>grant update on scott.emp to crud_scott;

3、通過將授權過的角色crud_scott給使用者進行授權

SQL>grant crud_scott to a;

SQL>grant crud_scott to b;

SQL>grant crud_scott to c;

(二)分配角色給某個使用者

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

通過角色名授權使用者基本語法:

grant 角色名 to 使用者名稱 [with admin option];

如果給使用者賦許可權時帶了with admin option選項,被授權的使用者可以繼續將此許可權授予其它使用者。

刪除角色

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

刪除角色基本語法:

drop role 角色名;

顯示角色資訊

1、顯示所有角色

select * from dba_roles;

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

select privilege,admin_option from role_sys_privs where role='角色名';

3、顯示角色具有的物件許可權

通過查詢資料字典檢視dba_tab_privs可以檢視角色具有的物件許可權或是列的許可權。

select * from dba_tab_privs where grantee='角色名';

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

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

select granted_role,default_role from dba_role_privs where grantee='角色名';

精細訪問控制(只做瞭解,不詳細介紹)

是指使用者可以使用函式、策略實現更加細微的案例訪問控制。如果使用精細訪問控制,則當在客戶端發出sql語句(select,insert,update,delete)時,oracle會自動在sql語句後追加謂語(where子句),並執行新的sql語句。通過這樣的控制,可以使得不同的資料庫使用者在訪問相同的表時,返回不同的資料資訊。使用函式或策略是為了更好的保護資料安全性,為不同許可權的使用者提供不同的安全級別,可有效的保障資訊保安。

相關推薦

oracle管理許可權角色

介紹 這一部分主要看看oracle中如何管理許可權和角色,許可權和角色的區別在哪裡。 當剛剛建立使用者時,使用者沒有任何許可權,也不能執行任何操作。如果要執行某種特定的資料庫操作,則必需為其授予系統的許可權;如果使用者要訪問其它方案的物件,則必需為其授予物件的許可權,為了簡化許可權的管理,可以使用角色。 許

oracle基礎教程(第五天)管理索引、許可權角色

期望目標 1.掌握維護oracle資料完整性的技巧 2.理解索引概念,會建立索引 3.管理oracle的許可權和角色 維護資料的完整性 資料的完整性用於確保資料庫資料遵從一定的商業和邏輯規則。在oracle中,資料完整性可以使用約束、觸發器、應用程式(過程、函式)三種方法

oracle逐步學習總結之許可權角色(基礎六)

原創作品,轉自請註明出處:https://www.cnblogs.com/sunshine5683/p/10236129.html 繼續上節的索引,這次主要總結oracle資料庫的許可權問題!(在總結的過程中,後續會不斷完善) 一、索引 1、單列索引:基於單個列建立的索引 建立單列索引:create

rabbitmq 許可權角色管理

翻看官方的release文件後,得知由於賬號guest具有所有的操作許可權,並且又是預設賬號,出於安全因素的考慮,guest使用者只能通過localhost登陸使用,並建議修改guest使用者的密碼以及新建其他賬號管理使用rabbitmq(該功能是在3.3.0版本引入的

ORACLE資料庫的使用者許可權角色許可權控制

這篇文章講述的是ORACLE資料庫的使用者許可權控制,如有錯誤或者不當之處還希望各位大神批評指正。 使用者許可權是什麼? 在資料庫中,使用者可以對資料庫進行的操作叫做使用者的許可權。 如何建立一個使用者? 建立一個名為‘cmc’的使用者

Oracle 10g的使用者、許可權角色

Oracle 本身的資料字典設計我個人覺得很合理, 因為DBA_xxx, ALL_xxx,USER_xxx 讓人一看大概就知道 這個檢視是幹什麼用的. 本文簡要總結了一下與許可權,角色相關的檢視. 一. 概述    與許可權,角色相關的檢視大概有下面這些:        DBA_SYS_PRIVS:

Jenkins使用者許可權角色配置

本文將介紹如何配置jenkins,使其可以支援基於角色的專案許可權管理。 由於jenkins預設的許可權管理體系不支援使用者組或角色的配置,因此需要安裝第三發外掛來支援角色的配置,本文將使用Role Strategy Plugin,介紹頁面:https://wiki.jenkins-ci

Oracle DB 許可權角色

11、將角色分配給使用者 可以使用角色來管理資料庫許可權。可以向角色新增許可權,並將該角色授予給使用者。使用者然後可以啟用角色,從而行使角色授予的許可權。角色包含授予給該角色的所有許可權,以及授予給該角色的其它角色的所有許可權。 預設情況下,Enterprise Manager 會自動將CONNECT角

Sql Server 2008 R2資料庫之登入名、使用者、架構、許可權角色

原文地址http://www.shaoqun.com/a/106188.aspx 這幾天先是研究了一下有關資料庫的安全性、許可權等方面的東西,那就是先說一下資料庫安全性和許可權的問題,首先是對資料庫的登入名、使用者和架構做一個簡單的介紹。登入名大家都知道就是登入資料庫時

資料庫許可權角色模型 .

管理域 系統安全模型設計 1       修改歷史 版本 修改歷史  作者 描述 開發時間(h) 0.1 2007-9-5 LevinSoft 建立文件得基本結構、基本流程 5 0.2 2007-9-26 Levinsof

Oracle使用者,許可權角色以及登入管理

  Oracle使用者,許可權,角色以及登入管理   1. sys和system使用者的區別 system使用者只能用normal身份登陸em。除非你對它授予了sysdba的系統許可權或者syspoer系統許可權。 sys使用者具有“SYSDBA”或者“SYS

使用者角色:通用許可權管理系統資料庫表結構如何設計?

一,前言 許可權管理系統的應用者應該有三種不同性質上的使用,A,使用許可權B,分配許可權C,授權許可權 本文只從《使用許可權》和《分配許可權》這兩種應用層面分析,暫時不考慮《授權許可權》這種。二,初步分析使用者和角色 說到許可權管理,首先應該想到,當然要設計一個使用者表,一個

Oracle使用者、許可權角色管理

Oracle 許可權設定一、許可權分類:系統許可權:系統規定使用者使用資料庫的許可權。(系統許可權是對使用者而言)。 實體許可權:某種許可權使用者對其它使用者的表或檢視的存取許可權。(是針對表或檢視而言的)。 二、系統許可權管理:1、系統許可權分類:DBA: 擁有全部特權,是系統最高許可權,只有DBA才可以

使用者管理Oracle資料庫的使用者建立、刪除等;使用者、角色許可權的授予與回收等;使用者的資訊查詢及許可權角色的資訊查詢。

(1)Oracle中建立新的使用者使用create user語句,一般是具有dba(資料庫管理員)的許可權才能使用。如在sql plus中以scott使用者建立使用者的命令如下:Create user xiaoming identified by m123;(注意oracle

Oracle 的使用者、許可權角色、及表空間的管理

第二章:Oracle的使用者、許可權、角色及表空間的管理 Oracle資料庫查詢時如何對滿屏的sql命令做清屏處理呢?很多朋友喜歡使用SQL*Plus,SQL*Plus工具怎麼清屏呢? oracle清屏命令彙集: 1、同時按SHIFT和DELETE鍵,然

許可權管理系統如何分別實現對使用者角色的授權

目前,大多數許可權系統,都是基於RBAC的理念來設計的,關於RBAC,摘抄一下百度百科的解釋: 在RBAC中,許可權與角色相關聯,使用者通過成為適當角色的成員而 得到這些角色的許可權。這就極大地簡化了許可權的管理。在一個組織中,角色是為了完成各種工作而創造,使用者則依

Oracle體系結構用戶管理

oracle 體系結構 用戶管理 數據庫體系結構 定義: 數據庫的組成,工作過程,數據庫中的數據的組成與管理機制。 組成: 實例、用戶進程、服務器進程、數據庫文件、

MySQL 8.0用戶角色管理

通過 alter 當前 expire 特性 watermark 時間 特定 ima MySQL8.0新加了很多功能,其中在用戶管理中增加了角色的管理,默認的密碼加密方式也做了調整,由之前的sha1改為了sha2,同時加上5.7的禁用用戶和用戶過期的設置,這樣方面用戶的管理和

java程式設計師菜鳥進階(十七)linux基礎入門(五)linux檔案/目錄的許可權歸屬管理

在linux中的每一個檔案或目錄都包含有訪問許可權,這些訪問許可權決定了誰能訪問和如何訪問這些檔案和目錄。相應的每一個檔案和目錄都有所屬的屬主和屬組,合理的設定檔案和目錄的屬組和屬主在檔案/目錄管理中佔據著很重要的地位,所以,今天我就和大家一起來看一下有關檔案/目錄的許可權和歸屬的相關設定

ORACLE 11G許可權管理

1、建立角色 我們以往為資料庫使用者賦予角色許可權:connect resource dba。 這樣做是不安全的。畢竟我們為所有使用者都賦予了dba許可權,有可能由於誤操作而產生無法彌補的損失。 通過對資料庫許可權的梳理,我們可以按照如下方式新增一個數據庫角色:develop