12用户管理与权限分配

12.1 用户与模式的关系

这里所说的用户(User),更准确的说是账户。它是Oracle数据库基本访问控制机制,当连接到Oracle数据库时,操作人员必须提供正确的用户名和密码。

连接数据库的用户所具有的权限是不同的。Oracle提供了一些特权用户,比如SYSDBA或SYSOPER,这类用户主要用于执行数据库维护操作,区别在于SYSDBA不仅具备SYSOPER的所有权限,还可以建立数据库,执行不完全恢复。

与用户密切关联的一个概念是模式也称为方案(Schema),模式是用户所拥有的数据库对象的合集,在Oracle数据库中,对象是以用户来组织的,用户与模式是一一对应的关系

访问数据库对象时,需要注意以下几点:

  • 同一个模式中不能存在同名的对象,但不同模式中的对象名称可以相同。
  • 用户可以直接访问其他模式的对象,需要具有该对象的相应访问权限。
  • 当用户要访问其他模式的对象时,必须附加模式名作为前缀。

12.2 创建与管理用户

创建用户并授予权限时Oracle系统管理员的基本任务之一。

12.2.1 身份验证分类

Oracle为用户提供了3种身份验证方式:密码验证、外部验证和全局验证。

1、密码验证。

当一个使用密码验证机制的用户试图连接到数据库时,数据库会核实用户名是否是一个有效的数据库账户,并且验证密码与该用户在数据库中存储的密码是否相同。由于用户信息和密码都存储在数据库内部,所以也称为数据库验证用户。

2、外部验证。

指当用户试图连接数据库时,数据库会核实用户名是否是一个有效的数据库账户,并且确认该用户是否已经完成了操作系统级别的身份验证。外部验证并不在数据库中存储一个密码。

3、全局验证。

指用户不在数据库中存储验证密码,而是通过一种高级安全选项所提供的身份验证服务来进行。

除非特别说明,以下所创建和使用的用户都是密码验证用户。其余两种很少使用。

12.2.2 创建用户

(|表示或者,{}表示其中内容不可分割,[]表示其中内容可选)

CREATE USER username
{IDENTIFIED BY password}|{IDENTIFIED EXTERNALLY}|{IDENTIFIED GLOBALLY AS 'CN=user'}
[DEFAULT TABLESPACE tablespace_name]
[TEMPORARY TABLESPACE tablespace_name]
[QUOTA {number K|M|G}|UNLIMITED] ON tablespace_name1
[,QUOTA {number K|M|G}|UNLIMITED] ON tablespace_name2
[,]ON tablespace_namen
[PROFILES profile_name]
[ACCOUNT LOCK|UNLOCK];

对以上参数讲解:

username:要创建的用户名。

password:要创建用户的密码。

IDENTIFIED BY password:表示创建密码验证用户,这种情况下会将密码存储在数据库中。

IDENTIFIED EXTERNALLY:表示创建外部验证用户,这种情况下要求该用户必须与操作系统中所定义的用户名相同。?这里的单词是externally还是exeternally,有没有by,没有验证过?

IDENTIFIED GLOBALLY AS ‘CN=user’:表示创建全局验证用户,由Oracle安全域中心服务器验证,CN名字表示用户的外部名。

[DEFAULT TABLESPACE tablespace_name]:指定该用户在创建对象时的默认表空间。默认为应用系统的默认永久表空间,见8.4.1设置默认表空间。

[TEMPORARY TABLESPACE tablespace_name]:指定该用户在创建对象时的临时表空间。默认为系统的默认临时表空间,见8.6.2临时表空间基本操作。

[QUOTA (number K|M|G)|UNLIMITED] ON tablespace_name1]:指定该用户在指定表空间中允许占用的最大空间,默认在默认表空间中无限制?。如果要禁止某个用户使用某个表空间,可以通过此设置该表空间的使用限额为0

[PROFILES profile_name]:指定资源文件的名称,默认??。

[ACCOUNT LOCK|UNLOCK]:指定用户是否锁定,默认不锁定。

注意:初始创建的用户没有任何权限,不能执行任何数据库操作。为了使用户可以连接到数据库,必须授予其create session权限(或赋予角色)。

12.2.3 修改用户

可以修改用户口令、修改用户默认表空间、修改临时表空间、修改磁盘配额及资源限制等,修改用户的语法与创建用户的语法基本相似,只是把创建用户语法中的create关键字替换成alter。在此不做详细列举了( • ̀ω•́ )✧

12.2.4 删除用户

删除用户后,Oracle会从数据字典中删除用户及其所有对象。

DROP USER username [CASCADE];

[CASCADE]:级联删除选项,如果用户包含数据库对象,必须加cascade选项连同该用户的所有对象一起删除。

12.3 用户权限管理

创建用户后,要使用该用户连接到Oracle系统并使用其资源,必须使用具有DBA角色的用户对新创建的用户进行授权。

12.3.1 权限简介

Oracle数据库中权限分为两大类:系统权限和对象权限

系统权限指系统级对数据库进行存取和使用的机制。比如,session权限、执行DDL(Data Definition Language)语句的权限

对象权限指某一个用户对其他用户的表、视图、序列、存储过程、函数、包等操作权限,不同类型的对象具有不同的对象权限;对于某些模式对象,比如簇、索引、触发器、数据库链接等没有相应的实体权限,这些权限由系统权限进行管理。

12.3.2 系统权限授权

Oracle 11g含有200多种系统特权,列举在SYSTEM_PRIVILEGE_MAP数据目录视图中。授权操作使用GRANT命令。(|表示或者,{}表示其中内容不可分割,[]表示其中内容可选)

GRANT (sys_privi1[,sys_privi2,])|rolename1 TO username|rolename2|PUBLIC [WITH ADMIN OPTION];

sys_privi:指Oracle系统权限名称,是一组约定的保留字。比如,“create table”为创建表权限。

rolename:角色。

username:被授予的用户名。

PUBLIC:保留字,指Oracle系统的所有用户。

[WITH ADMIN OPTION] :指被授予的用户可以再将权限授予另外用户。

常用的系统权限:connect、resource、create table、create session。

12.3.3 系统权限回收

回收权限使用REVOKE命令。(|表示或者,{}表示其中内容不可分割,[]表示其中内容可选)

REVOKE (sys_privi1[,sys_privi2,])|rolename1 FROM username|rolename2|PUBLIC;

sys_privi:指Oracle系统权限名称,是一组约定的保留字。

rolename:角色。

username:被回收权限的用户名。

PUBLIC:保留字,指Oracle系统的所有用户。

注意:如果数据库管理员给用户A授予系统权限时带有WITH ADMIN OPTION选项,则该用户A有权将系统权限再次授予另外的用户B。在这种情况下,如果数据库管理员使用REVOKE命令回收用户A的系统权限,则用户B的系统权限仍然有效

12.3.4 对象权限授权

与系统权限授权基本相同。(|表示或者,{}表示其中内容不可分割,[]表示其中内容可选)

GRANT (obj_privi1[,obj_privi2,])|ALL
ON username1.obj_name TO username2|rolename|PUBLIC
[WITH ADMIN OPTION]|[WITH HIERARCHY OPTION];

obj_privi:指Oracle对象权限名称,是一组约定的保留字。

username1.obj_name:某模式的对象名。指允许username2用户使用obj_privi权限操作username1.obj_name对象。

username2:被授予权限的用户名。

rolename:角色。

PUBLIC:保留字,指Oracle系统的所有用户。

[WITH ADMIN OPTION] :指被授予的用户可以再将权限授予另外用户。

[WITH HIERARCHY OPTION]:在对象的子对象(比如在视图上再创建视图)上授权给用户。

常用的对象权限:select、insert、delete、update。

12.3.5 对象权限回收

与系统权限回收基本相同。(|表示或者,{}表示其中内容不可分割,[]表示其中内容可选)

REVOKE (obj_privi1[,obj_privi2,])|ALL
ON username1.obj_name FROM username2|rolename|PUBLIC
CASCADE CONSTRAINTS;

obj_privi:指Oracle对象权限名称,是一组约定的保留字。

username1.obj_name:某模式的对象名。指允许username2用户使用obj_privi权限操作username1.obj_name对象。

username2:被回收权限的用户名。

rolename:角色。

PUBLIC:保留字,指Oracle系统的所有用户。

CASCADE CONSTRAINTS:表示有关联关系的权限也被撤销。

注意:如果数据库管理员给用户A授予对象权限时带有WITH ADMIN OPTION选项,则该用户A有权将对象权限再次授予另外的用户B。在这种情况下,如果数据库管理员使用REVOKE命令回收用户A的对象权限,则用户B的对象权限也被回收(注意区别于系统权限回收情况)

12.3.6 查询用户权限

列举几个常用的数据字典:

数据字典表说明
dba_users数据库用户基本信息表
dba_sys_privs已授予用户或角色的系统权限
dba_tab_privs数据库对象上的所有权限
user_sys_privs登录用户可以查看自己的系统权限
role_sys_privs登录用户查看自己的角色
all_tables用户自己可以查询的基本信息
user_tab_privs用户自己将哪些基本权限授予哪些用户
all_tab_privs哪些用户给自己授权

12.4 角色管理

由于Oracle权限设置十分复杂,权限分类很多,这就为数据库管理员带来困难,而角色就是简化权限管理的一种数据库对象。

12.4.1 角色简介

角色是包含一个或多个权限的集合,它并不被用户所拥有。角色可以被授予任何用户,也可以从用户中将角色收回。一个用户至少被授予一个以上的预定义角色时才能使用Oracle系统资源。以下为示例图。

权限角色与用户

12.4.2 预定义角色

指数据库安装完成后由系统自动创建的一些常用角色,这些角色已经由系统授予了相应系统权限,可以直接使用。以下列出几个常用角色:CONNECT、RESOURCE、DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE。其中DBA包含了所有权限。

12.4.3 创建角色与授权

1、创建角色

语法格式

(|表示或者,{}表示其中内容不可分割,[]表示其中内容可选)

CREATE ROLE rolename
[{NOT IDENTIFIED}|{IDENTIFIED {BY password}|{BY EXTERNALLY}|GLOBALLY}];

rolename:角色名。

IDENTIFIED {BY password}:角色通过口令验证。

IDENTIFIED {BY EXTERNALLY}:角色通过操作系统验证。?这里的单词是externally还是exeternally,有没有by没有验证过?

IDENTIFIED GLOBALLY:角色由全局用户使用,该用户通过Oracle安全域中心服务器验证。

2、授权角色系统权限

GRANT sys_privi1 [,sys_privi2,...] TO rolename;

3、授权用户角色

GRANT rolename TO username;

12.4.4 管理角色

1、查看角色包含的权限

使用 role_sys_privs 数据字典查询。

2、修改角色密码

包含取消角色密码和修改角色密码两种情况。

ALTER ROLE rolename NOT IDENTIFIED; --取消角色密码
ALTER ROLE rolename IDENTIFIED BY password; --修改角色密码

3、启用角色

角色创建完成后必须要启用,不启用的角色即使授予了用户,用户也无法获得相应权限。

SET ROLE rolename [IDENTIFIED BY password];
--如果该角色创建时带有密码验证,则必须使用identified子句验证

12.4.5 角色与权限查询

通过dba_roles数据字典查询角色。

数据字典说明
dba_col_privs数据库列上的所有权限
dba_role_privs显示已经授予用户或其他角色的角色
dba_tab_privs数据库对象上的所有权限
dba_sys_privs已授予用户或角色的系统权限

12.5 资源配置PROFILE

PROFILE配置文件,是密码限制、资源限制的命名集合。

PROFILE作为Oracle安全策略的重要组成部分,可以对数据库用户进行基本的资源限制,对用户的密码进行管理。安装数据库时,Oracle会自动创建名为DEFAULT的默认配置文件(此文件没有任何密码和资源限制)。如果没有为新创建的用户指定DEFAULT配置文件,Oracle将为它自动指定DEFAULT配置文件。

PROFILE配置文件进行密码和资源管理时,密码管理总是处于被激活状态,资源管理需要手动激活

12.5.1 显示PROFILE

1、通过查询数据字典视图dba_users,可以显示用户使用的PROFILE文件名。

SELECT PROFILE FROM dba_users WHERE USERNAME='username';
--修改相应用户名,查询此用户使用的PROFILE文件名

2、通过查询数据字典视图dba_profiles,可以显示PROFILE密码限制资源限制信息。

SELECT * FROM dba_profiles WHERE PROFILE='profile_name';
--修改相应PROFILE文件名,查询PROFILE文件信息

12.5.2 使用PROFILE

1、创建PROFILE文件

CREATE PROFILE profile_name LIMIT
resource_name1 parameter1
[resource_name2 parameter2 ...];
--resource_name为资源参数名,parameter为相应的参数

2、指定PROFILE文件

ALTER USER username PROFILE profile_name;
--指定username用户使用profile_name配置文件

3、使用PROFILE管理密码

可以实现4种密码管理功能:账户锁定、密码过期时间、密码历史、密码复杂度。

(1)账户锁定

FAILED_LOGIN_ATTEMPTS:用户登录到数据库时允许失败的次数,单位为次数。

PASSWORD_LOCK_TIME:用户被锁定的时间,单位为天。未设定时,默认情况下会一直锁定,需用DBA用户解锁。

(2)密码过期时间

PASSWORD_LIFE_TIME:用户密码有效时间,单位为天。

PASSWORD_GRACE_TIME:用户密码失效的“宽限时间”,单位为天。

(3)密码历史

PASSWORD_REUSE_TIME:用户密码可重用时间,单位为天。

PASSWORD_REUSE_MAX:用户密码在能够被重新使用前,必须改变的次数,单位为次数。

注意:这两个只能使用其中一个,并将另一个参数设置为UNLIMITED

(4)密码复杂度

PASSWORD_VERIFY_FUNCTION:用户密码使用的校验函数,参数为校验函数名。

校验函数保存在utlpwdmg.sql文件中。

4、使用PROFILE管理资源

如果使用PROFILE管理资源,必须将RESOURCE_LIMIT参数设置为TRUE,以激活资源限制。

SHOW PARAMETER RESOURCE_LIMIT;
--查看RESOURCE_LIMIT参数值
ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;
--修改RESOURCE_LIMIT参数值为TRUE

12.5.3 维护PROFILE

1、修改PROFILE文件

ALTER PROFILE profile_name LIMIT
resource_name1 parameter1
[resource_name2 parameter2 ...];
--resource_name为资源参数名,parameter为相应的参数

对配置文件所做的修改只有在用户开始新会话时才会生效。

例:

alter profile password_life_time limit
cpu_per_session 20000
sessions_per_user 10
cpu_per_call 500
password_life_time 180
failed_login_attempts 10;

2、删除PROFILE文件

DROP PROFILE profile_name [CASCADE];

如果要删除的配置文件已指定给用户,必须使用CASCADE关键字。如果用户使用的配置文件被删除,则Oracle将自动为用户重新指定DEFAULT配置文件。

12.5.4 PROFILE资源参数说明

PROFILE配置文件中部分资源参数名及说明。如果不想指定参数则参数设为UNLIMITED。

resource_name参数类型说明
SESSION_PER_USER整数值用户可以同时连接的会话数量,单位为个
CPU_PER_SESSION整数值用户在一次会话期间使用CPU的时间,单位为百分之一秒
CPU_PER_CALL整数值用户每条SQL语句使用CPU的时间,单位为百分之一秒
LOGICAL_READS_PER_SESSION整数值每个会话读取的数据块数量,单位为个
CONNECT_TIME整数值用户连接到数据库的最长时间,单位为分钟
IDLE_TIME整数值用户会话连接到数据库的最长时间,单位为分钟
FAILED_LOGIN_ATTEMPTS整数值用户登录到数据库时允许失败的次数,单位为次数
PASSWORD_LOCK_TIME整数值用户被锁定的时间,单位为天
PASSWORD_LIFE_TIME整数值用户密码有效时间,单位为天
PASSWORD_GRACE_TIME整数值用户密码失效的“宽限时间”,单位为天
PASSWORD_REUSE_TIME整数值用户密码可重用时间,单位为天
PASSWORD_REUSE_MAX整数值用户密码能被重新使用前必须改变的次数,单位为次数
PASSWORD_VERIFY_FUNCTION函数名用户密码使用的校验函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值