《 ORACLE 》 计算机技术与软件工程学院 胡斌 学习情境 6 系统安全管理( 8 学时)
按照系统的职能范围不同,可将Oracle的安全体系 结构分成三个部分; (1)数据库内部的管理:主要包括用户标识/口令 ;角色与权限等。 (2)资源管理:主要通过系统概要文件限制连接 会话等。 ( 3 )网络数据通讯管理:主要采用口令文件、数 据加密等 Oracle 高级安全技术实施。
任务 1 用户管理 新建用户,控制访问权限,控制使用资源 防范非法用户,管理用户权限 – 口令,操作系统,全局认证 1. 用户管理1. 用户管理 2. 权限管理2. 权限管理 3. 角色3. 角色 4. 资源管理4. 资源管理 5. 资源限制5. 资源限制 6. 安全信息6. 安全信息
任务 1 用户管理 Create user 用户名 identified by 密码 –[Default tablespace 表空间名 ] –[Temporary tablespace 表空间名 ] 授予权限: GRANT 权限 to 用户名 Alter user 用户名 identified by 新密码 Drop user 用户名 [cascade] 用户的默认表空间存储用户所创建的对象。 临时表空间存放数据操作结果。 何时需要锁定用户? P126 默认用户 sys 和 system
d:\oracle\product\10.2.0\db_1\bin>sqlplus sys/sys as sysdba SQL> create user test identified by test; 用户已创建 SQL> show user USER 为"SYS" --显示当前连接的用户 SQL> alter user test identified by testpw; 用户已更改。 SQL> connect test/testpw; --改变连接 已连接。 SQL> alter user test identified by testrensh; 用户已更改。 SQL>
锁定用户test: SQL>alter user test account lock; 解锁的语法格式; alter user account unlock; SQL>alter user test account lock; 解锁的语法格式; alter user account unlock;
删除数据库用户的方法有两种:一是在 SQL*Plus中以system或sys连接数据库并执行 SQL语句drop user命令来删除;另一种方法是在 控制台的安全管理器中直接删除。删除用户时, 系统要求连同该用户所拥有的数据库对象一起删 除掉。删除用户的命令格式为: SQL>drop user cascade; 若不加 cascade 选项,如删除 test 用户时,则系 统提示: ora-01922: 必须指定 cascade 以便删除 'test' 。该命令是无法恢复的,
作为 DBA ,可访问数据字典视图 dba_users 来查询所有用户的信息。每个用户可访问 视图 user_users ,
列 名定 义 username用户登录数据库的名字 user_idOracle唯一的用户标识号 password加密的口令 account_status当使用口令超期函数时,关于帐户的状态。 lock_date超期函数锁定帐户的日期 expiry_date如果设置了超期参数,口令将超期的日期。 default_tablespace为用户指定的默认表空间 temporary_tablespac e 为用户的操作,如检索或排序等,指定的默认临时 工作表空间。 created用户在数据库内创建的日期 profile指定给用户的概要文件 initial_rsrc_consumer _group 初始指定的用户组 external_name外部用户的名字
任务 2. 权限管理 系统权限 ( 表 5 - 1) 和对象权限 ( 表 5 - 2) GRANT 系统权限 TO 用户 , REVOKE 系 统权限 FROM 用户。 GRANT 对象权限 ON 对象 TO 用户 , REVOKE 对象权限 ON 对象 FROM 用户。
Oracle中的权限分为系统权限和对象权限。 系统权限可使用户在系统范围内完成特定的操 作,或在一个特定对象类型上完成特定操作。例 如,create table或insert any table都是系统权限 。在使用具有any的权限时应小心。 对象权限则是用户在某个被指定用户所属的对 象上能完成特定的操作。该对象可以是表、视图 、序列、过程、函数、包、同义词、快照、类型 、java源和java类等。对象权限可延伸到表的列 级。
系统权限有 80 多种。系统权限也包含已创 建的角色。当所授权限带有 with admin option 时, 系统权限可被授予其他用户。即 借助于 with admin option ,可使被授予系 统权限的用户将该权限传递给其他用户。 DBA 可通过视图 dba_sys_privs 查询授予用 户的系统信息。用户可查询 user_sys_privs 获得与其有关的信息。
对象权限定义了用户针对数据库中现存对 象的使用权限。简言之,对象权限是对象 拥有者给予其他用户访问其对象的权限。
◆系统权限的授予: SQL>grant to |public with admin option ; ◆对象权限的授予: SQL>grant [(column, column,...)] on [schema.] to |public with grant option ; SQL>grant [(column, column,...)] on directory to |public with grant option ; ◆撤消权限格式: SQL>revoke from |public;
所有有关数据库数据字典的基本表和视图 都存储在 sys 模式下。这些基本表和视图对 Oracle 的操作是十分重要的。为维护数据 字典的完整性, sys 模式下的表只能由 Oracle 来管理。任何其他用户或数据库管 理员不能修改数据字典。如果要改变数据 字典的存储参数,只能由拥有 sysdba 系统 权限的用户 sys 完成。
system也是在创建数据库时自动创建并被 授予DBA角色。system被用于创建显示管 理信息的表和视图,以及由Oracle工具使用 的内部表和视图。用户表不能创建在 system模式下。
sysman是默认的网格控制超级管理员以及资 料档案库数据库模式的所有者。它是在安 装期间由sys创建的,其口令由用户指定。 Oracle应用服务器实例的管理员ias_admin 的默认口令与sysman的口令相同。 用sysman帐户可管理所有其他帐户,创建企 业管理器权限和角色,完成企业管理器的 初始设置。超级管理员帐户不应该用于日 常的数据库管理任务。该帐户一旦建立就 不能删除或改名。
sysman的系统权限有8种,2个角色。系统 权限有:alter user,create any table, create user,drop user,select any dictionary,unlimited tablespace。角色为 dba,mgmt_user。其中,角色mgmt_user 拥有74个在sysman模式上的对象权限和2 个系统权限create session,create trigger。
任务 3. 角色 简化安全管理,是系统权限和对象权限的 一个集合。 CREATE ROLE 角色名 ,创建角色 GRANT 系统权限 TO 角色名 GRANT 对象权限 ON 对象名 TO 角色名 撤销用 REVOKE 权限 FROM 角色名 将角色授予用户同样使用 GRANT 语句 使用 SET ROLE 控制角色有效性
所谓角色就是相关权限的集合。DBA角色是 系统预先定义并与数据库一道创建的。该 角色包含大部分的系统权限,DBA只能在 启动数据库之后执行管理操作,但不能启 动和关闭数据库。因此,该角色应该授予 专职数据库管理员。 DBA 角色并不包含 sysdba 或 sysoper 系统权 限,这两个系统权限是管理员完成数据库 管理的特殊权限,如创建数据库,实例启 动和停止等。
系统权限可实现的操作 sysdba create database。 完成启动startup和关闭shutdown操作。 alter database:打开open,安装mount,备份backup或改变字符集 。 create spfile。 archivelog和recovery。 包括restricted session权限。 该系统权限允许用户以sys用户连接数据库。 sysoper 完成启动startup和关闭shutdown操作。 create spfile。 alter database open/mount/backup。 archivelog和recovery,不能执行不完全恢复; 包括restricted session 权限。 不具备dba角色的任何权限。 该权限允许用户完成 基本的操作任务,但是却没有查看用户数据的权 利。
Oracle 的口令文件存储在特定的位置上, 在 unix 或 linux 中,口令文件的位置是在 Oracle_Home/dbs 目录下,文件名为 orapw ;在 windows 环境下,口令文 件的位置是在 Oracle_Home\database 目 录下,文件名为 pwd.ora , SID 为实例 名。
创建口令文件需要使用位于 Oracle_Home\bin 目录下的 orapwd 命令,如 d:\oracle\product\10.2.0\db_1\bin 目 录,文件名为 orapwd.exe 。创建口令文件的语法格式为: orapwd file= password= [entries= ] 其中, :创建的口令文件名字,可包括该文件所在 的路径。 :为具有 sysdba 或 sysoper 权限的用户设置内 部连接时使用的口令。如果 sys 的口令丢失可从口令文件 着手来解决。 :用来指定希望能支持的最大 DBA 用户的数目,它相当于为 DBA 预留了内部空间。因此,该 参数应根据实际多预留一些,因为该文件是不能自动扩展 的。该参数是可选的,当支持或添加的具有 sysdba 权限的 用户超过了 entries 所规定数目后,系统会出现一个错误 提示: ora : grant 失败:口令文件 ‘d:\oracle\product\10.2.0\db_1\database\pwdrensh. ora’ 已满。
当口令文件创建完后,怎样向口令文件中添加具有sysdba或 sysoper权限的管理员用户呢? 给某个用户授予sysdba或sysoper权限,必须以sysdba身份 的DBA连接数据库。 注意:一个只有 sysdba 或 sysoper 权限而没有以 sysdba 身份 连接的用户是不能给其他用户授予 sysdba 或 sysoper 权限 的。只有以 sysdba 身份登录连接数据库,而且具有 sysdba 或 sysoper 权限的用户才能给其他用户授予 sysdba 或 sysoper 权限。 所以,当 DBA 向其他用户授权时,如 grant sysdba to rensh : 则被授权用户 rensh 的口令均被同时存储并添加在数据库 和口令文件中。当执行 alter user 命令更改用户改口令时, 口令文件中的口令也随之修改。
方法:以sysdba身份的用户连接。 d:\oracle\product\10.2.0\db_1\bin>sqlplus sys/sys as sysdba SQL> select * from v$pwfile_users;
任务 4. 资源管理 合理分配资源 使用 QUOTA 语句限制用户使用表空间的 大小 限制资源的概要文件
任务 5. 资源限制概要文件 启用资源限制, ALTER SYSTEM SET RESOURCE_LIMIT=TRUE; 创建用户概要文件, CREATE PROFILE 概要文件名 LIMIT 分配概要文件, ALTER USER 用户名 PROFILE 概要文件; 更改概要文件 口令复杂性检查 Default 概要文件 强制中止用户口令
任务 6. 安全管理 显示账号信息, DBA_USERS 显示角色信息, DBA_ROLES 显示表空间限额, DBA_TS_QUOTAS 显示概要文件信息, DBA_PROFILES
案例:创建用户完整工作任务 CREATE USER soft IDENTIFIED BY soft;-- 创建用户 soft ,密码是 soft GRANT CONNECT to soft;-- 授予连接和 创建表等基本操作 GRANT UNLIMITED TABLESPACE to soft;-- 授予无限表 空间的权限 ALTER USER soft IDENTIFIED BY soft;-- 修改密码
案例:创建用户完整工作任务 -- 创建表空间 CREATE TABLESPACE softdata DATAFILE 'f:\softdata\data1.dbf' SIZE 100K REUSE AUTOEXTEND ON NEXT 100K MAXSIZE 1M, 'f:\softdata\data2.dbf' SIZE 100K REUSE; ALTER USER soft DEFAULT TABLESPACE softdata TEMPORARY TABLESPACE temp;-- 更改用户的表空间 DROP USER soft;-- 删除用户,尽量不要 cascade 删除对 象
案例:创建用户完整工作任务 -- 创建表空间 ALTER USER soft DEFAULT TABLESPACE softdata TEMPORARY TABLESPACE temp;-- 更改用户的表空间 DROP USER soft;-- 删除用户,尽量不要 cascade 删除对 象
案例:创建用户完整工作任务 GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW,CREATE ANY INDEX,CREATE SEQUENCE,CREATE TYPE TO soft WITH ADMIN OPTION;-- 给 soft 用户授权系统 权限 GRANT INSERT,UPDATE,DELETE,SELECT ON dept TO soft ; GRANT ALL PRIVILEGES ON emp TO soft WITH GRANT OPTION; GRANT SELECT,INSERT(xm,jb,gz),UPDATE(fbu),REFERENCEs(xm) ON salary TO soft;
案例:创建用户完整工作任务 REVOKE UPDATE,DELETE ON dept FROM soft; REVOKE ALL PRIVILEGES ON emp FROM soft; REVOKE SELECT,INSERT,UPDATE,REFERENCEs ON salary FROM soft; CREATE ROLE appdev; GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW,CREATE ANY INDEX,CREATE SEQUENCE,CREATE TYPE TO appdev;
案例:创建用户完整工作任务 GRANT INSERT,UPDATE,DELETE,SELECT ON dept TO appdev; GRANT ALL PRIVILEGES ON emp TO appdev; GRANT SELECT,INSERT(xm,jb,gz),UPDATE(fbu) ON salary TO appdev; REVOKE INSERT,UPDATE,DELETE,SELECT ON dept FROM appdev;
案例:创建用户完整工作任务 REVOKE ALL PRIVILEGES ON emp FROM appdev; REVOKE SELECT,INSERT,UPDATE ON salary FROM appdev; CREATE USER hb IDENTIFIED BY hb; GRANT appdev TO hb; CREATE ROLE dbacc; GRANT CONNECT,RESOURCE TO dbacc;
案例:创建用户完整工作任务 SELECT * FROM session_roles; ATLER USER soft QUOTA 1M ON users; GRANT UNLIMITED TABLESPACE TO soft; ALTER SYSTEM SET RESOURCE_LIMIT=TRUE; CREATE PROFILE appdev LIMIT SESIONS_PER_USER 5 CPU_PER_SESION UNLIMITED CPU_PER_CALL 3000 CONNECT_TIME 30 IDLE_TIME 30 LOGICAL_READS_PER_SESION UNLIMITED LOGICAL_READS_PER_CALL 1000 PRIVATE_SGA 200K;
案例:创建用户完整工作任务 ALTER USER soft PROFILE appdev; ALTER PROFILE appdev LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1 PASSWORD_LIFE_TIME 30 PASSWORD_GRACE_TIME 5 PASSWORD_REUSE_TIME UNLIMITED PASSWORD_REUSE_MAX UNLIMITED;
案例:创建用户完整工作任务 ALTER PROFILE appdev LIMIT PASSWORD_VERIFY_FUNCTION vrify_function; ALTER USER soft IDENTIFIED BY 123; ALTER USER soft IDENTIFIED BY ABCD1234; ALTER USER soft PASSWORD EXPIRE;
案例:创建用户完整工作任务 SELECT username,account_status,default_tablespace,temporary_ tablespace,profile, FROM dba_users WHERE username IN('soft','system'); SELECT * FROM dba_roles WHERE role IN('CONNECT','DBA','APPDEV'); SELECT tablespace_name,username,bytes,max_bytes FROM dba_ts_quotas; SELECT profile,resource_name,limit FROM dba_profiles WHERE profile='APPDEV';
实训 作为管理员,需要给其他工作人员分配用户名和资源。首先就是 要确定他们的权限。创建一个用户 MANAGER 给部门经理,授 予 DBA 角色和 SYSDBA 系统权限,它可以替代 system 系统用 户。创建一个角色 ADMIN 备用,授予 DBA 角色和 SYSDBA 系 统权限,以后给自己备用。 – 建立自己命名的用户,设置表空间,赋予自己的用户相应的系 统权限和对象权限。 – 创建一个角色,并赋予系统权限和对象权限,将此角色授予刚 才建立的用户。 – 启用资源限制,创建概要文件,分配给刚才建立的用户。