Oracle 角色 配置文件

本文详细介绍了Oracle数据库中角色的概念、创建与修改方法,以及如何为角色分配系统权限和对象权限。通过实例展示了角色的创建、权限的授予与撤销过程,并解释了不同身份验证方式的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

               

--================================

--Oracle 角色、配置文件

--================================

 

一、角色

    1.角色

           权限的集合,可以分配给一个用户或其他角色,但角色不能授予自己,也不能循环授予

       角色的优点

           可以先创建角色,向该角色赋予一系列权限,然后再将该角色授予多个用户或角色

           增加或删除角色中的某一权限,被授予该角色的所有用户或角色自动地获得新增权限或删除旧的权限

           可以为角色设置密码

          

    2.创建修改角色

       CREATE ROLE role_name

       [NOT IDENTIFIED(默认) | IDENTIFIED BY password | EXTERNALLY |GLOBALLY];

 

       注:同一个数据库中角色名称必须唯一,且不能使用已存在的用户名称

           不支持with grant option 为角色授予对象权限

           支持with admin option 为角色授予系统权限或另一个角色

           使用Enterprise Manager创建某个用户时,该用户被自动授予了CONNECT角色,

           即同时具有了该角色的所有权限

          

       IDENTIFIED BY EXTERNALLY

           意味着了启用一个角色,用户必须是某个操作系统组的一个成员,该操作系统组的名称应当与角色相对应。

           当希望通过操作系统对角色进行身份认证,则需要设置OS_ROLE参数为TRUE

           且当设定了使用IDENTIFIED BY EXTERNALLY身份验证,必须在数据库驻留的服务器上按以下格式创建组

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

           d:指示<ROLE>部分指定的角色为用于用户的默认角色

           a:指示可以使用with admin option为用户授予<ROLE>部分所指定的角色      

      

       关于外部身份验证,请参考:Oracle 密码文件

      

       常用的角色

          

           角色                               被授予的权限

           DBA                                 几乎所有系统权限

           SELECT_CATALOG_ROLE                 数据字典上的对象权限,未被授予任何系统权限

           EXECUTE_CATALOG_ROLE                数据字典上的程序包、过程、函数的对象权限

           DELETE_CATALOG_ROLE                 DELETE ON SYS.AUD$

                                          DELETE ON SYS.FGA_LOG$

           EXP_FULL_DATABASE                从数据库中导出数据时查询任何表或序列、执行任何过程或类型以及修改

                                          数据字典对象的权限

           IMP_FULL_DATABASE               执行导入时,在数据库内除了sys模式之外的任何模式中创建对象的权限   

           CONNECT                             ALTER SESSION

                                          CREATE CLUSTER

                                          CREATE DATABASE LINK

                                          CREATE SEQUENCE

                                           CREATE SESSION

                                          CREATE SYNONYM

                                          CREATE TABLE

                                          CREATE VIEW

           RESOURCE                            CREATE CLUSTER

                                          CREATE INDEXTYPE

                                          CREATE OPERATOR

                                          CREATE PROCEDURE

                                          CREATE SEQUENCE

                                          CREATE TABLE

                                          CREATE TRIGGER

                                          CREATE TYPE

                                          UNLIMITED TABLESPACE (when granted)

           AQ_ADMINISTRATOR_ROLE               Advanced Queuing 对象上的对象权限

                                          CREATE EVALUATION CONTEXT

                                          CREATE RULE

                                          CREATE RULE SET

                                          DEQUEUE ANY QUEUE

                                          ENQUEUE ANY QUEUE

                                          MANAGE ANY QUEUE

           AQ_USER_ROLE                        EXECUTE ON SYS.DBMS_AQ

                                          EXECUTE ON SYS.DBMS_AQIN

                                          EXECUTE ON SYS.DBMS_AQJMS_INTERNAL

                                          EXECUTE ON SYS.DBMS_TRANSFORM

           SCHEDULER_ADMIN                     CREATE ANY JOB

                                          CREATE JOB

                                          EXECUTE ANY CLASS

                                          EXECUTE ANY PROGRAM

                                          MANAGE SCHEDULE

                                          (使用WITH ADMIN OPTION授予上述所有权限)

           PUBLIC                      不具有特殊的权限,不过为public角色授予权限时,所有用户都会继承该权限

          

           --创建不要口令的角色clerk

              SQL> CREATE ROLE clerk;

 

           --创建要口令的角色sales

              SQL> CREATE ROLE sales IDENTIFIED BY money;

 

           --创建一个需要使用外部标识(如操作系统)的角色manager

              SQL> CREATE ROLE manager IDENTIFIED EXTERNALLY;

 

           --创建后查看角色:

 

              SQL> SELECT role,password_required FROM dba_roles;

 

              ROLE                           PASSWORD

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

              CLERK                          NO

              SALES                          YES

              MANAGER                        EXTERNAL

 

       角色修改:

           ALTER ROLE rolename

           [NOT IDENTIFIED | IDENTIFIED

           BY password | EXTERNALLY | GLOBALLY];

      

           一个角色在创建后可以修改,但只能修改它的验证方法。

      

           但只有角色是使用带有with ADMIN option 选项的GRANT 语句授予的或者具

           ALTER ANY ROLE 系统权限的用户时,才可以修改这个角色

 

           --将角色clerk 的验证方法改为使用外部(如操作系统)标识

              SQL> ALTER ROLE clerk IDENTIFIED EXTERNALLY;

 

           --将角色sales 的验证方法改为不使用任何标识方法

              SQL> ALTER ROLE sales NOT IDENTIFIED;

 

           --将角色manager 的验证方法改为使用口令标识,口令为vampire

              SQL> ALTER ROLE manager IDENTIFIED BY vampires;

 

           --再查询后即可看到变化

              SELECT role,password_required FROM dba_roles

 

    3.为角色授予和取消权限

       a.角色授权 

           为角色授予系统权限语法

              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, ...];

          

           --为角色赋予权限(GRANT):

              SQL> show user;

              USER is "SYSTEM"

              SQL> CREATE ROLE manager;

 

              Role created.

             

              --赋予系统权限

              SQL> GRANT CREATE TABLE,CREATE VIEW,CREATE SESSION TO manager WITH ADMIN OPTION;

 

              Grant succeeded.

             

              --赋予对象权限

              SQL> GRANT SELECT ,INSERT ,UPDATE ON scott.emp TO manager;

 

              Grant succeeded.

 

           --查看角色的系统权限(role_sys_privs

              SQL> SELECT * FROM role_sys_privs WHERE role = 'MANAGER';

             

              ROLE                           PRIVILEGE            ADM

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

              MANAGER                        CREATE SESSION       YES

              MANAGER                        CREATE TABLE         YES

              MANAGER                        CREATE VIEW          YES

          

           --查看角色的对象权限(role_tab_privs)

              SQL> SELECT * FROM role_tab_privs WHERE role = 'MANAGER';

 

              ROLE                      OWNER                TABLE_NAME           COLUMN_NAME PRIVILEGE            GRA

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

              MANAGER                   SCOTT                EMP                              UPDATE               NO

              MANAGER                   SCOTT                EMP                              INSERT               NO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值