實驗目的
掌握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,如果該區域內存不夠,則自動使用用戶的臨時表空間。