Oracle 安全性一
创建和管理数据库用户账户
用户账户属性
用户账户拥有很多在创建账户时定义的属性。这些属性将应用于连接到账户的会话,在会话运行期间,DBA或会话可以更改其中一些属性。
- 用户名
- 身份验证方法
- 默认表空间
- 表空间配额
- 临时表空间
- 用户配置文件
- 账户状态
在创建用户时,用户名和身份验证方法是必需的,其他的都有默认值。
- 用户名 数据库中的用户名必须是唯一的,必须以字母开头,字符数不能超过30个,只能包含字母、数字、$和_。用户名不能是保留字。字母区分大小写,但所有字母将自动转换为大写字母。如果在双引号中指定用户名,可以不遵守这些规则(长度除外),以后必须使用双引号连接到账户。
- 默认表空间和配额 每个用户账户都有默认的表空间。用户创建的任何模式对象(如表或索引)将保存在此表空间中。用户可以拥有获得配额的任何表空间上的对象,但除非在创建对象时指定另一个表空间,否则,对象就放在用户的默认表空间中。如果在创建用户时未指定默认表空间,数据库范围的默认表空间将应用于所有用户账户。可以在创建数据库时设置默认表空间,也可以以后使用下面的语法进行更改:ALTER DATABASE DEFUALT TABLESPACE tablespace_name; 如果创建数据库时未指定默认表空间,则将SYSTEM设置为默认表空间。“配额”是表空间中用户允许占用的空间量。到达配额之前,用户可以创建对象,并为其分配区间。如果表空间中的配额已经用尽,则将无法创建任何对象。配额可以随时更改。如果将用户配额限制为低于其已拥有的对象大小(甚至缩减为0),对象将生存下来,且仍可用,但不允许变大。要创建段,用户必须具有执行CREATE TABLE的权限,而且拥有在其中创建表的表空间上的配额。
- 临时表空间 永久对象(如表)存储在永久表空间中,而临时对象存储在临时表空间中。如果会话为执行某些操作,需要的空间量超出了会话PGA的可用空间量,则需要临时表空间中的空间,为每个用户账户都会分配临时表空间,但连接到该账户的所有用户会话将共享此临时表空间。不需要为用户授予临时表空间上的配额。其原因是,临时表空间中的对象并不归用户真正拥有,而是属于SYS用户,SYS用户拥有所有表空间上的无限配额。要更改用户的临时表空间(将影响连接到账户的所有未来会话),请使用ALTER USER命令:ALTER USER username TEMPORARY TABLESPACE tablespace_name;
- 账户状态 每个用户账户都有一定的状态,如DBA_USERS的ACCOUNT_STATUS列所示。有5种可能的状态:
-
- 打开(OPEN) 账户可供使用
- 锁定(LOCKED) 表示DBA故意锁定账户,任何用户都不能连接到锁定的账户。
- 过期(EXPIRED) 表示口令生命周期已经终结。口令只拥有有限的生命周期。在重置口令之前,任何用户都不能连接到EXPIRED账户。
- 正常过期(EXPIRED(GRACE))这表示“正常时间段(grace period)”生效。口令在生命周期结束时并不立即过期:可以配置一个正常时间段,在此期间,连接到相应账户的用户有机会更改口令。
- 超时锁定(LOCKED(TIMED)) 这表示由于登录尝试失败,账户已被锁定。可以将账户配置为:在错误口令出现一定的次数后,账户将自动锁定。
要锁定账户和解除账户的锁定,请使用以下命令:
ALTER USER username ACCOUNT LOCK;
ALTER USER username ACCOUNT UNLOCK;
要强制用户更改口令,请使用以下命令:
ALTER USER username PASSWORD EXPIRE;
这将立即开启正常阶段,强制用户在下次尝试登录时更改口令。不存在诸如“alter...unexpired”的命令,要使账户再次完全运行,唯一的途径是重置口令。
身份验证方法
用户账户必须具有身份验证方法:数据库可以借助这些方法,确定查实创建会话(连接到账户的会话)的用户是否有权这么做。最简单的技术是提供一个与数据库中存储的口令匹配的口令,除此之外,还有其他方法:
- 操作系统身份验证
- 口令文件身份验证
- 口令身份验证
- 外部身份验证
- 全局身份验证
前两项技术仅供管理员使用,最后一项技术要求使用LDAP目录服务器。LDAP目录服务器是Oracle Internet Directory,作为Oracle Fusion Middleware Suite的一部分发布。
创建账户
CREATE USER命令包含两个必需的参数:用户名和身份验证方法。它可选地接收指定默认表空间和临时表空间的子句、一个或多个配额子句、命名配置文件以及锁定账户和使口令过期的命令。
1 create user scott identified by tiger 2 default tablespace users temporary tablespace temp 3 quota 100m on users,quota unlimited on example 4 profile developer_profile 5 password expire 6 account unlock;
只有第一行是必需的,其他的都具有默认设置。
- 提供用户名,以及用于口令验证的口令。
- 提供默认表空间和临时表空间
- 设置默认表空间和另一个表空间上的配额。
- 为用于口令和资源管理的配置文件命名。
- 强制用户立即更改口令。
- 使账户变得可用。
除名称外,可以使用ALTER USER命令调整账户上的每个属性。
删除账户:drop user scott;
只有用户不拥有任何对象时,此命令才能成功,即要求模式是空的。如果不希望首先确定拥有的所有对象并删除它们,则可以指定CASCADE将这些与用户一起删除:
drop user scott cascade;
授予和撤销权限
系统权限
常用的权限如下:
- 创建会话(CREATE SESSION)
- 受限制会话(RESTRICTED SESSION)
- 更改数据库(ALTER DATABASE)
- 更改系统(ALTER SYSTEM)
- 创建表空间(CREATE TABLESPACE)
- 创建表(CREATE TABLE)
- 授予任何对象权限(GRANT ANY OBJECT PRIVILEGE)
- 创建任何表(CREATE ANY TABLE)
- 删除任何表(DROP ANY TABLE)
- 插入任何表、更新任何表、删除任何表(INSERT ANY TABLE,UPDATE ANY TABLE,DELETE ANY TABLE)
- 选择任何表(SELECT ANY TABLE)
权限分析
重要的过程:
- dbms_privilege_capture.create_capture
- dbms_privilege_capture.enable_capture
- dbms_privilege_capture.disable_capture
- dbms_privilege_capture.generate_result
重要的视图:
- dba_used_privs
- dba_unused_privs
创建和管理配置文件
口令配置文件的限制
使用配置文件(profile)可以实施口令策略。