实验目的
掌握Oracle的安全管理方法。
实验内容
(1) 概要文件的建立、修改、查看、删除操作。
(2) 用户的建立、修改、查看、删除操作。
(3) 权限的建立、修改、查看、删除操作。
(4) 角色的建立、修改、查看、删除操作。
实验步骤
1、安全管理
(1) 创建概要文件。
① 利用企业管理器创建概要文件“ygbx+学号_pro”,要求在此概要文件中CPU/会话为1000,读取数/会话为2000,登录失败次数为3,锁定天数为10。
SQL> create profile "ygbx+1215115130_pro" limit
2 cpu_per_session 1000
3 logical_reads_per_call 2000
4 failed_login_attempts 3
5 password_lock_time 10
6 ;
配置文件已创建
② 利用SQL*Plus或iSQL*Plus,创建概要文件“ygbx+学号_pro_sql”,其结构与“ygbx+学号_pro”一致。
SQL> create profile "ygbx+1215115130_pro_sql" limit
2 cpu_per_session 1000
3 logical_reads_per_call 2000
4 failed_login_attempts 3
5 password_lock_time 10
6 ;
配置文件已创建
2) 查看概要文件。
① 利用企业管理器查看概要文件“ygbx+学号_pro”的信息。
SQL> desc dba_profiles;
名称 是否为空? 类型
----------------------------------------- -------- -----------------
PROFILE NOT NULL VARCHAR2(30)
RESOURCE_NAME NOT NULL VARCHAR2(32)
RESOURCE_TYPE VARCHAR2(8)
LIMIT VARCHAR2(40)
② 利用SQL*Plus或iSQL*Plus,从DBA_PROFILES数据字典中查看“ygbx+学号_pro_sql”概要文件的资源名称和资源值等信息。
SQL> set linesize 500
SQL> select * from dba_profiles
2 where profile='ygbx+1215115130_pro_sql';
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------ -------------------------------- -------- ---------------
ygbx+1215115130_pro_sql COMPOSITE_LIMIT KERNEL DEFAULT
ygbx+1215115130_pro_sql SESSIONS_PER_USER KERNEL DEFAULT
ygbx+1215115130_pro_sql CPU_PER_SESSION KERNEL 1000
ygbx+1215115130_pro_sql CPU_PER_CALL KERNEL DEFAULT
ygbx+1215115130_pro_sql LOGICAL_READS_PER_SESSION KERNEL DEFAULT
ygbx+1215115130_pro_sql LOGICAL_READS_PER_CALL KERNEL 2000
ygbx+1215115130_pro_sql IDLE_TIME KERNEL DEFAULT
ygbx+1215115130_pro_sql CONNECT_TIME KERNEL DEFAULT
ygbx+1215115130_pro_sql PRIVATE_SGA KERNEL DEFAULT
ygbx+1215115130_pro_sql FAILED_LOGIN_ATTEMPTS PASSWORD 3
ygbx+1215115130_pro_sql PASSWORD_LIFE_TIME PASSWORD DEFAULT
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------ -------------------------------- -------- ---------------
ygbx+1215115130_pro_sql PASSWORD_REUSE_TIME PASSWORD DEFAULT
ygbx+1215115130_pro_sql PASSWORD_REUSE_MAX PASSWORD DEFAULT
ygbx+1215115130_pro_sql PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
ygbx+1215115130_pro_sql PASSWORD_LOCK_TIME PASSWORD 10
ygbx+1215115130_pro_sql PASSWORD_GRACE_TIME PASSWORD DEFAULT
已选择16行。
③ 利用SQL*Plus或iSQL*Plus,从查看“ygbx+学号_pro_sql”概要文件中锁定天数的值。
SQL> set linesize 500
SQL> select * from dba_profiles
2 where profile='ygbx+1215115130_pro_sql';
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------ -------------------------------- -------- ---------------
ygbx+1215115130_pro_sql COMPOSITE_LIMIT KERNEL DEFAULT
ygbx+1215115130_pro_sql SESSIONS_PER_USER KERNEL DEFAULT
ygbx+1215115130_pro_sql CPU_PER_SESSION KERNEL 1000
ygbx+1215115130_pro_sql CPU_PER_CALL KERNEL DEFAULT
ygbx+1215115130_pro_sql LOGICAL_READS_PER_SESSION KERNEL DEFAULT
ygbx+1215115130_pro_sql LOGICAL_READS_PER_CALL KERNEL 2000
ygbx+1215115130_pro_sql IDLE_TIME KERNEL DEFAULT
ygbx+1215115130_pro_sql CONNECT_TIME KERNEL DEFAULT
ygbx+1215115130_pro_sql PRIVATE_SGA KERNEL DEFAULT
ygbx+1215115130_pro_sql FAILED_LOGIN_ATTEMPTS PASSWORD 3
ygbx+1215115130_pro_sql PASSWORD_LIFE_TIME PASSWORD DEFAULT
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------ -------------------------------- -------- ---------------
ygbx+1215115130_pro_sql PASSWORD_REUSE_TIME PASSWORD DEFAULT
ygbx+1215115130_pro_sql PASSWORD_REUSE_MAX PASSWORD DEFAULT
ygbx+1215115130_pro_sql PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
ygbx+1215115130_pro_sql PASSWORD_LOCK_TIME PASSWORD 10
ygbx+1215115130_pro_sql PASSWORD_GRACE_TIME PASSWORD DEFAULT
已选择16行。
(3) 修改概要文件。
① 利用企业管理器,修改“ygbx+学号_pro”概要文件,将CPU/会话改为4000,连接时间为60。
SQL> alter profile"ygbx+1215115130_pro" limit
2 cpu_per_session 4000
3 connect_time 60;
配置文件已更改
② 利用SQL*Plus或iSQL*Plus,修改“ygbx+学号_pro_sql”概要文件,将并行会话设为20,读取数/会话设为DEFAULT。
SQL> alter profile"ygbx+1215115130_pro_sql" limit
2 sessions_per_user 20
3 logical_reads_per_seesion default;
(4) 创建用户。
① 利用企业管理器,创建“ygbxuser+学号”用户,密码为“user+学号”,默认表空间为“ygbx_tbs”。
SQL> create user "ygbxuser_1215115130" identified by "user+1215115130";
用户已创建。
② 利用SQL*Plus或iSQL*Plus,创建“ygbxuser+学号_sql”用户,密码为“user+学号+sql”,该用户处于锁状态。
SQL> create user "ygbxuser_1215115130_sql" identified by "user+1215115130+sql";
用户已创建。
③ 利用SQL*Plus或iSQL*Plus,将“ygbx+学号_pro”概要文件赋予 “ygbxuser+学号”用户。
SQL> alter user "ygbxuser_1215115130" profile "ygbx+1215115130_pro"
2 ;
用户已更改。
④ 利用SQL*Plus或iSQL*Plus,将“ygbx+学号_pro_sql”概要文件赋予 “ygbxuser+学号_sql”用户。SQL> alter user "ygbxuser_1215115130_sql" profile "ygbx+1215115130_pro_sql"
2 ;
用户已更改。
(5) 查看用户。
① 利用企业管理器,查看“ygbxuser+学号”用户的信息。
② 利用SQL*Plus或iSQL*Plus,查看“ygbxuser+学号_sql”用户的信息,并查看该用户验证的方式。
③ 利用SQL*Plus或iSQL*Plus,从DBA_USERS数据字典中查看“ygbxuser+学号_sql”用户的默认表空间和临时表空间的信息。
SQL> select temporary_tablespace,default_tablespace from dba_users
2 where username='ygbxuser_1215115130_sql';
TEMPORARY_TABLESPACE DEFAULT_TABLESPACE
------------------------------ ------------------------------
TEMP USERS
(6) 修改用户。
① 利用企业管理器,修改“ygbxuser+学号”用户,验证方式为外部.
SQL> alter user "ygbxuser_1215115130" identified externally;
用户已更改。
② 利用SQL*Plus或iSQL*Plus,修改“ygbxuser+学号_sql”用户,将该用户解锁,并将密码改为“sql+学号+user”。
SQL> alter user "ygbxuser_1215115130_sql" account unlock;
用户已更改。
SQL> alter user "ygbxuser_1215115214_sql" identified by "sql+1215115130_user";
用户已更改。
(7) 权限管理。
① 利用企业管理器,授予“ygbxuser+学号”用户“CREATE ANY TABLE”、“CREATE ANY INDEX”、“ALTER ANY TABLE”、“ALTER ANY INDEX”、“DROP ANY TABLE”和“DROP ANY INDEX”系统权限。
SQL> grant create any table,create any index,alter any table,alter any index,
2 drop any table,drop any index to "ygbxuser_1215115130"
3 ;
授权成功。
② 利用SQL*Plus或iSQL*Plus,授予“ygbxuser+学号_sql”用户“SYSOPER”系统权限。
SQL> grant sysoper to "ygbxuser_1215115130_sql";
授权成功。
③ 利用企业管理器,将“ygbxuser+学号”用户增加到“SYSTEM”方案中对“help”表的查看、修改、删除等对象权限。
SQL> grant select,update,delete on system.help to "ygbxuser_1215115130";
授权成功。
④ 利用SQL*Plus或iSQL*Plus,收回“ygbxuser+学号_sql”用户在“SYSTEM”方案中对“help”表的查看、修改、删除等对象权限。
SQL> revoke select,update,delete on system.help from "ygbxuser_1215115130";
撤销成功。
⑤ 利用SQL*Plus或iSQL*Plus,收回“ygbxuser+学号_sql”用户的“SYSOPER”系统权限。
SQL> revoke sysoper from "ygbxuser_1215115130_sql"
2 ;
撤销成功。
(8) 创建角色。
① 利用企业管理器,创建“ygbxrole+学号”角色,赋予该角色能对表、索引、存储过程、序列、同义词进行基本操作的权限。
② 利用SQL*Plus或iSQL*Plus,创建“ygbxrole+学号_sql”角色,该角色具有 “SYSDBA”系统权限,并将该角色赋予“ygbxuser+学号_sql”用户。
SQL> create role "ygbxrole+1215115130_sql";
角色已创建。
SQL> grant dba to "ygbxrole+1215115130_sql";
授权成功。
SQL> grant "ygbxrole+1215115130_sql" to "ygbxuser_1215115130_sql";
授权成功。
(9) 查看角色。
① 利用企业管理器,查看“ygbxrole+学号”角色所具有的所有权限。
② 利用SQL*Plus或iSQL*Plus,查看“ygbxrole+学号_sql”角色所具有的所有权限。
(10) 修改角色。
① 利用企业管理器,修改“ygbxrole+学号”角色,增加对角色的基本操作,并收回存储过程和序列的操作权限。
② 利用SQL*Plus或iSQL*Plus,修改“ygbxrole+学号_sql”角色,收回“SYSDBA”系统,而授予“SELECT ANY TABLE”系统权限。
SQL> revoke dba from "ygbxrole+1215115130_sql";
撤销成功。
SQL> grant select any table to "ygbxuser_1215115130_sql"
2 ;
授权成功。
(11) 删除角色。
① 利用企业管理器,删除“ygbxrole+学号”角色。
② 利用SQL*Plus或iSQL*Plus,删除“ygbxrole+学号_sql”角色。
SQL> drop role "ygbxrole+1215115130_sql";
角色已删除。
(12) 删除概要文件。
① 利用企业管理器,删除“ygbx+学号_pro”概要文件,查看“ygbxuser+学号”用户的概要文件。
删除用户后
② 利用SQL*Plus或iSQL*Plus,删除“ygbx+学号_pro_sql”概要文件,查看“ygbxuser+学号_sql”用户的概要文件。
删除用户后
(13) 删除用户。
① 利用企业管理器,删除“ygbxuser+学号”用户。
② 利用SQL*Plus或iSQL*Plus,删除“ygbxuser+学号_sql”用户。
SQL> drop user "ygbxuser_1215115130_sql";
用户已删除。
总结:
1.只有DBA才应当拥有ALTER DATABASE 系统权限。应用程序开发者一般需要拥有CREATE TABLE、CREATE VIEW和CREATE INDEX等系统权限。普通用户一般只具有CREATE SESSION系统权限。只有授权时带有WITH ADMIN OPTION子句时,用户才可以将获得的系统权限再授予其他用户,即系统权限的传递性。
2.用户是DB的使用者和管理者,用户管理是Oracle DB安全管理的核心和基础。
3.表空间配额限制用户在永久表空间中可以使用的存储空间的大小,默认情况下,新建用户在任何表空间中都没有任何配额。
4.SYS:是数据库中具有最高权限的数据库管理员,可以启动、修改和关闭数据库,拥有数据字典;SYSTEM:是一个辅助的数据库管理员,不能启动和关闭数据库,但可以进行其他一些管理工作,如创建用户、删除用户等。SCOTT:是一个用于测试网络连接的用户,其口令为TIGER。PUBLIC:实质上是一个用户组,数据库中任何一个用户都属于该组成员。要为数据库中每个用户都授予某个权限,只需把权限授予PUBLIC就可以了。
5.如果没有显式地指明该对象在哪个表空间中存储,系统会自动将该数据库对象存储在当前用户的默认表空间中。如果没有为用户指定默认表空间,则系统将数据库的默认表空间作为用户的默认表空间。
6.当用户进行排序、汇总和执行连接、分组等操作时,系统首先使用内存中的排序区SORT_AREA_SIZE,如果该区域内存不够,则自动使用用户的临时表空间。