目的 創建和管理資料庫用戶帳戶 -驗證用戶 -分配預設存儲區(表空間) 授予和撤銷許可權 創建和管理角色 創建和管理概要文件 -實施標準口令安全功能 -控制用戶的資源使用量 相關術語 資料庫用戶帳號:是一種組織資料庫對象的所有權和訪問許可權的方法 口令:是Oracle DB使用的一種驗證方法 角色:是一 ...
目的 創建和管理資料庫用戶帳戶 -驗證用戶 -分配預設存儲區(表空間) 授予和撤銷許可權 創建和管理角色 創建和管理概要文件 -實施標準口令安全功能 -控制用戶的資源使用量 相關術語 資料庫用戶帳號:是一種組織資料庫對象的所有權和訪問許可權的方法 口令:是Oracle DB使用的一種驗證方法 角色:是一個有相關許可權組成的指定組,可授予給用戶或其他角色 概要文件:是用於限制資料庫使用和實例資源的一組指定資源限制條件,並管理賬戶狀態和口令管理規則 限額:是允許給定表空間具有的空間。通過這種方法,可以控制用戶的資料使用量。 資料庫用戶帳戶 每個資料庫用戶帳戶都包括以下項: -唯一的用戶名 用戶名不能超過30個位元組,不能包含特殊字元,而且必須以字母開頭。 -驗證方法 最常見的驗證方法是口令,但是Oracle Database 11g支持口令/全局和外部驗證方法(例如生物統計學驗證/證書驗證和標記驗證)。 -預設表空間 如果用戶未指定其它表空間,則可在這個位置創建對象。請註意,具有預設表空間並且不意味著用戶在該表空間具有創建對象的許可權,也不意味著用戶在該表空間中具有用於創建對象的空間限額。這兩項需要另外授權。 -臨時表空間 這是實例代表用戶創建臨時對象(如排序和臨時表)的位置。臨時表空間沒有限額。 -用戶概要文件 分配給用戶的一組資源與口令限制。 -初始使用者組 由資源管理器使用 -帳戶狀態 打開(Open)/鎖定(Lock)/過期(Expired) 方案: 是資料庫用戶擁有的資料庫對象的集合 與用戶帳戶具有相同的名稱 方案對象包括表/視圖/序列/存儲過程/同義詞/索引/集群和資料庫鏈接等結構. 註:資料庫用戶不一定是人員。常見的作法是創建一個擁有特定應用程式的資料庫對象的用戶。資料庫用戶可以是設備/應用程式或只是一種出於安全目的而對資料庫對象進行分組的方法。資料庫用戶不需要具有個人身份信息。 預定義管理賬戶 SYS賬戶: -被授予DBA角色以及幾個其它角色 -具有帶ADMIN OPTION的所有許可權 -執行啟動/關閉和某些維護命令時需要使用該賬戶 -擁有數據字典和自動工作量資料檔案庫(AWR) -連接資料庫必須使用AS SYSDBA子句。連接ASM實例,必須使用AS SYSASM子句 SYSTEM賬戶被授予DBA/MGMT_USER和AQ_ADMINISTRATOR_ROLE角色 DBSNMP賬戶被授予OEM_MONITOR角色 SYSMAN賬戶被授予MGMT_USER/RESOURCE和SELECT_CATALOG_ROLE角色 常規操作不使用這兩個賬戶 創建用戶 驗證用戶,創建用戶時,必須確定要使用的驗證方法,以後可修改此方法。 -口令驗證(Oracle DB驗證) 創建的每一個用戶都有一個關聯口令,用戶嘗試建立連接時,必須提供這個口令。 Oracle Database 11g中創建的所有口令都區分大小寫。 口令可以包含多個位元組字元,但長度被限製為30位元組。 升級到Oracle Database 11g的資料庫中創建的每個口令仍然不區分大小寫,直到更改該口令。 通過高級加密標準(AES)演算法以自動且透明的方式對口令進行加密,然後再通過網路發送這些口令。 -外部驗證 使用資料庫外部(操作系統/Kerberos或Radius)的方法進行驗證。 Kerberos或Radius需要使用高級安全選件。用戶可以在不指定用戶名或口令的情況下連接到Oracle DB。 系統可以通過使用生物統計學/x509證書和標記設備來識別用戶。 資料庫依賴於基礎操作系統/網路驗證服務或外部驗證服務來限制對資料庫賬戶的訪問。 操作系統驗證 OS_AUTHENT_PREFIX初始化參數(預設值OPS$),併在Oracle用戶名中使用該首碼。 -全局驗證 使用Oracle高級安全選件時,可使用Oracle Internet Directory通過全局驗證來識別用戶。 管理員驗證 操作系統安全性 DBA必須具有創建或刪除文件的操作系統許可權 普通資料庫用戶不應具有創建或刪除資料庫文件的操作系統許可權 管理員安全性 對於SYSDBA/SYSOPER和SYSASM連接 -對於口令文件和嚴格驗證方法,按名稱審計DBA用戶 -對於操作系統驗證,審計操作系統賬戶名 -對授權用戶,操作系統驗證優先於口令文件驗證 -口令文件使用區分大小寫的口令 許可權 用戶許可權有兩類 系統許可權:允許用戶在資料庫中執行特定的操作。有170多種不同的系統許可權。 對象許可權:允許用戶訪問和操作特定的對象(如表/視圖/序列/過程/函數或程式包) 沒有特定授權的情況下,用戶只能訪問自己用戶的對象。 對象許可權可以由對象的所有者或管理員授予,也可以由被顯示授予了許可權,可以為其他人員分配對某個對象的許可權的人員授予。 系統許可權:出於安全的考慮,某些系統許可權通常只能授予給管理員 語法:GRANT <system_privilege> TO <grant clause> [WITH ADMIN OPTION] RESTRICTED SESSION:資料庫在受限模式下也能訪問。 SYSDAB和SYSOPER:這兩個許可權可以在資料庫中執行關閉/啟動/恢復及其它管理任務。SYSOPER可執行基本操作任務,但不能查詢用戶數據它包含系統許可權 -STARTUP和SHUTDOWN -CREATE SPFILE -ALTER DATABASE OPEN/MOUNT/BACKUP -ALTER DATABASE ARCHIVELOG -ALTER DATABASE RECOVER (僅限完全恢復。任何形式的不完全恢復,如UNTIL TIME|CHANG|CANCEL|CONTROLFILE,都需要SYSDAB身份連接)。 -RESTRICTED SESSION SYSASM:使用此許可權可以啟動/關閉和管理ASM實例 DROP ANY object:用戶使用DROP ANY許可權可以刪除其他用戶擁有的對象。 CREATE /MANAGE/DROP和ALTER TABLESPACE:這些許可權運行進行表空間管理/包括創建/刪除和更改表空間的屬性。 CREATE LIBRARY:Oracle DB允許開發人員在PL\SQL內創建和調用外部代碼(如C庫)。此庫必須由資料庫中的LIBRARY對象指定。 CREATE ANY DIRECTORY:作為一種安全措施,代碼所在的操作系統目錄必須鏈接到一個虛擬Oracle目錄對象。使用CREATE ANY DIRECTORY許可權時,有可能會調用不安全的代碼對象。用戶使用CREATE ANY DIRECTORY許可權可以在Oracle軟體所有者能夠訪問的任何目錄中創建目錄對象(具有讀寫訪問許可權)。 GRANT ANY OBJECT PRIVILEGE:使用此許可權可以對其他人擁有的對象授予對象許可權。 ALTER DATABASE和ALTER SYSTEM:這些許可權的功能很強,可用於修改資料庫和Oracle實例,例如,重命令數據文件或刷新緩衝區高速緩存。 對象許可權:將對象許可權授予給用戶的對象的類型 語法:GRANT <object_privilege> ON <object> TO <grantee clause> [WITH GRANT OPTION] 撤銷帶ADMIN OPTION 的系統許可權,如果有許可權者將此許可權授予其他用戶,REVOKE則不會級聯撤銷許可權。 REVOKE <system_privilege> FROM <grantee clause>; 撤銷帶GRANT OPTION的對象許可權 撤銷與數據操縱語言(DML)操作相關的系統許可權時可能會產生級聯影響。 REVOKE <object_privilege> FROM <grantee clause>;會級聯移除對象許可權 角色 角色的優點 -簡化許可權管理,使用角色可簡化許可權管理,可以將一組許可權授予給某個角色,然後將該角色授予給每個用戶,而不是將同一組許可權授予給多個用戶。 -進行動態許可權管理,如果修改了與某個角色關聯的許可權,則所有被授予該角色的用戶都會立即自動獲得修改後的許可權。 -有選擇地提供許可權,通過啟用或禁用角色可以暫時打開或關閉許可權。這樣便可以在指定情形下控制用戶的許可權。 角色特性 角色就像用戶,可以授予角色許可權或撤銷角色許可權。 角色就像系統許可權一樣,可以將其授予給用戶或其它角色,也可以從用戶或其它角色撤銷。 角色可以由系統許可權和對象許可權組成。 可以對授予了某一角色的每個用戶啟用或禁用該角色。 可能需要口令才能啟用角色。 角色不歸任何用戶擁有,也不屬於任何方案。 創建角色 CREATE ROLE <role_name>; 保護角色 -角色可以是非預設的,併在需要時啟用。 SET ROLE vacationdba; -可以通過驗證保護角色。 None/Password/External/Global -還可以通過編輯保護角色 CREATE ROLE secure_application_role IDENTIFIED USING <security_procedure_name>; 概要文件和用戶 概要文件時用於限制資料庫使用和實例資源的一組指定資源限制條件。通過概要文件還可管理賬戶狀態並對用戶的口令進行限制(長度,到期時間等)。每個用戶都分配有一個概要文件,而且該用戶在指定時間只屬於一個概要文件。如果在更改用戶概要文件時用戶已登錄,則所做更改在用戶下一次登錄時才生效。 DEFAULT概要文件是其它所有概要文件的基礎。 概要文件控制的系統資源: -CPU:可按會話或調用限制CPU資源。 -網路/記憶體:每個資料庫會話都會占用系統記憶體資源和網路資源(如果會話不是來自伺服器的本地用戶) -連接時間,指示用戶在自動註銷前可以保持連接的分鐘數 -空閑時間,指示用戶會話在自動註銷前可以保持空閑的分鐘。只會計算伺服器進程的空閑時間。 -並行會話,用戶可以創建多少並行會話。 -專用SGA,限制在系統全局區SGA中執行排序/合併點陣圖等操作所占用的空間量。此限制僅在會話使用了共用伺服器才有效。 -磁碟I/O,限制用戶在每個會話級或每個調用級可讀取的數據量。“讀取/會話”和“讀取/調用”可限制記憶體和磁碟的總讀取次數。這樣做可確保執行大量I/O操作的語句不會過度使用記憶體和磁碟。 實施口令安全功能 賬戶鎖定 -FAILED_LOGIN_ATTEMPTS: 指定在鎖定賬戶前嘗試登錄的失敗次數 -PASSWORD_LOCK_TIME:指定嘗試登錄失敗達到了指定的次數後鎖定賬戶的天數 口令失效和到期 -PASSWORD_LIFE_TIME:確定口令生存期(天),之後該口令就會到期 -PASSWORD_GRACE_TIME :指定首次成功登錄後更改口令的寬限期(天),之後該口令就會到期 註:使用SYS/SYSMAN和DBSNMP賬戶口令到期和鎖定這些賬戶,會導致Oracle Enterprise Manager無法正常運行。 口令歷史記錄 -PASSWORD_REUSE_TIME:指定用戶不能在指定天數內重覆使用口令 -PASSWORD_REUSE_MAX:指定可以重覆使用當前口令之前口令更改需達到的次數。 口令複雜性驗證 -PASSWORD_VERIFY_FUNCTION:參數指定一個PL\SQL函數,以便在分配口令之前執行口令複雜性檢查。口令驗證函數必須有SYS用戶擁有,而且必須返回布爾值(TRUE或FALASE)。utlpwdmg.sql腳本提供了模型口令驗證函數。 口令驗證函數:VERIFY_FUNCTION_11G -至少包含八個字元 -與用戶名,帶有一個數字的用戶名以及逆序的用戶名不同 -與資料庫以及帶有一個數字的資料庫名不同 -至少含有一個字母和一個數字的字元串 -與之前的口令至少有三個字母不相同 使用此函數可以創建自己的定製口令驗證
create profile profile_test_0312 limit password_life_time 180 failed_login_attempts 7 password_lock_time 1 password_grace_time 7 password_reuse_time unlimited password_reuse_max unlimited password_verify_function verify_function_11g ;
將限額分配給用戶 限額,是允許給定表空間具有的空間。預設情況下,對於任何表空間用戶都沒有限額。 -無限制,unlimited 允許用戶最大限度的使用表空間中的可用空間。 -值:用戶可以使用的空間 -UNLIMITED TABLESPACE系統許可權:覆蓋所有單獨的表空間限額,對於所有表空間(包括SYSTEM和SYSAUX),為用戶提供無限制的限額。RESOURCE角色包括此系統許可權。 當用戶創建或擴展段時,Oracle實例會檢查限額 對於分配給用戶方案的活動,只有那些使用表空間中的空間的活動才會計入限額。(如視圖和臨時表空間)不會影響限額。 使用purge子句刪除了用戶擁有的對象或回收站中自動清除了用戶所擁有的對象時,會補充限額。 應用最少許可權原則 -保護數據字典 07_DICTIONARY_ACCESSIBILITY=FALSE -撤銷不必要的PUBLIC 許可權 -使用訪問控制列表(ACL)來控制網路訪問 UTL_SMTP,允許將資料庫使用簡單傳輸協議SMTP郵件伺服器來發送任意電子郵件 UTL_TCP,允許資料庫伺服器與任何正在接收或等待的網路服務建立外出網路連接。 UTL_HTTP,允許資料庫伺服器通過HTTP請求並檢索數據。 UTL_FILE,允許對主機操作系統上的文件進行訪問。 -限制用戶可訪問的目錄 -限制具有管理許可權的用戶 -限制遠程資料庫驗證 REMOTE_OS_AUTHENT=FALSE 遠程驗證過程 資料庫用戶通過外部方式來進行驗證 遠程系統驗證用戶 用戶登錄資料庫,不必接受另外的驗證 保護授權賬戶 使用口令區分大小寫的口令文件 對管理員角色啟用嚴格的驗證方法 orapwd file=orapw+<sid> entries=5 ignorecase=N 小結 創建和管理資料庫用戶帳戶 驗證用戶 分配預設表空間 授予和撤銷許可權 創建和管理角色 創建和管理概要文件 實施標準口令安全功能 控制用戶的資源使用量