【oracle笔记】权限与角色管理

 

1.1 RESOURCE 和 CONNECT 角色

RESOURCE 角色权限包括 CREATE CLUSTER、CREATE INDEXTYPE、CREATE OPERATOR、CREATE PROCEDURE、CREATE SEQUENCE、CREATE TABLE、CREATE TRIGGER、CREATE TYPE。

CONNECT 角色权限包括 ALTER SESSION,CREATE SESSION,CREATE CLUSTER,CREATE DATABASE LINK,CREATE SEQUENCE,CREATE SYNONYM,CREATE TABLE,CREATE VIEW。

 

1.2 系统权限

  1.2.1 授予系统权限

      GRANT privilege [, privilege,...]

      TO username [,username,...]

      [WITH ADMIN OPTION];                            --可以将拥有的系统权限授予给其他用户

   如果某个用户的系统权限具有WITH ADMIN OPTION属性,那么被这个用户授予相同权限的用户,在取消该用户的系统权限时,不会级联取消其他用户的相同权限。

   1.2.2取消系统权限

     REVOKE privilege [,privilege,...]

     FROM username [,username,...];

   1.2.3查看被授予的系统权限

     可以查询DBA_SYS_PRIVS和USER_SYS_PRIVS数据字典视图,查看授予给所有用户和角色的系统权限,授予给当前用户的系统权限。

 

1.3对象权限

  1.3.1授予对象权限

    GRANT privilege [,privilege,...] | ALL [ (column[,column,...])]

    ON objectname

    TO user | role | PUBLIC

    [WITH GRANT OPTION];

  1.3.2取消对象权限

     REVOKE privilege [,privilege,..] | ALL [(column[,column,...])]

     FROM user | role | PUBLIC

     [CASCADE CONSTRAIN];

  1.3.3

    对象权限由对象拥有者授予。

    PUBLIC指授予给数据库内的所有用户。

    取消某个用户的权限时,具有WITH GRANT OPTION属性的权限,其它被授予相同权限的用户的对象权限会被级联取消。

 

对象权限就是指在表、视图、序列、过程、函数或包等对象上执行特殊动作的权利。有九种不同类型的权限可以授予给用户或角色。如下表:

权限 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

 

 

表: 权限的数据字典视图

视图 作用
ALL_COL_PRIVS 表示列上的授权,用户和PUBLIC是被授予者
ALL_COL_PRIVS_MADE 表示列上的授权,用户是属主和被授予者
ALL_COL_RECD 表示列上的授权,用户和PUBLIC是被授予者
ALL_TAB_PRIVS 表示对象上的授权,用户是PUBLIC或被授予者或用户是属主
ALL_TAB_PRIVS_MADE 表示对象上的权限,用户是属主或授予者
ALL_TAB_PRIVS_RECD 表示对象上的权限, 用户是PUBLIC或被授予者
DBA_COL_PRIVS 数据库列上的所有授权
DBA_ROLE_PRIVS 显示已授予用户或其他角色的角色
DBA_SYS_PRIVS 已授予用户或角色的系统权限
DBA_TAB_PRIVS 数据库对象上的所有权限
ROLE_ROLE_PRIVS 显示已授予用户的角色
ROLE_SYS_PRIVS 显示通过角色授予用户的系统权限
ROLE_TAB_PRIVS 显示通过角色授予用户的对象权限
SESSION_PRIVS 显示用户现在可利用的所有系统权限
USER_COL_PRIVS 显示列上的权限,用户是属主、授予者或被授予者
USER_COL_PRIVS_MADE 显示列上已授予的权限,用户是属主或授予者
USER_COL_PRIVS_RECD 显示列上已授予的权限,用户是属主或被授予者
USER_ROLE_PRIVS 显示已授予给用户的所有角色
USER_SYS_PRIVS 显示已授予给用户的所有系统权限
USER_TAB_PRIVS 显示已授予给用户的所有对象权限
USER_TAB_PRIVS_MADE 显示已授予给其他用户的对象权限,用户是属主
USER_TAB_PRIVS_RECD 显示已授予给其他用户的对象权限,用户是被授予者
--------------------------------------------------------------------------

 

 

1.4 角色

  角色是权限或其它角色的容器,能够进行外部身份验证(OS系统身份验证)。

  使用Enterprise Manager 创建的用户,默认具有CONNECT角色。

  1.4.1创建角色

    CREATE ROLE rolename

    [NOT IDENTIFIED | IDENTIFIED

     BY password | EXTERNALLY |GLOBALLY ];

    其中 IDENTIFIED EXTERNALLY子句会对角色进行身份验证,即启用一个角色,用户必须是操作系统组的一个成员,该操作系统组的名称应当与角色相对应。同时需要初始化参数OS_ROLES设置为TRUE(默认为FALSE)。还需要在数据库驻留的服务器上创建具有如下命名规则的组:

      ora_<SID>_<ROLE>[_[d][a]]

 

   1.4.2修改角色

     ALTER ROLE rolename

     [NOT IDENTIFIED | IDENTIFIED

     BY password | EXTERNALLY | GLOBALLY];

   1.4.3为角色授予和取消权限

    系统权限

    GRANT system_priv [, system_priv,...]

    TO role | PUBLIC [,role | PUBLIC ,...]

    [WITH ADMIN OPTION];

    对象权限

    GRANT ALL [PRIVILEGES] | object_priv [ (column ,column,...)]

               [, object_priv [ (column ,column,...)]

    ON [schema_name.]object_name

    TO role | PUBLIC [,role | PUBLIC , ...];

    取消角色系统权限

    REVOKE system_priv | role_name [, system_priv | role_name, ... ]

         FROM role | PBULIC [, role | PUBLIC, ...];

    取消角色对象权限

    REVOKE ALL [PRIVILEGES] | object_priv [, object_priv , ...]

    ON [schema_naem.] object_name

    FROM role | PUBLIC [, role | PUBLIC , ...]

    [CASCADE CONSTRAINTS];

 

1.5 默认角色

   默认角色,是用户连接实例时,会自动为用户启动的角色,用户也能使用被授予给这个角色的任何权限。

   如果希望只在用户连接实例的时候,激活为用户授予的某些角色,就需要修改自动启用的默认角色集。

   ALTER USER username DEFAULT ROLE

      role [ , role ,... ] | ALL [EXCEPT role [, role, ...] ] | NONE;

   如果没用使用ALTER USER 命令火 Enterprise Manager进行指定,那么为某个用户授予的所有角色都被视为这个用户的默认角色。

 1.5.1启用与禁用角色

    SET ROLE ALL [EXCEPT role_name [, role_naem]] | NONE |

    role_name [ IDENTIFIED BY password ] [, role_name [ IDENTIFIED BY password, ...];

1.6 删除角色

  DROP ROLE role_name;

 

你可能感兴趣的:(【oracle笔记】权限与角色管理)