安全管理
oracle的数据安全控制机制包括以下6个方面:
- 用户管理:为了保证只有合法身份的用户才能访问数据库,Oracle提供了3种用户机制,即数据库身份认证机制,即数据库身份认证、外部身份认证和全局身份认证。只有通过认证的用户才能访问数据库。
- 权限管理:用户登陆数据库后,只能进行其权限范围内的操作。通过给用户授权或回收用户权限,可以达到控制用户对数据库的操作的目的。
- 角色管理:通过角色方便地实现用户权限的授予与回收。
- 表空间设置和配额:通过设置用户的默认表空间、临时表空间和在表空间上的使用配额,可以有效地控制用户对数据库存储空间的使用。
- 用户资源限制:通过概要文件,限制用户对数据库资源的使用。
- 数据库审计:监视和记录用户在数据库中的活动。
1、用户管理
-
创建用户
-
基本语法
CREATE USER user_name IDENTIFIED [BY password | EXTERNALLY | GLOBALLY AS 'external_name'] [DEFAULT TABLESPACE tablesapce_name] [TEMPORARY TABLESPACE temp_tabelsapce_name] [QUOTA n K|M|UNLIMITED ON tablesapce_name] [PROFILE profile_name] [PASSWORD EXPIRE] [ACCOUNT LOCK|UNLOCK]
-
参数说明
user_name
:用于设置新建的用户名,在数据库中用户名必须是唯一的。IDENTIFIED
:用于指明用户身份认证方式。BY passwd
:用于设置用户的数据库身份认证,其中password为用户口令。EXTERNALLY
:GLOBALLY AS 'external_name'
:DEFAULT TABLESPACE tablesapce_name
:TEMPORARY TABLESPACE temp_tabelsapce_name
:PROFILE profile_name
:用于为用户指定概要文件,默认值为DEFAULT,采用系统默认的概要文件。PASSWORD EXPIFX
:用于设置用户口令的初始状态为国企,用户在首次登陆数据库时必须修改口令。ACCOUNT LOCK
:用于设置用户初始状态为锁定,默认为不锁定。ACCOUNT UNLOCK
:用于设置用户初始状态为不锁定或者解除用户的锁定状态。 -
实例
--创建一个用户user3,口令为user3,默认表空间为USERS。 CREATE USER user1 IDENTIFIED BY user1 DEFAULT TABLESPACE USERS;
--创建一个用户user4,口令为user4,默认表空间为USERS,在该表空间的配额为10MB。口令设置为过期状态,即首次连接数据库时需要修改口令。概要文件为example_profile。 CREATE USER user4 IDETIFIED BY user4 DEFAULT TABLESPACE USERS PROFILE example_profile PASSWORD EXPIRE;
-
-
修改用户
-
基本语法
ALTER USER user_name IDENTIFIED [BY password | EXTERNALLY | GLOBALLY AS 'external_name'] [DEFAULT TABLESPACE tablesapce_name] [TEMPORARY TABLESPACE temp_tabelsapce_name] [QUOTA n K|M|UNLIMITED ON tablesapce_name] [PROFILE profile_name] [PASSWORD EXPIFX] [ACCOUNT LOCK|UNLOCK]
-
参数说明
-
-
删除用户
DROP USER username [CASCADE]
2、权限管理
用户权限分类
- 系统权限:系统权限是指在数据库级别执行某种操作的权限,或针对某一类对象执行某种操作的权限。例如:
CREATE SESSION
权限、CREATE ANY TABLE
权限- 对象权限:对象权限是指对某个特定的数据库对象执行某种操作的权限。例如:对特定表的插入、删除、修改、查询权限。
将权限授予用户有两种办法:
- 直接授权:利用GRANT命令直接为用户授权。
- 间接授权:先将权限授予角色,然后再将角色授予用户。
-
系统权限
-
系统权限的授权
只有DBA才应当拥有ALTER DATABASE系统权限;
应用程序开发者一般只需要拥有CREATE TABLE,CREATE VIEW和CREATE INDEX等系统权限;
普通用户一般只需要有CREATE SESSION的权限;
只有授权时带有WITH ADMIN OPTION子句时,用户才可以将获得的系统权限再授予其它用户,即系统权限的传递性。
基本格式:
GRANT sys_priv_list TO user_list |role_list|PUBLIC [WITH ADMIN OPTION];
其中:
- sys_priv_list表示用户权限列表,以逗号分割;
- user_list表示用户列表,以逗号分割;
- role_list表示角色列表,以逗号分割;
- WITH ADMIN OPTION表示允许系统权限接受者再把此权限授予其它用户。
范例:
--为public组用户收取CREATE SESSION权限 GRANT CREATE SESSION TO PUBLIC; --为用户user2授予CREATE SESSION,CREATE TABLE,CREATE VIEW系统权限。user2获得权限后,为用户user3授予CREATE TABLE 的权限 conn system/manager; GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW TO user2 WITH ADMIN OPTION; conn user2/user2; GRANT CREATE TABLE TO user3;
-
系统权限的回收
基本语法:
REVOKE sys_priv_list FROM user_list |role_list | PUBLIUC;
- 多个管理员授予用户同一个系统权限后,其中一个管理员后手其授予该用户的系统权限时,该用户将不再拥有相应的系统权限。
- 为了回收用户系统权限的传递性(授权时使用了WITH ADMIN OPTION子句),必须先回收其系统权限,然后再重新授予其相应的系统权限。
- 如果一个用户获得的系统权限具有传递性(授权时使用了WITH ADMIN OPTION子句),并且给其他用户授权,那么该用户系统权限被回收后,洽谈瀛湖的系统权限并不受影响。
-
-
对象权限
-
对象权限的分类
对象权限 适合对象 功能说明 SELECT 表、视图、序列 查询收据操作 UPDATE 表、视图 更新收据操作 DELETE 表、视图 删除收据操作 INSERT 表、视图 插入收据操作 REFERENCES 表 在其它表中创建外键时可以引用该表 EXECUTE 存储过程、函数、包 执行PL/SQL存储过程、函数和包 READ 目录 读取目录 ALTER 表、序列 修改表或者序列结构 INDEX 表 为表创建索引 ALL 表、视图、序列 某个对象所有对象权限操作集合 -
对象权限的授权
基本语法:
GRANT obj_priv_list|ALL ON [schema.]object TO user_list|role_list [WITH GRANT OPTION];
范例:
--将scott模式下的emp表的SELECT,INSERT,UPDATE,DELETE权限授予user2用户。user2用户再将emp表的SELECT,UODATE权限授予user3用户。 conn system/manager; GRANT SELECT,INSERT,UPDATE,DELETE ON scott.emp TO user2 WITH ADMIN OPTION; conn user2/user2; GRANT SELECT.UPDATE ON scott.emp TO user3;
-
对象权限的回收
REVOKE obj_priv_list|ALL ON [schema.]object TO user_list|role_list;
-
3、角色管理
-
自定义角色
-
创建角色
CREATE ROLE role_name [NOT IDETIFIED][IDENTIFIED BY PASSWOD];
- role_name:自定义角色的名称
- NOT IDENTIFIED:用于指定该角色有数据库授权,角色生效时不需要口令。
- IDENTIFIED BY PASSWORD:用于设置角色生效时的认证口令。
-
角色权限的授予和回收
角色权限的授予和回收于用户权限的授予和回收类似,但是要注意,给角色授权时,一个角色可以授权给另一个角色,但是不能授权给其本身,不能产生循环授权。
-
修改角色
ALTER ROLE role_name [NOT IDETIFIED][IDENTIFIED BY PASSWOD];
-
角色的生效于失效
SET ROLE [role_name [IDENTIFIED BY password]]|[ALL [EXCEPT role_name]] |[NONE]
-
删除角色
DROP ROLE role_name;
-
-
利用角色进行权限管理
-
给用户或角色授予角色
GRANT role_list TO user_list | role_list;
-
从用户或角色回收角色
REVOKE role_list FROM user_list | role_list;
-
4、概要文件管理
-
创建概要文件
CREATE PROFILE profile_name LIMIT resource_paramaters | password_parameters;
-
profile_name:用于指定要创建的概要文件的名称
-
resource_parameters:用于设置资源的限制参数,表达形式为:
resource_parameters_name integer|UNLIMITED|DEFAULT
-
password_parameters:用于设置口令参数,表达形式为:
password_parameters_name integer|UNLIMITED|DEFAULT
范例:
--创建一个名为res_profile的概要文件,要求每个用户最多可以创建4个并发会话;每个会话持续时间最长为60分钟;如果会话在连续20分钟内空闲,则接受会话;每个会话的私有SQL区为100KB;每个SQL语句占用CPU的时间总量不超过10秒。 CREATE PROFILE res_profile LIMIT SESSIONS_PER_USER 4 CONNECT_TIME 60 IDLE_TIME 20 PRIVATE_SGA 100K CPU_PER_CALL 1000; --创建一个名为pwd_profile的概要文件,如果用户连续4次登陆失败,则锁定该账户,10天后该账户自动解封。 CREATE PROFILE pwd_profile LIMIT FAILED_LOGIN_ATTEMPS 4 PASSWORD_LOCK_TIME 10;
-
-
将概要文件分配给用户
CREATE USER user5 IDENTIFIED BY user5 PROFILE res_profile; ALTER USER user5 PROFILE pwd_pofile;
-
修改概要文件
-
删除概要文件
DROP PROFILE res_profile CASCADE;
-
查询概要文件