用户和权限管理
时间:2010-09-23 来源:swustheyi
1.概要文件Profile
创建用户时可以指定概要文件profile,用户的profile文件限制数据库的使用情况和实例使用的资源。创建用户时如果不指定profile,系统会给用户分配一个缺省的profile。
创建profile的语法如下:
CREATE PROFILE profile_name LIMIT
[SESSIONS_PER_USER max_value]
[CPU_PER_SESSION max_value]
[CPU_PER_CALL max_value]
[CONNECT_TIME max_value]
[IDLE_TIME max_value]
[LOGICAL_READS_PER_SESSION max_value]
[LOGICAL_READS_PER_CALL max_value]
[COMPOSITE_LIMIT max_value]
[PRIVATE_SGA max_bytes]
例如通过下面语句创建一个有关密码属性设置的profile文件:
CREATE PROFILE grace_5 LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_LIFE_TIME 30
PASSWORD_REUSE_TIME 30
PASSWORD_GRACE_TIME 5;
PROFILE数据字典:
select * from dba_profiles; ---可以查看每个定义的PROFILE的各个属性。
select * from dba_users; ---描述数据库的所有用户,其中PROFILE列指定了该用户使用的PROFILE。
========================================
2.权限
ORACLE的用户权限包括两种,即系统权限和对象权限。用户权限是指执行某一SQL语句或访问另一用户对象的权利。
系统权限:
ORACLE有100多种系统权限,每一种系统权限允许用户执行某一个数据库操作或某一类数据库操作。系统权限应谨慎地授予数据库用户或角色
对象权限:
对象特权允许对数据库对象的存取与维护,与系统权限类似,对象权限可以直接授予用户,也可以授予角色。
系统权限的授予命令为GRANT ,例如把创建任何表视图的权限授予scott用户:
GRANT create any view to scott;
REVOKE create any view from scott; --收回权限
2.角色
角色是将权限和角色组成组,这样可将他们同时授权给用户或同时从用户中取消。每个用户可启用或禁用角色。
ORACLE数据库自动定义了一些系统角色,例如CONNECT和RESOURCE角色分别是最终用户和开发人员所要求的基本系统权限。
通常用户设计和定义自己的角色来满足数据库安全管理的需要。
创建角色:
具有create role系统权限的用户可以使用create role语句创建角色。角色刚创建时还没有权限,需要给角色赋予权限或角色。角色不包含在任何用户的模式
中。例如:
create role role_name
identified by password
其中identified by指定了角色的授权方式,启用该角色时需要提供。用户可使用alter role语句设置或改变角色授权方式。为了改变角色的授权方式,用户
需要 拥有alter any role的系统权限或已用admin option授权该角色。
授予角色:
使用grant语句将角色授予用户或另外一个角色。例如:
grant role_name to user1;
grant role_name to user2 with admin option;
经过执行如上两条语句,user1具有了role_name 角色。user2不但具有role_name角色,还可以授权、取消或删除role_name角色。
取消角色通过revoke命令完成。例如:
revoke role_name from user1
启用角色:
如果授权一个口令保护的角色给用户,用户可以在set role语句中通过提供正确的口令启用或禁用一个角色。例如:
set role role_name identified by password可以启用角色role_name。命令set role none实现禁用所有角色。
权限和角色相关的数据字典:
select * from dba_roles; --角色及其口令状态
select * from dba_role_privs; --已被授予角色的用户
select * from dba_sys_privs; --已被授予系统权限的用户
select * from dba_tab_privs; --已被授予表权限的用户
select * from dba_col_privs; --已被授予表中列权限的用户
select * from role_sys_privs; --已被授予系统权限的角色
select * from role_tab_privs; --已被授予表权限的角色
3.用户管理:
创建用户的目标是,建立一个安全、有用的帐户,并且这个帐户要有充分的权限和正确的缺省设置值。可以使用create user命令来创建一个新的数据库帐户。该帐户创建后,在授权前它没 有任何效力,用户甚至不能注册。
所有用户帐户所需的设置值都可以在一个create user命令中指定。这些设置包括表3.1-1列出的所有参数。
下面是一个create user命令的例子:
Create user user1
Identified by password
Default tablespace users
Temporary tablespace temp
Quoto 100M on users;
在这个例子中,创建了一个叫作user1的用户,口令为password,缺省表空间为users,临时表空间为temp,使用缺省概要文件DEFAULT。
授予user1的定额为user表空间中的100MB,用户user1现在可以在users表空间中创建最多100MB的数据段。
除用户名外,create user命令中的全部参数都可以由alter user命令来更改。
撤销或改变用户:
可以用drop user命令从数据库中撤消一个用户。这个命令只有一个参数即cascade,在撤消该用户之前,它撤消用户模式中的所有对象。如果用户拥有对象,就必须指定cascade以撤消
用户。例如:
drop user user1 cascade;
引用被撤消的用户模式中对象的任何视图、同义词、过程、函数或数据包都被标上invalid。如果以后用相同的名字创建另一个用户,他从具有相同名称的前任用户继承不到任何东
西。具有alter user系统权限的用户可以使用命令alter user改变用户的属性。例如:
Alter user user1
Identified by new_password
Default tablespace data_ts
Temporary tablespace temp
Quoto 200M on users
Profile profile_name