`
bjtale
  • 浏览: 29727 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Oracle角色管理

 
阅读更多

      oracle的安全管理不仅可以通过对不同用户进行权限授予与撤销(revoke命令),但是在涉及到多张表和多个用户时,这样操作会造成工具量剧增;此外,一旦为用户授予某一权限则该用户在所有环境中均具有该权限,无法限制在特定环境中授予用户活动状态的权限。因此,oracle还提供了角色管理,角色是一组系统权限和对象权限,可以对一个用户进行批量权限授予。

     使用以下命令可以创建一个角色:

SQL> create role db_mgr1;

角色已创建。

      可以通过以下命令为角色授予特定的对象权限(即对某一些用户所拥有模式对象的CRUD操作权限):

SQL> grant select on scott.emp to db_mgr1;

授权成功。

       表明db_mgr1角色将具有scott.emp表对象的select权限,随后将这个角色授予给一个特定的用户:yanh;

SQL> grant db_mgr1 to yanh;

授权成功。

SQL> conn yanh/oracle@orcl;
已连接。
SQL> select * from scott.emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-12月-80           3388                    20

      此时,使用yanh账户连接数据库将可以对scott.emp表进行查询操作,若执行insert、update、delete(DML)操作,则会出现权限不足的情况:

SQL> edit;
已写入 file afiedt.buf

  1  insert into scott.emp(empno,ename,job,sal,hiredate)
  2* values('1234','helen','Mgr','8000',sysdate)
SQL> /
insert into scott.emp(empno,ename,job,sal,hiredate)
                  *
第 1 行出现错误:
ORA-01031: 权限不足

       在oracle数据库中,拥有很多预先定义的角色,常见的有:

      1)connect,在oracle11g中,这个角色只拥有Create session权限,其存在仅仅是为了向后兼容,先前版本中还具有创建数据存储对象的系统权限。

      2)resource,这个角色具有创建数据对象(表、视图、索引等)和过程对象(PL/SQL程序片段),还具有unlimited tablespace权限。

      3)dba,拥有大多数系统权限,包含多个对象权限和角色,授予dba角色的用户可以管理数据库的大部分功能。

      4)select_catalog_role,拥有针对数据字典对象的多个对象权限,没有系统权限也没有针对用户数据的权限。

      5)schedule_admin,拥有用于管理调度服务的调度程序作业所需的系统权限。

      6)public,数据库预定义的角色,在每一个用户创建时都会授予该权限。如果将某一个对象的对象权限授予给public角色,如:

SQL> grant select on scott.dept to public;

授权成功。

      则所有用户都能查询到scott.dept表。

      可以使用以下SQL查询某个用户具有的角色权限:

SQL> select * from dba_role_privs where grantee='YANH';

GRANTEE                        GRANTED_ROLE                   ADM DEF
------------------------------ ------------------------------ --- ---
YANH                           DB_MGR1                        NO  YES

      以上结果表明,用户yanh在登录数据库服务器时即启用db_mgr1角色,拥有该角色的一切管理职能。可以使用alter命令来更改特定用户的登录启用角色:

SQL> grant connect to yanh;

授权成功。

SQL> alter user yanh default role connect;

用户已更改。

SQL> select * from dba_role_privs where grantee='YANH';

GRANTEE                        GRANTED_ROLE                   ADM DEF
------------------------------ ------------------------------ --- ---
YANH                           DB_MGR1                        NO  NO
YANH                           CONNECT                        NO  YES

       此时,用户yanh在登录时会启用connect角色,并不具有db_mgr1角色下的表数据管理职能。通过set role命令可以指定用户的角色,这样还不算安全,因为用户可以选择手动执行该命令:

SQL> select * from scott.emp;
select * from scott.emp
                    *
第 1 行出现错误:
ORA-00942: 表或视图不存在

SQL> set role db_mgr1;

角色集

SQL> select * from scott.emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-12月-80           3388                    20

     若使用以下语法来创建角色:

SQL> create role db_mgr identified using time_chk;

角色已创建。

     这表明db_mgr角色在启动时,必须调用time_chk存储过程,在这个过程调用中可以执行多次安全检查:例如时间合法性校验、网段校验等等,示例的存储过程代码如下:

create or replace procedure time_chk(errcd out varchar2) is
       invalid_time exception;
begin
  if to_char(sysdate,'HH24') not in('08','09','10','11','12','13','14','15','16','17','18') then
     errcd:='not work time!';
     raise  invalid_time;
  end if;
  exception when invalid_time then
      RAISE_APPLICATION_ERROR(-20001,errcd);
  when others then
     RAISE_APPLICATION_ERROR(-20001,'other error');
end time_chk;

 

分享到:
评论

相关推荐

    oracle角色管理

    在Oracle数据库系统中,角色管理是一项关键的安全策略,它允许管理员...熟练掌握角色的创建、权限分配、撤销以及角色的管理和维护,将使你成为一个有效的Oracle角色管理员,能够更好地保护数据并优化数据库的日常运营。

    10 oracle管理权限和角色 PPT

    Oracle数据库系统是企业级数据管理的重要工具,其权限和角色管理是确保数据安全性和系统稳定性不可或缺的部分。在Oracle中,权限和角色的概念是为用户提供访问控制机制,允许管理员精细地控制用户对数据库对象的访问...

    oracle角色大全信息

    二、角色管理 1. 创建角色:使用`CREATE ROLE`语句创建新角色,例如`CREATE ROLE my_role;` 2. 分配权限:通过`GRANT`语句将权限赋予角色,如`GRANT SELECT, INSERT ON table_name TO my_role;` 3. 分配角色:将角色...

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    1.有意从事oracle 数据库工作,担任dba角色的人员; 2. Oracle数据库设计、开发和备份等管理人员; 四、课程内容: 第一讲:Oracle体系结构 第二讲:Oracle实例中内存结构 第三讲:Oracle实例中后台进程管理 第四...

    oracle 用户、权限和角色管理

    oracle 用户、权限和角色管理,oracle 人员必看。

    Oracle用户、权限、角色管理

    ### Oracle用户、权限、角色管理深度解析 在Oracle数据库的管理中,用户、权限和角色的管理是确保数据安全和高效使用的关键环节。本文将详细阐述Oracle中的用户管理、权限设置,以及角色管理的重要概念和操作流程。...

    oracle用户管理PPT

    Oracle用户管理是数据库管理系统中的核心组成部分,它涉及到数据库的安全性、权限控制以及不同角色的划分。在Oracle中,用户管理主要包括创建...理解并掌握用户类型、权限和角色管理对于有效管理Oracle数据库至关重要。

    oracle系统自带角色说明

    在Oracle数据库中,为了方便用户管理和使用权限,系统预定义了一系列的角色,这些角色包含了特定的权限组合,可以帮助管理员快速地为不同的用户分配合适的访问权限。本文将详细介绍Oracle系统中自带的一些关键角色...

    ORACLE身份管理白皮书

    Oracle Role Manager是OIM的一个组件,专注于角色发现、设计和管理。它帮助企业减少过度权限,通过自动化的角色工程化过程,建立和维护安全、合规的角色模型。Role Manager有助于降低权限冲突,提高身份管理的效率和...

    Oracle 数据库管理教程

    第3章关注用户管理,包括创建用户、撤销和修改用户信息、用户权限管理、角色管理以及查询权限和角色相关的视图。用户管理在数据库安全方面至关重要,系统权限和对象权限控制用户对数据库的操作权限。角色是一组权限...

    ORACLe数据库管理员教程

    Oracle数据库管理员教程旨在引导读者掌握如何管理和控制Oracle数据库系统,这一关键角色被称为DBA(Database Administrator)。DBA的职责广泛,包括理解Oracle数据库的体系结构、安装和升级数据库管理系统、控制...

    Oracle启动管理命令

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中扮演着核心角色。在日常运维过程中,了解和掌握Oracle的启动和管理命令是非常重要的。本篇将详细讲解Oracle数据库的启动与关闭方法,以及...

    OracleMembershipProvider asp.net角色管理的oracle版本

    在描述中提到的"asp.net角色管理的oracle版本",意味着这个解决方案专门针对使用Oracle数据库的ASP.NET应用,提供了与角色相关的功能。角色管理是安全控制的一部分,它允许管理员将用户分组到不同的角色,然后根据...

    oracle 数据库管理员指南

    Oracle提供了多种安全机制,如审计、网络加密、访问控制和角色权限管理,以防止未授权访问和数据泄露。理解并实施这些安全策略,能有效保护数据库免受恶意攻击。 故障排查是数据库管理员的必备技能。当遇到错误日志...

    oracle数据库管理大家学习一下

    7. **权限与角色管理**:Oracle提供了严格的用户权限管理机制,包括系统权限和对象权限。通过角色可以更方便地管理大量权限。理解权限的授予、撤销和审计是确保数据库安全的基础。 8. **备份与恢复**:Oracle提供...

    Oracle创建系统角色DBA

    在Oracle数据库中,系统角色是预定义的一组权限集合,它们为数据库管理员(DBA)提供了方便的方式来管理和分配权限。DBA角色是最具权限的角色之一,通常赋予那些负责数据库全面管理的用户。当误删除了这个关键角色时...

    Oracle数据库管理指南

    此外,还会讨论数据库的安全性,如用户管理、权限与角色的分配,以及如何使用SQL*Plus进行数据库的日常维护。 数据库的备份与恢复是管理中的重要部分。Oracle 9i引入了增强的备份策略,如RMAN(恢复管理器),使得...

    Oracle Developer:第9章 禁止非法使用.pdf

    Oracle角色管理 角色是数据库中用于将一组权限组织在一起的容器。文档中提到的创建角色(CREATE ROLE)和识别角色(IDENTIFIED BY)暗示了角色的创建和管理。角色的使用可以简化权限管理,使得将权限分配给用户或...

Global site tag (gtag.js) - Google Analytics