日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

oracle 權(quán)限與角色

系統(tǒng) 2417 0

?權(quán)限允許用戶(hù)訪問(wèn)屬于其它用戶(hù)的對(duì)象或執(zhí)行程序,ORACLE系統(tǒng)提供三種權(quán)限:

   Object 對(duì)象級(jí)

   System 系統(tǒng)級(jí)

   Role 角色級(jí)

  這些權(quán)限可以授予給用戶(hù)、特殊用戶(hù)public或角色,如果授予一個(gè)權(quán)限給特殊用戶(hù)"Public"(用戶(hù)public是oracle預(yù)定義的,每個(gè)用戶(hù)享有這個(gè)用戶(hù)享有的權(quán)限),那么就意味作將該權(quán)限授予了該數(shù)據(jù)庫(kù)的所有用戶(hù)。對(duì)管理權(quán)限而言,角色是一個(gè)工具,權(quán)限能夠被授予給一個(gè)角色,角色也能被授予給另一個(gè)角色或用戶(hù)。用戶(hù)可以通過(guò)角色繼承權(quán)限,除了管理權(quán)限外角色服務(wù)沒(méi)有其它目的。權(quán)限可以被授予,也可以用同樣的方式撤銷(xiāo)。

  建立和使用角色

  如前所訴,角色存在的目的就是為了使權(quán)限的管理變得輕松。建立角色使用CREATE ROLE語(yǔ)句,他的語(yǔ)法如下:

CREATE ROLE role_name IDENTIFIED BY password
CREATE ROLE role_name IDENTIFIED EXTERNALLY
CREATE ROLE role_name IDENTIFIED GLOBALLY
  缺省情況下建立的角色沒(méi)有password或者其他的識(shí)別。如果使用IDENTIFIED BY 子句建立,那么角色不會(huì)自動(dòng)響應(yīng),必須用SET ROLE激活。

SET ROLE role_name IDENTIFIED BY password

  EXTERNALLY和GLOBALLY類(lèi)型的角色由操作系統(tǒng)和ORACLE Service server驗(yàn)證。通常用戶(hù)需要權(quán)限修改應(yīng)用程序中使用的表單中的數(shù)據(jù),但是只有在應(yīng)用程序運(yùn)行時(shí)而不是在使用ad hoc工具時(shí),這種上下文敏感安全可以通過(guò)有PASSWORD的角色來(lái)實(shí)現(xiàn)。當(dāng)用戶(hù)在應(yīng)用程序內(nèi)部連結(jié)數(shù)據(jù)庫(kù)時(shí),代碼將執(zhí)行SET ROLE命令,通過(guò)安全驗(yàn)證。所以用戶(hù)不需要知道角色的password,也不需要自己輸入SET ROLE命令。

對(duì)象權(quán)限

  對(duì)象權(quán)限就是指在表、視圖、序列、過(guò)程、函數(shù)或包等對(duì)象上執(zhí)行特殊動(dòng)作的權(quán)利。有九種不同類(lèi)型的權(quán)限可以授予給用戶(hù)或角色。如下表:
權(quán)限 ALTER DELETE EXECUTE INDEX INSERT READ REFERENCE SELECT UPDATE
Directory no no no no no yes no no no
function no no yes no no no no no no
procedure no no yes no no no no no no
package no no yes no no no no no no
DB Object no no yes no no no no no no
Libary no no yes no no no no no no
Operation no no yes no no no no no no
Sequence yes no no no no no no no no
Table yes yes no yes yes no yes yes yes
Type no no yes no no no no no no
View no yes no no yes no no yes yes
 對(duì)象由不止一個(gè)權(quán)限,特殊權(quán)限ALL可以被授予或撤銷(xiāo)。如TABLE的ALL權(quán)限就包括:

   SELECT,INSERT,UPDATE和DELETE,還有INDEX,ALTER,和REFERENCE。

  如何看這個(gè)表我們以ALTER權(quán)限為例進(jìn)行說(shuō)明

  ALTER權(quán)限

  允許執(zhí)行ALTER TABLE和LOCK TABLE操作,ALTER TABLE可以進(jìn)行如下操作:

    . 更改表名

    . 增加或刪除列

    . 改變列的數(shù)據(jù)類(lèi)型或大小

    . 將表轉(zhuǎn)變?yōu)榉謪^(qū)表

  在SEQUENCE上的ALTER權(quán)限允許執(zhí)行ALTER Sequence語(yǔ)句,重新給sequence分配最小值、增量和緩沖區(qū)大小。

系統(tǒng)權(quán)限

  系統(tǒng)權(quán)限需要授予者有進(jìn)行系統(tǒng)級(jí)活動(dòng)的能力,如連接數(shù)據(jù)庫(kù),更改用戶(hù)會(huì)話(huà)、建立表或建立用戶(hù)等等。你可以在數(shù)據(jù)字典視圖SYSTEM_PRIVILEGE_MAP上獲得完整的系統(tǒng)權(quán)限。對(duì)象權(quán)限和系統(tǒng)權(quán)限都通過(guò)GRANT語(yǔ)句授予用戶(hù)或角色。需要注意的是在授予對(duì)象權(quán)限時(shí)語(yǔ)句應(yīng)該是WITH GRANT OPTION子句,但在授予系統(tǒng)權(quán)象時(shí)語(yǔ)句是WITH ADMIN OPTION,所以在你試圖授予系統(tǒng)權(quán)限時(shí),使用語(yǔ)句WITH GRANT OPTION系統(tǒng)會(huì)報(bào)告一個(gè)錯(cuò)誤:ONLY ADMIN OPTION can be specified。在考試中要特別注意這個(gè)語(yǔ)法和錯(cuò)誤信息。

角色和角色權(quán)限

  角色權(quán)限就是將屬于用戶(hù)的權(quán)限授予一個(gè)角色。任何權(quán)限都可以授予給一個(gè)角色。授予系統(tǒng)權(quán)限給被授予者必須使用WITH_ADMIN_OPTION子句,在會(huì)話(huà)期間通過(guò)SET ROLE語(yǔ)句授予或撤銷(xiāo)角色權(quán)限。然而,角色權(quán)限不能依靠存儲(chǔ)在SQL中的權(quán)限。如果函數(shù)、程序、包、觸發(fā)器或者方法使用另一個(gè)計(jì)劃擁有的對(duì)象,那么就必須直接給對(duì)象的擁有者授權(quán),這是因?yàn)闄?quán)限不會(huì)在會(huì)話(huà)之間改變。

授予和撤銷(xiāo)權(quán)限

   給用戶(hù)或者角色授予權(quán)限使用GRANT 語(yǔ)句,GRANT語(yǔ)句的語(yǔ)法如下:

GRANT ROLE(或system privilege) TO user(role,Public) WITH ADMIN OPTION(可選)

  對(duì)象權(quán)限被授予 WITH GRANT OPTION,

權(quán)限和數(shù)據(jù)字典

  數(shù)據(jù)字典是ORACLE存儲(chǔ)有關(guān)數(shù)據(jù)庫(kù)結(jié)構(gòu)信息的地方,數(shù)據(jù)本身存放在其他地方,數(shù)據(jù)字典由表和視圖組成。在考試中關(guān)于數(shù)據(jù)字典最容易考的內(nèi)容是:查看那一類(lèi)權(quán)限已經(jīng)被授予。比如DBA_TAB_PRIV包含了用戶(hù)授予給另一用戶(hù)的對(duì)象權(quán)限和在授予時(shí)是否帶有WITH GRANT OTPION子串的信息。注意DBA_TAB_PRIV不僅僅包含了對(duì)表的權(quán)限的關(guān)系,他還包括函數(shù)、包、隊(duì)列等等上的權(quán)限的關(guān)系。下表列出了所有的權(quán)限和角色的數(shù)據(jù)字典視圖:

  表: 權(quán)限的數(shù)據(jù)字典視圖

視圖 作用
ALL_COL_PRIVS 表示列上的授權(quán),用戶(hù)和PUBLIC是被授予者
ALL_COL_PRIVS_MADE 表示列上的授權(quán),用戶(hù)是屬主和被授予者
ALL_COL_RECD 表示列上的授權(quán),用戶(hù)和PUBLIC是被授予者
ALL_TAB_PRIVS 表示對(duì)象上的授權(quán),用戶(hù)是PUBLIC或被授予者或用戶(hù)是屬主
ALL_TAB_PRIVS_MADE 表示對(duì)象上的權(quán)限,用戶(hù)是屬主或授予者
ALL_TAB_PRIVS_RECD 表示對(duì)象上的權(quán)限, 用戶(hù)是PUBLIC或被授予者
DBA_COL_PRIVS 數(shù)據(jù)庫(kù)列上的所有授權(quán)
DBA_ROLE_PRIVS 顯示已授予用戶(hù)或其他角色的角色
DBA_SYS_PRIVS 已授予用戶(hù)或角色的系統(tǒng)權(quán)限
DBA_TAB_PRIVS 數(shù)據(jù)庫(kù)對(duì)象上的所有權(quán)限
ROLE_ROLE_PRIVS 顯示已授予用戶(hù)的角色
ROLE_SYS_PRIVS 顯示通過(guò)角色授予用戶(hù)的系統(tǒng)權(quán)限
ROLE_TAB_PRIVS 顯示通過(guò)角色授予用戶(hù)的對(duì)象權(quán)限
SESSION_PRIVS 顯示用戶(hù)現(xiàn)在可利用的所有系統(tǒng)權(quán)限
USER_COL_PRIVS 顯示列上的權(quán)限,用戶(hù)是屬主、授予者或被授予者
USER_COL_PRIVS_MADE 顯示列上已授予的權(quán)限,用戶(hù)是屬主或授予者
USER_COL_PRIVS_RECD 顯示列上已授予的權(quán)限,用戶(hù)是屬主或被授予者
USER_ROLE_PRIVS 顯示已授予給用戶(hù)的所有角色
USER_SYS_PRIVS 顯示已授予給用戶(hù)的所有系統(tǒng)權(quán)限
USER_TAB_PRIVS 顯示已授予給用戶(hù)的所有對(duì)象權(quán)限
USER_TAB_PRIVS_MADE 顯示已授予給其他用戶(hù)的對(duì)象權(quán)限,用戶(hù)是屬主
USER_TAB_PRIVS_RECD 顯示已授予給其他用戶(hù)的對(duì)象權(quán)限,用戶(hù)是被授予者

?

--------------------------------------------------------------------------

?

角色相關(guān)的視圖.

一. 概述

?? 與權(quán)限,角色相關(guān)的視圖大概有下面這些:

???DBA_SYS_PRIVS: 查詢(xún)某個(gè)用戶(hù)所擁有的系統(tǒng)權(quán)限

???USER_SYS_PRIVS:??當(dāng)前用戶(hù)所擁有的系統(tǒng)權(quán)限

???SESSION_PRIVS:????當(dāng)前用戶(hù)所擁有的全部權(quán)限

???ROLE_SYS_PRIVS:????某個(gè)角色所擁有的系統(tǒng)權(quán)限

???注意:?要以SYS用戶(hù)登陸查詢(xún)這個(gè)視圖,否則返回空.

???ROLE_ROLE_PRIVS:??? 當(dāng)前角色被賦予的角色

?? SESSION_ROLES:????? 當(dāng)前用戶(hù)被激活的角色

???USER_ROLE_PRIVS:?? 當(dāng)前用戶(hù)被授予的角色

???另外還有針對(duì)表的訪問(wèn)權(quán)限的視圖:

???TABLE_PRIVILEGES

???ALL_TAB_PRIVS ??

???ROLE_TAB_PRIVS:???? 某個(gè)角色被賦予的相關(guān)表的權(quán)限

??????...???

二.? Examples

?? 1.? 查詢(xún)當(dāng)前用戶(hù)所擁有的權(quán)限

???????Select? *? from? session_privs;

?? 2.?? 查詢(xún)某個(gè)用戶(hù)被賦予的系統(tǒng)權(quán)限.

????????可以有多種方式

???????Select? *? from? user_sys_privs;

???????或者:? select * from DBA_SYS_PRIVS where grantee='XXX'

?????? (需要當(dāng)前用戶(hù)擁有DBA角色)

???3.? 查詢(xún)當(dāng)前用戶(hù)被授予的角色:

???????1.? ?Select? *? from SESSION_ROLES order by ROLE??

??????????? 說(shuō)明: 這個(gè)查詢(xún)會(huì)返回當(dāng)前用戶(hù)所被授予的全部角色, 其中包括嵌套授權(quán)的

角色. 例如將DBA角色授予了一個(gè)用戶(hù),DBA角色已經(jīng)被授予的角色(例如

exp_full_database?和 imp_full_database)也會(huì)被查詢(xún)出來(lái) ???

???????2.? Select * from USER_ROLE_PRIVS???????

????4.? 查詢(xún)某一角色被賦予的系統(tǒng)權(quán)限

????????Select Privilege from ROLE_SYS_PRIVS where ROLE=&Role

??????? 輸入 role='CONNECT'

????????輸出:
?????????? PRIVILEGE
?????????? --------------------
????????? ? ALTER SESSION
??????????? CREATE CLUSTER
??????????? CREATE DATABASE LINK
??????????? CREATE SEQUENCE
??????????? CREATE SESSION
??????????? CREATE SYNONYM
??????????? CREATE TABLE
??????????? CREATE VIEW

?

????5. 查詢(xún)當(dāng)前角色被授予的角色

???????Select GRANTED_ROLE from ROLE_ROLE_PRIVS where ROLE=&ROLE

???????輸入 role= 'DBA'

???????輸出:

?????????? GRANTED_ROLE
?????????? ----------------------
??? ????? ? DELETE_CATALOG_ROLE
???????? ?? EXECUTE_CATALOG_ROLE
??? ?? ???? EXP_FULL_DATABASE
????? ?? ?? IMP_FULL_DATABASE
?? ???????? PLUSTRACE
?????? ???? SELECT_CATALOG_ROLE

???????說(shuō)明: PLUSTRACE這個(gè)角色是用于執(zhí)行SQL AUTO TRACE的, 通過(guò)執(zhí)行?$ORACLE_HOME/sqlplus/admin/plustrce.sql可以生成這個(gè)角色.

?



oracle 權(quán)限與角色


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 靖远县| 瓮安县| 长宁区| 肃宁县| 阜南县| 丰县| 光泽县| 建阳市| 巍山| 甘孜县| 安多县| 阿巴嘎旗| 化德县| 芦溪县| 安达市| 新蔡县| 赤峰市| 芦山县| 故城县| 黄陵县| 平邑县| 宣恩县| 宁夏| 广州市| 大竹县| 浪卡子县| 迁西县| 玉山县| 固始县| 罗江县| 宁德市| 巴林左旗| 安达市| 河东区| 体育| 华亭县| 西华县| 宁河县| 和田县| 永康市| 定西市|