熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle的口令管理

2013-11-13 16:09:22  來源: Oracle 

  編者按: 驗證口令獲得訪問授權這是目前最常用的訪問控制手段Oracle數據庫也采用這樣的安全策略在這一策略中口令的管理是關鍵然而要做好這項工作既保證數據的安全也保證用戶使用方便卻並非易事
  
  在Oracle數據庫中若要訪問數據必須先具有該數據庫的一個賬戶這個訪問可以是直接訪問(通過一個數據庫的用戶連接)或間接訪問(通過在數據庫鏈接中預設權限的訪問)每個賬戶必須有一個與其相關的口令一個數據庫賬戶可以連接到一個操作系統賬戶上
  
  口令是在創建用戶賬戶時為每一用戶設置的並可在該賬戶創建後對它們進行變更用戶變更賬戶口令的能力受他訪問工具權限的限制數據庫以加密的形式將口令存儲在一個數據字典表中如果賬戶直接與操作系統賬戶相關就可以旁路口令檢查在Oracle i中口令可以無效數據庫管理員可以建立能重復使用口令的條件(通過一個數據庫口令歷史設置值)也可以使用環境文件為口令制定標准如最小長度或如果連續多次與賬戶連接不成功就可以自動鎖定賬戶
  
  環境文件
  可以使用環境文件來限制用戶能使用的系統和數據庫資源並管理口令限制如果數據庫中沒有創建環境文件將使用缺省環境文件(Default)缺省環境文件對於所有用戶資源沒有限制列出了可以通過環境文件限制的資源
  
  
  
  
  (注: PASSWORD_REUSE_MAX和PASSWORD_REUSE_TIME互不相容如果其中一個資源設置成一個值另一個必須設置成Unlimited)
  
  如表所示許多資源都可以被限制在用戶超過資源限制前不會發生任何動作一旦到達限值 SQL語句就被停止
  
  環境文件是通過create profile命令創建的可以用alter profile命令修改下例所示的alter profile命令用於修改現有的環境文件在這個例子中數據庫的缺省環境文件被修改成允許最大空閒時間為小時
  
  alter profile DEFAULT limit idle_time ;
  
  在Oracle i中可以使用環境文件來管理口令的終止重新使用和復雜性例如可以限制一個口令的壽命鎖定口令過舊的賬戶也可以強制一個口令至少有一定程度的復雜性並鎖定一個多次注冊失敗的賬戶
  
  口令的鎖定與過期
  FAILED_LOGIN_ATTEMPTS用於設定賬戶允許的嘗試次數可以防止惡意人員無限制地嘗試賬戶口令來破解口令例如如果設置用戶環境文件的FAILED_LOGIN_ATTEMPTS資源為該賬戶允許連續注冊失敗次失敗就會引起賬戶被鎖定
  
  在下面的例子中創建一個供用戶TestUser使用的TEST_PROFILE環境文件
  
  create profile TEST_PROFILE limit
  
  FAILED_LOGIN_ATTEMPTS ;
  
  create user TESTUSER identified by abcd
  
  profile TEST_PROFILE;
  
  grant CREATE SESSION to TESTUSER;
  
  如果連續次與TestUser賬戶的連接失敗該賬戶將自動被Oracle鎖定此後當輸入TestUser賬戶的正確口令時會收到一條錯誤信息
  
  ERROR:ORA: the account is locked
  
  要對賬戶解鎖可在數據庫管理員賬戶中使用alter user命令的account unlock子句如下所示
  
  alter user TESTUSER account unlock;
  
  賬戶解鎖後TestUser賬戶再一次被允許連接可以通過alter user命令的account lock子句來手動鎖定一個賬戶
  
  alter user TESTUSER account lock;
  
  若一個賬戶由於多次連接失敗而被鎖定當超過其環境文件的PASSWORD_LOCK_TIME值時將自動解鎖例如如果PASSWORD_LOCK_TIME設為前面例子中的TestUser賬戶就被鎖定過後賬戶即被自動解鎖
  
  可以通過環境文件中的PASSWORD_LIFE_TIME資源建立一個口令的最大期限例如可以強制TEST_PROFILE環境文件的用戶每天改變一次口令
  
  alter profile TEST_PROFILE limit
  
  PASSWORD_LIFE_TIME ;
  
  在這個例子中alter profile命令用於修改TEST_PROFILE環境文件PASSWORD_LIFE_TIME值設為因此使用這個環境文件的每個賬戶在天後口令就會過期如果口令過期就必須在下次注冊時修改它除非環境文件對過期的口令有一特定的寬限期寬限期參數叫做PASSWORD_GRACE_TIME如果在寬限期內沒有修改口令賬戶就會過期
  
  (注: 如果使用PASSWORD_LIFE_TIME參數就必須為用戶提供一種便於其改變口令的方法)
  
  過期賬戶與鎖定賬戶不同鎖定賬戶會隨著時間的推移自動解鎖而過期賬戶需要通過數據庫管理員人工干預才能重新激活
  
  (注如果使用口令過期特性就要確保擁有應用程序的賬戶具有不同的環境文件設置值否則它們會被鎖定使得應用程序不能使用
  
  如前面例子所述若要重新恢復一個過期賬戶需使用alter user命令在這個例子中用戶TestUser首先由數據庫管理員手工使其口令過期
  
  alter user TESTUSER password expire;
  
  接著TestUser試圖連接其賬戶當他輸入口令時立即被提示輸入賬戶的新口令
  
  也可以使用create user命令的password expire子句強制用戶在第一次訪問時修改口令不過create user命令不允許對用戶設置的新口令設置限期日期要設置的話必須使用前面例子中的PASSW??????餀???? ??ORD_LIFE_TIME環境文件參數
  
  若要查看任一賬戶的口令限期可查詢DBA_USERS數據字典視圖的Expire_Date列若用戶自己想查看可查詢USER_USERS數據字典視圖的Expiry_Date列(通過SQL*Plus或一個基於客戶機的查詢工具)
  
  防止口令重新使用
  若要防止一個口令被重新使用可以使用兩個環境文件參數的其中一個: PASSWORD_REUSE_MAX或PASSWORD_REUSE_TIME這兩個參數互不相容如果給其中的一個設置了值另一個就必須設為Unlimited
  
  PASSWORD_REUSE_TIME參數規定一個口令可以重新使用前必須經過的天數例如如果設置PASSWORD_REUSE_TIME為則在天內不能使用同一個口令
  
  PASSWORD_REUSE_MAX參數指定一個口令可以重新使用前必須對其改變的次數如果試圖在這個限制到達前重新使用該口令Oracle會拒絕口令的修改
  
  例如可以為本章前面創建的TEST_PROFILE環境文件設置一個PASSWORD_REUSE_MAX參數
  
  alter profile TEST_PROFILE limit
  
  PASSWORD_REUSE_MAX
  
  PASSWORD_REUSE_TIME UNLIMITED;
  
  如果用戶TestUser現在試圖重新使用一個最近的口令修改口令就會失敗例如如下修改口令
  
  alter user TESTUSER identified by eye;
  
  然後再次改變它
  
  alter user TESTUSER identified by eye;
  
  在下次修改口令時試圖重新使用最近的口令就會失敗他不能重新使用任何他最近用過口令必須提供一個新口令
  
  口令歷史被存儲在SYS模式下一個叫USER_HISTORY$的表中在這個表中Oracle存儲了用戶資源識別符加密的口令值和創建該口令的日期/時間標記當PASSWORD_REUSE_TIME值已過期或口令修改次數超過PASSWORD_REUSE_MAX值時這個老的口令記錄就從SYSUSER_HISTORY$表中刪除如果一個新的密碼與現有的密碼一樣這個新口令就被拒絕
  
  由於老口令存儲在SYS擁有的一個表中所以數據存儲在System表空間中因此如果要為頻繁修改口令的大量用戶保留非常大的口令歷史口令歷史表SYSHISTORY$所需的空間就會影響System表空間的空間需求
  
  設置口令復雜度
  可以強制用戶的口令符合復雜度標准例如可以要求口令的最小長度限制不能是一些簡單的詞至少包括一個數字或標點符號等create profilealter profile命令的PASSWORD_VERIFY_FUNCTION參數指定用於評估口令的函數名如果用戶提出的口令不符合要求就不會被接受例如可以拒絕abcdeeye作為口令因為它們未包含任何數字值為簡化實施口令復雜度的過程Oracle提供了一個函數VERIFY_FUNCTION在缺省情況下不創建這個函數只有在運行utlpwdmgsql腳本文件(該文件位於Oracle軟件主目錄下的/rdbms/admin子目錄中)時才創建VERIFY_FUNCTION函數(注意這個函數應當在SYS模式下創建)
  
  函數中的前三個條件子句檢查口令是否與用戶名相同是否少於個字符是否是一組特定的詞之一可以任意修改這些檢查或增加你的要求例如安全原則可能要求口令最少有六個字符運行前要簡單地更新部分utlpwdmgsql文件
  
  函數的下一個主要部分是對口令字符串內容的三段檢查要通過這些檢查口令中至少要包含一個字符一個數字和一個標點符號同前面的檢查一樣它們是可以編輯的例如可以不要求用戶在其口令中使用標點符號只要簡單地繞過那部分口令檢查就可以
  
  函數的下一部分是將新口令與老口令逐字符進行比較如果它們之間的不同之處少於三處新口令將不予接受
  
  這個腳本文件中最後一條命令不屬於該函數它是一條改變缺省環境文件的alter profile命令如果改變了缺省環境文件那麼數據庫中所有使用缺省環境文件的用戶都會受到影響
  
  要注意
From:http://tw.wingwit.com/Article/program/Oracle/201311/17911.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.