用户管理与权限分配

Oracle数据库的安全保护流程可以分为3个步骤。首先,用户向数据库提供身份识别信息,即提供一个数据库账号。接下来用户还需要证明他们所给出的身份识别信息是有效的,这是通过输入密码来实现的,用户输入的密码经过数据库的核对确认用户提供的密码是否正确。最后,假设密码是正确的,那么数据库认为身份识别信息是可信赖的。此时,数据库将会在基于身份识别信息的基础上确定用户所拥有的权限,及用户可以对数据库执行什么操作。因此,为了确保数据库的安全,首要的问题就是对用户进行管理。

  每个连接到数据库的用户所具有的权限是不同的。Oracle 提供了一些特权用户,比如 sysdba 或者 sysoper,这些用户主要是用于执行数据库的维护操作,如启动、关闭、建立数据库,以及执行备份和恢复等操作。

  SYSDBA和SYSOPER的区别在于:sysdba 不仅具有sysoper 的所有权限,而且还可以建立数据库,执行不完全恢复。

  Oracle 提供了默认的特权用户SYS,当以特权用户身份登录数据库时,必须带有 as sysdba 或 as sysoper 选项

用户与模式的关系

  与用户密切关联的另一个概念就是模式,模式也称作方案(Schema)。模式实际上是用户所拥有的数据库对象的集合。在Oracle 数据库中,对象是以用户来组织的,用户与模式是一 一 对应的关系,并且两者名称相同。

  每个用户都会有自己的一个模式,用户所有的对象都属于这个模式。

  访问数据库对象时,注意事项

  a、 在同一个模式中不能存在同名的对象,但是不同模式中的对象名称则可以相同。

  b、用户可以直接访问本模式中所有对象,但如果要访问其他模式对象,则必须具有该对象的响应访问权限。例:A用户可以直接查看模式下面的emp表,但是如果用户B想要查看A模式下的emp表,则必须在emp表上具有select 的权限。

  c、当用户访问其他模式对象时,必须附加模式名作为前缀。

创建与管理用户

  Oracle的身份验证:

1 密码验证
  当一个使用密码验证机制的用户试图连接到数据库时,数据库会核实用户名是否是一个有效的数据库账户,并且提供与该用户在数据库中存储的密码相匹配的密码。
  由于用户信息和密码都存储在数据库内部,所以使用密码验证用户也称为数据库验证用户。
2 外部验证
  外部验证是指当用户试图连接到数据库时,数据库会核实用户名是否是一个有效的数据库账户,并且确认该用户已经完成了操作系统级别的身份验证。
  注意:外部验证用户并不在数据库中存储一个验证密码。
3 全局验证
  全局验证是指用户不在数据库中存储验证密码,而是通过一种高级安全选项所提供的身份验证服务来进行的。

创建用户

create user user_name identified by pass_word
[or identified exeternally]
[or identified globally as ‘CN=user’]
[default tablespace tablespace_default]
[temporary tablespace tablespace_temp]
[quota [integer k[m]] [unlimited] ] on tablesapce_ specify1
[,quota [integer k[m]] [unlimited] ] on tablesapce_ specify2
[,…]…on tablespace_specifyn
[profiles profile_name]
[account lock or account unlock]

修改用户

alter user user_name identified by pass_word
[or identified exeternally]
[or identified globally as ‘CN=user’]
[default tablespace tablespace_default]
[temporary tablespace tablespace_temp]
[quota [integer k[m]] [unlimited] ] on tablesapce_ specify1
[,quota [integer k[m]] [unlimited] ] on tablesapce_ specify2
[,…]…on tablespace_specifyn
[profiles profile_name]
[account lock or account unlock]

解锁被锁住的用户
alter user peppa account unlock
删除用户

  删除用户通过DROP USER语句完成的,删除用户后,Oracle会从数据字典中删除用户、方案及其所有对象方案,语法如下:

drop user user_name [cascade]

用户权限管理

  根据系统管理方式的不同,在Oracle数据库中将权限分为两大类:系统权限和对象权限。

  系统权限是在系统级对数据库进行存取和使用的机制,比如,用户是否能够连接到数据库系统(SESSION权限),执行系统级的DDL语句(如CREAT、ALTER、和DROP)等。
  对象权限是指某一个用户对其他用户的表、视图、序列、存储过程、函数、包等的操作权限。不同类型的对象具有不同的对象权限,对于某些模式对象,比如簇、索引、触发器、数据库链接等没有相应的实体权限,这些权限由系统权限进行管理。

权限设计原则
  • 按照最小分配原则;
  • 禁止grant dba to user;
  • 数据库用户要分为管理、应用、维护、备份四类用户;
  • 不允许使用sys和system建立数据库应用对象;
权限模型
授权操作

  在Oracle中含有200多种系统权限,并且所有这些系统特权均被列举在SYSTEM_PRIVILEGE_MAP数据目录视图中。授权操作使用GRANT命令,其语法格式如下:

grant sys_privi | role to user | role | public [with admin option]
回收系统权限

  一般用户若被授予过高的权限就可能给Oracle系统带来安全隐患。作为Oracle系统的管理员,应该能够查询当前Oracle系统各个用户的权限,并且能够使用REVOKE命令撤销用户的某些不要的系统权限,REVOKE命令的语法格式如下:

revoke sys_privi | role from user | role | public
对象授权

  与将系统权限授予用户基本相同,授予对象权限给用户或角色也使用GRANT命令,其语法格式如下:

 GRANT obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option]

  要从用户或角色中撤销对象权限,仍然要使用REVOKE命令,其语法格式如下:      用户被授予的系统权限或对象权限都被记录在Oracle的数据字典里,了解某个用户被授予哪些系统权限和对象权限是确保应用系统安全的重要工作。

 角色管理

  角色是一个独立的数据库实体,它包括一组权限。也就是说,角色是包括一个或者多个权限的集合,它并不被哪个用户所拥有。角色可以被授予任何用户,也可以从用户中将角色收回。

       使用角色可以简化权限的管理,可以仅用一条语句就能从用户那里授予或回收权限,而不必对用户一一授权。使用角色还可以实现权限的动态管理,比如,随着应用的变化可以增加或者减少角色的权限,这样通过改变角色的权限,就实现了改变多个用户的权限。

预定义角色

       所谓系统预定义角色是指在数据库安装完成后由系统自动创建的一些常用角色,这些的角色已经由系统授予了相应的系统权限,可以由数据库管理员直接使用。一旦将这些角色授予用户以后,用户便具有了角色中所包含的系统权限。

下面列出的这几个系统预定义角色是最常被用到的。

(1)CONNECT;

(2)RESOURCE;

(3)DBA;

(4)EXP_FULL_DATABASE;

(5)IMP_FULL_DATABASE。

创建角色与授权

如果系统预定义的角色不符合用户需要,那么,数据库管理员可以创建更多的角色,创建用户自定义角色可以使用CREATE ROLE语句来实现,其语法格式如下:

      create role role_name [ not identified | identified by [password] | [exeternally] | [globally]]

管理角色

在学习过管理用户(包括创建、修改、删除等操作)之后,再学习如何管理角色就相对简单多了,因为这二者之间有很多相似之处,这里仅通过一些简单实例来对角色的管理进行说明。

创建角色和用户以后,给角色和用户授予的权限被记录在Oracle的数据字典里,作为Oracle数据库管理员,需要了解角色被授予了哪些权限及用户被授予了哪些权限和角色,从而对这个数据库的所有用户进行全面的管理,如下表所示是Oracle 11g用于存放用户、角色及权限的相关数据字典。

1.1 用户

select * from dba_users;

select * from all_users;

select * from user_users;

1.2 角色

select * from dba_roles;

1.3 权限

分为系统权限与对象权限:

select * from system_privilege_map;

select * from table_privilege_map;

2 三者之间关系的字典表

这类关系字典表的表名后缀都包含"_privs"

2.1 用户与角色

用户拥有的角色:

select * from dba_role_privs;

select * from user_role_privs;

select * from role_role_privs;

role_role_privs和role_role_privs 都是dba_role_privs的子集.

dba_role_privs的grantee字段包括用户名与角色名.

user_role_privs的username字段包括操作用户的用户名.

role_role_privs的role字段只是角色名.

注意: 没有role_all_privs, 为什么没有搞懂.

2.2 用户与权限

用户拥有的系统权限:

select * from dba_sys_privs;

select * from user_sys_privs;

用户拥有的对象权限:

select * from dba_tab_privs;

select * from all_tab_privs;

select * from user_tab_privs;

select * from dba_col_privs;

select * from all_col_privs;

select * from user_col_privs;

资源配置PROFILE

  PROFILE作为用户配置文件,它是密码限制、资源限制的命名集合。PROFILE文件作为Oracle安全策略的重要组成部分,利用它可以对数据库用户进行基本的资源限制,并且可以对用户的密码进行管理。

      在安装数据库时,Oracle会自动建立名为DEFAULT的默认配置文件。如果没有为新创建的用户指定DEFAULT文件,Oracle将自动为它指定DEFAULT配置文件。初始的DEFAULT文件没有进行任何密码和资源限制。

使用profile管理密码

当操作人员要连接到Oracle数据库时,需要提供用户名和密码。对于黑客或某些人而言,他么可能通过猜测或反复实验来破解密码。为了加强密码的安全性,可以使用PROFILE文件管理密码。PROFILE文件提供了一些密码管理选项,他们提供了强大的密码管理功能,从而确保密码的安全。为了实现密码限制,必须首先建立PROFILE文件。建立PROFILE文件是使用CREATE PROFILE语句完成的,一般情况系,该语句是由DBA执行的,如果要以其他用户身份建立PROFILE文件,则要求该用户必须具有CREATE PROFILE系统权限。

使用profile管理资源

在大而复杂的多用户数据库环境中,因为用户众多,所以系统资源可能会成为影响性能的主要瓶颈,为了有效地利用系统资源,应该根据用户所承担任务的不同为其分配合理资源。PROFILE不仅可用于管理用户密码,还可以用于管理用户资源。需要注意,如果是使用PROFILE管理资源,必须将RESOURCE_LIMIT参数设置为TRUE,以激活资源限制。由于该参数是动态参数,所以可以使用ALTER SYSTEM语句进行修改。

维护profile文件

在Oracle中,PROFILE文件也是一种数据资源。DBA也可以使用相应的语句对其进行管理,包括修改配置文件、删除配置文件按、激活或禁用配置文件。

显示profile信息

1.显示用户的资源配置信息

      建立或修改用户时,可以为用户分配PROFILE文件,如果没有为用户分配PROFILE文件,Oracle会自动将DEFAULT分配给用户。通过查询数据字典视图DBA_USERS,可以显示用户使用的PROFILE文件。 

2.显示指定PROFILE文件的资源配置信息

      建立或修改PROFILE文件时,Oracle将会PROFILE参数存放在数据字典中。通过查询DBA_PROFILES,可以显示PROFILE的密码限制、资源限制信息。

      revoke obj_privi | all on schema.object from user | role | public cascade constraints

  • 41
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值