Oracle Default Role 簡述

來源:互聯網
上載者:User

Oracle Default Role 簡述

Oracle系統許可權基礎是建立在三個維度層面上,即系統許可權(System Privilege)、對象許可權(Object Privilege)和角色許可權(Role Privilege)。系統許可權定義了使用者可以執行的某些行為操作;對象許可權定義了使用者在某個系統對象(如資料表、視圖等)的操作許可權;角色許可權更像是一個容器物件,可以將一組系統許可權、對象許可權甚至其他角色許可權容納到其中。

三個維度許可權在三個層面上構建了Oracle許可權體系架構。傳統應用系統的一種配置方式是在資料庫層面建立使用者,配置相關許可權進行操作。這樣的系統還可以在一些舊應用系統或者國外業務系統中看到。隨著Web應用的廣泛使用,Oracle許可權體系需求的複雜性其實是在不斷降低的。Web應用通常只需要串連一個Schema使用者名稱即可,使用者體系是在應用程式層面加以實現。

最近筆者遇到一個關於角色Role的問題,最後發現是一個Default Role這個經常被忽視的設定出現問題。本文主要系統介紹一下這個特點功能。

1、環境介紹

Oracle的許可權體系在過去的版本中都在不斷地發展豐富,筆者討論基於Oracle 11g,具體版本號碼為11.2.0.4。

SQL> select * from v$version;

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

PL/SQL Release 11.2.0.4.0 - Production

CORE      11.2.0.4.0    Production

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 – Production

建立一個全新的使用者。

SQL> create user test identified by test;

User created

2、Default Role概論

和系統許可權、對象許可權相比,角色許可權是比較特殊的一種權限類別型。它更像是一種組合容器,可以將其他許可權以組Group的方式進行組織。一般來說,角色許可權Role Privilege最常用的情境是簡化管理難度,實現標準化組態管理。另一個角色許可權的特點是動態賦予。系統許可權和對象許可權一旦賦予,使用者只要登入就直接獲得。而對象許可權在這個問題上是可以選擇的。

首先我們進行預設設定,對使用者test進行一系列角色賦予動作。

SQL> grant connect, resource to test;

Grant succeeded

 

SQL> grant sicspccgrole to test;

Grant succeeded

 

SQL> grant sicspctbcgrole to test;

Grant succeeded

 

SQL> grant sicspctrrole to test;

Grant succeeded

通過視圖db_role_privs,可以查看到角色與授予關係。

SQL> select * from dba_role_privs where GRANTEE='TEST';

 

GRANTEE                        GRANTED_ROLE                  ADMIN_OPTION DEFAULT_ROLE

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

TEST                          RESOURCE                      NO          YES

TEST                          SICSPCCGROLE                  NO          YES

TEST                          SICSPCTBTRROLE                NO          YES

TEST                          CONNECT                        NO          YES

TEST                          SICSPCTBCGROLE                NO          YES

TEST                          SICSPCTRROLE                  NO          YES

6 rows selected

重點關注default_role列,對應test的幾個許可權,都被授予為default_role。換而言之,一個使用者被賦予角色之後,直接就是預設角色即default role。

3、相關許可權變化

如果角色對象底層許可權發生變化,已經授權對象有什麼影響呢?

SQL> create role testrole ;

Role created

 

SQL> grant select on sics.cnu_environment to testrole;

Grant succeeded

 

SQL> grant testrole to test;

Grant succeeded

此時新角色testrole被授予為default role。

SQL> select * from dba_role_privs where GRANTEE='TEST';

 

GRANTEE                        GRANTED_ROLE                  ADMIN_OPTION DEFAULT_ROLE

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

TEST                          RESOURCE                      NO          YES

TEST                          SICSPCCGROLE                  NO          YES

TEST                          SICSPCTBTRROLE                NO          YES

TEST                          TESTROLE                      NO          YES

TEST                          CONNECT                        NO          YES

TEST                          SICSPCTBCGROLE                NO          YES

TEST                          SICSPCTRROLE                  NO          YES

 

7 rows selected

Testrole底層發生變化。

SQL> grant select on scott.emp to testrole;

Grant succeeded

角色授權關係沒有變化。

SQL> select * from dba_role_privs where GRANTEE='TEST';

 

GRANTEE                        GRANTED_ROLE                  ADMIN_OPTION DEFAULT_ROLE

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

TEST                          RESOURCE                      NO          YES

TEST                          SICSPCCGROLE                  NO          YES

TEST                          SICSPCTBTRROLE                NO          YES

TEST                          TESTROLE                      NO          YES

TEST                          CONNECT                        NO          YES

TEST                          SICSPCTBCGROLE                NO          YES

TEST                          SICSPCTRROLE                  NO          YES

7 rows selected

一些相關實驗也證明,對於角色層面許可權組的變化,不會影響到使用者與角色的關係。 

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁

相關文章

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.